0

我正在學習微服務體系結構並將一些概念證明放在一起,但我碰壁了。用於進程間通信的AWS API網關

我已經提出了一種無服務器的用戶服務,它使用帶公共API網關的亞馬遜AWS託管,它允許您查詢用戶數據庫。這是很簡單的,只是看起來像:

api/[email protected] 

這個API具有與之相關的授權,因爲一些用戶都可以知道其他用戶,有些則不是。所以對於一些用戶來說,這會返回404(或者403),對於其他用戶,他們會得到200和結果。

現在我來編寫身份驗證服務,它需要一個電子郵件地址和密碼並返回一個令牌。我應該如何從用戶服務獲取用戶數據?我很樂意調用REST API,但它具有授權,因爲它是公開的。此外,公共API將不會返回我需要的(散列)密碼字段。

所以我的問題:

我應該有服務間通信的獨立,私有API返回的所有信息,或者我應該有我發送給它標識請求者的API一個神奇的授權密鑰一個內部服務,以顯示一切。

問題補充:

如果我使用的公共API用魔法授權碼,我應該只是調用獲取使用我的客戶端服務將使用或者我應該叫一些相同的公共API網址內部亞馬遜網址?

回答

1

我不確定這個問題有一個很好的答案。但這裏有一些想法:

  1. 您確定您需要單獨的身份驗證和用戶服務,並且無法將其作爲一個單元構建嗎?這樣會更有效率 - 一般人試圖避免從lambda函數中調用lambda函數,因爲它比較慢並且很難測試/調試。

  2. 如果您需要在lambdas之間進行通信,您可以直接調用一個,而不是使用您正在使用的語言的SDK瀏覽api網關。例如javascript:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property通過這種方式,您可以使用角色和策略來控制訪問。

  3. 不要重新發明輪子。你有沒有看過AWS Cognito? http://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html