5

我將在AWS上構建微服務的體系結構,我想請您澄清我的疑惑。AWS API網關+彈性Beanstalk和微服務

我現在的一般概念

我想用API網關,它公開microsevices'在彈性魔豆運行的API。我想將Elastic Beanstalk放在VPC中,而無需從Internet直接訪問其實例。

enter image description here

問題&疑惑:

  1. 彈性魔豆得上的應用程序創建的子域。 API網關應使用此子域,並使用集成類型:AWS服務,在操作配置中 - 我是對的嗎?
  2. 什麼代表一個單一的微服務? Elastic Beanstalk的應用程序是一種特定的可擴展微服務?
  3. 微服務應該如何相互溝通?我會去使用SQS(簡單隊列服務)。但在其他情況下,兩個微服務通過API網關而不是直接相互通信會更好 - 是嗎?
  4. 測試環境:我應該在測試環境(或登臺環境)中使用哪種結構?我考慮使用另一個Elastic Beanstalk和其他Amazon服務創建單獨的VPC。
  5. 測試環境和API網關:我應該如何設置API網關?如果請求具有特定的子域,它應該允許客戶訪問測試環境中的微服務,如:test.mydomain.com/hello_world/say_hello。我不確定如何在CI/CD中使用API​​網關以使其快速而簡單,而無需手動將某些配置從測試階段複製到生產階段。 (我不期待任何複雜的解決方案,只有一些關於我可以使用什麼組件,部件和概念的提示,更多細節我會自己找到)。
  6. 您有使用Codep Deploy和/或Jenkins將應用程序部署到Elastic Beanstalk的經驗嗎?我很感興趣:Jenkins,AWS Code Deploy或Jenkins + CodeDeploy。

謝謝先進!

+1

通常,當人們引用微服務時,他們正在討論AWS Lambda或Azure函數。在Lambda的情況下,可以從外部直接從API網關調用函數,然後執行SQS任務或直接啓動其他lambda函數。另外,除非您將VPC連接到某些本地基礎架構並讓Lambda功能訪問這些資產,否則我認爲不需要VPC。 – Jordan

回答

7

我會回答說不是基於觀點的要點:

  1. 彈性魔豆得子站點上創建應用程序。 API網關應使用此 子域,集成類型爲:AWS 服務,在操作配置中 - 我是對的嗎?如果你實際調用彈性魔豆服務

沒有,AWS服務集成將只適用。你會打電話給你自己的豆杆實例,所以你會使用HTTP集成。

  1. 什麼代表單個微服務? Elastic Beanstalk的應用程序是一種特定的可擴展微服務?

這是給你的,但在評論中提到,許多客戶選擇通過lambda函數,而不是豆莖應用程序做到這一點。使用Lambda的好處是您無需管理您的Beanstalk應用程序的擴展。

  • 測試環境:我應該在測試環境(或 分期的env)使用什麼結構?我想創建單獨的VPC與另一個 Elastic Beanstalk和其他亞馬遜服務。
  • 請注意,API網關目前無法聯繫VPC中的資源。任何beanstalk實例都需要公開訪問。

    1. 測試環境和API網關:我應該如何設置API網關?如果請求具有特定的子域,它應該允許客戶訪問測試環境中的微服務,如:test.mydomain.com/hello_world/say_hello。我不確定如何在CI/CD中使用API​​網關以使其快速而簡單,而無需手動將某些配置從測試階段複製到生產階段。 (我不期待任何複雜的解決方案,只有一些關於我可以使用什麼組件,部件和概念的提示,更多細節我會自己找到)。

    你應該看看stage variables。這將允許您使用存儲在這些變量中的dev/test/prod之間的差異使用基本配置。

    +0

    謝謝!我想使用Docker,但Lambda不直接支持它 - 我需要將它與ECS結合使用。多容器配置中的Beanstalk在ECS上運行,所以我認爲Beanstalk對我來說是更好的解決方案。 – nicq

    +0

    AWS仍然不直接支持API網關後面的vpc嗎?通過lambda只是增加了更多的複雜性,每個服務都需要關心auth。 – gabel

    +1

    @gabel它仍然不被支持,但它是最高要求的功能之一,我們正在努力在未來支持這些用例。 –