使用 Elastic Beanstalk 與 Amazon VPC - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Elastic Beanstalk 與 Amazon VPC

本主題說明將VPC端點與 Elastic Beanstalk 搭配使用的好處,以及您可以實作的不同組態類型。

您可以使用 Amazon Virtual Private Cloud(AmazonVPC)為您的 Elastic Beanstalk 應用程序和相關應用程序創建安全網絡 AWS 的費用。建立環境時,您可以選擇要用VPC於應用程式執行個體和負載平衡器的子網路和安全群組。只要符合下列需求,您就可以使用任何您喜歡的VPC組態。

VPC要求
  • 網際網路存取 ‒ 執行個體可透過以下其中一種方法存取網際網路:

    • 公有子網路 ‒ 執行個體具備公有 IP 地址,並使用網際網路閘道存取網際網路。

    • 私有子網路 — 執行個體使用NAT裝置存取網際網路。

    注意

    如果您在中配置VPC端點以連接VPC到elasticbeanstalkelasticbeanstalk-health服務,則 Internet 訪問是可選的,並且僅在您的應用程序特別需要時才需要 Internet 訪問。如果沒有VPC端點,您VPC必須可以訪問互聯網。

    Elastic Beanstalk 為您設置的默認VPC提供互聯網訪問。

    Elastic Beanstalk 不支援使用 HTTPS_PROXY 等代理設定來設定 Web 代理。

  • NTP— Elastic Beanstalk 環境中的執行個體使用網路時間通訊協定 (NTP) 來同步系統時鐘。如果執行個體無法在UDP連接埠 123 上進行通訊,則時鐘可能不同步,導致 Elastic Beanstalk 健全狀況報告發生問題。請確定您的VPC安全群組和網路ACLs允許連接埠 123 上的輸入和輸出UDP流量,以避免這些問題。

elastic-beanstalk-samples存儲庫提供 AWS CloudFormation 您可以用來建立與 Elastic Beanstalk 環境搭配使用的範本。VPC

若要建立資源 AWS CloudFormation template
  1. 複製範例存放庫或使用中的連結下載範本README

  2. 開啟 AWS CloudFormation 控制台

  3. 選擇建立堆疊

  4. 選擇 Upload a template to Amazon S3 (上傳範本到 Amazon S3)

  5. 選擇 Upload file (上傳檔案) 並從您的本機機器上傳範本檔案。

  6. 選擇 Next (下一步) 並依照說明操作來使用範本中的資源建立堆疊。

當堆疊建立完成時,請勾選 [輸出] 索引標籤以尋找 VPC ID 和子網路IDs。使用這些設定VPC在新環境精靈網路組態類別中設定。

公眾 VPC

AWS CloudFormation 模板 -虛擬電腦公共.

設定 (負載平衡)
  • 負載平衡器可見度 ‒ 公有

  • 負載平衡器子網路 ‒ 兩個公有子網路

  • 執行個體公有 IP ‒ 已啟用

  • 執行個體子網路 ‒ 兩個公有子網路

  • 執行個體安全群組 ‒ 新增預設安全群組

設定 (單一執行個體)
  • 執行個體子網路 ‒ 其中一個公有子網路

  • 執行個體安全群組 ‒ 新增預設安全群組

基本僅公用VPC配置包括一或多個公用子網路、一個網際網路閘道,以及允許. VPC 當您在中建立環境時VPC,Elastic Beanstalk 會建立其他資源,這些資源會根據環境類型而有所不同。

VPC資源
  • 單一執行個體 &endash; Elastic Beanstalk 會針對應用程式執行個體建立安全群組,允許來自連接埠 80 的網際網路流量,並為此執行個體指派彈性 IP,為其指定一個公有 IP 地址。環境的網域名稱解析成執行個體的公有 IP 地址。

  • 負載平衡 &endash; Elastic Beanstalk 為負載平衡器建立安全群組,允許來自連接埠 80 的網際網路流量,並會為應用程式執行個體建立安全群組,允許來自負載平衡器安全群組的流量。環境的網域名稱解析成負載平衡器的網域名稱。

這與 Elastic Beanstalk 在您使用預設值時管理網路的方式類似。VPC公有子網路中的安全取決於負載平衡器以及 Elastic Beanstalk 建立的執行個體安全群組。它是最便宜的配置,因為它不需要 NAT Gateway。

公共/私人 VPC

AWS CloudFormation 模板 -虛擬私人公共.

設定 (負載平衡)
  • 負載平衡器可見度 ‒ 公有

  • 負載平衡器子網路 ‒ 兩個公有子網路

  • 執行個體公有 IP ‒ 已停用

  • 執行個體子網路 ‒ 兩個私有子網路

  • 執行個體安全群組 ‒ 新增預設安全群組

為了獲得額外的安全性,請將私有子網路新增VPC至您的,以建立公用 -私有配置。此配置需要公用子網路中的負載平衡器和NAT閘道,而且可讓您在私有子網路中執行應用程式執行個體、資料庫和任何其他資源。私有子網路中的執行個體只能透過負載平衡器和NAT閘道與網際網路通訊。

私人 VPC

AWS CloudFormation 模板 -虛擬私人 .yaml

設定 (負載平衡)
  • 負載平衡器可見度 ‒ 私有

  • 負載平衡器子網路 ‒ 兩個私有子網路

  • 執行個體公有 IP ‒ 已停用

  • 執行個體子網路 ‒ 兩個私有子網路

  • 執行個體安全群組 ‒ 新增預設安全群組

對於不應被網際網路存取的內部應用程式,您可以在私有子網路執行所有項目,並設定負載平衡器為朝向內部 (變更 Load balancer visibility (負載平衡器可見度)Internal (內部))。該模板創建一個沒VPC有公共子網,也沒有互聯網網關。針對應該只能從相同VPC或附加的存取的應用程式使用此配置VPN。

在私人中運行 Elastic Beanstalk 環境 VPC

當您以私有方式建立 Elastic Beanstalk 環境時VPC,環境無法存取網際網路。您的應用程式可能需要存取 Elastic Beanstalk 服務或其他服務。您的環境可能會使用增強型運作狀態報告,在此情況下,環境執行個體會將運作狀態資訊傳送至增強型運作狀態服務。環境實例上的 Elastic Beanstalk 代碼將流量發送到其他實例 AWS 服務,以及其他交通到非AWS 端點(例如,為您的應用程序下載依賴包)。以下是在此情況下,您可能需要採取的一些步驟,以確保您的環境正常運作。

  • 設定 Elastic Beanstalk 的VPC端點 — Elastic Beanstalk 及其增強型健康服務支援VPC端點,確保這些服務的流量保持在 Amazon 網路內,且不需要存取網際網路。如需詳細資訊,請參閱使用 Elastic Beanstalk 與端點 VPC

  • 設定其他服務的VPC端點 — Elastic Beanstalk 執行個體會將流量傳送至其他多個 AWS 代表您的服務:Amazon Simple Storage Service (Amazon S3),Amazon 簡單隊列服務(AmazonSQS), AWS CloudFormation和 Amazon CloudWatch 日誌。您也必須為這些服務設定VPC端點。如需有關VPC端點的詳細資訊,包括每項服務連結,請參閱 Amazon VPC 使用者指南中的VPC端點

    注意

    一些 AWS 服務 (包括 Elastic Beanstalk) 支援有限數量的VPC端點 AWS 區域。當您設計私有VPC解決方案時,請確認 Elastic Beanstalk 和此處提到的其他相依服務是否支VPC援 AWS 您選擇的區域。

  • 「提供私有 Docker 影像」‒ 在 Docker 環境中,環境執行個體上的程式碼可能會嘗試在建立環境期間,從網際網路提取已設定的 Docker 影像並失敗。若要避免此失敗,請在您的環境中建立自訂 Docker 映像,或使用存放在 Amazon 彈性容器登錄 (AmazonECR) 中的 Docker 映像,然後為 Amazon 服務設定VPC端點。ECR

  • 啟用DNS名稱 — 環境執行個體上的 Elastic Beanstalk 程式碼會將流量傳送給所有 AWS 使用其公共端點的服務。若要確保此流量通過,請在設定所有介面VPC端點時選擇 [啟用DNS名稱] 選項。這會在您的中添加一個DNS項目,VPC該條目將公共服務端點映射到接口VPC端點。

    重要

    如果您VPC不是私人且可以存取公用網際網路,而且如果任何VPC端點停用了「啟用DNS名稱」,則對應服務的流量會透過公用網際網路傳輸。這可能不是您想要的。使用私人檢測到此問題很容易VPC,因為它可以防止此流量通過並且您收到錯誤。但是,在公眾面對的情況下VPC,您沒有任何跡象。

  • 「包含應用程式相依性」‒ 如果您的應用程式具有相依性 (例如語言執行時間套件),則其可能會在環境建立期間嘗試從網際網路下載進行安裝並失敗。為了避免這種失敗,請在應用程式的原始碼套件中包含所有相依性套件。

  • 「使用目前的平台版本」‒ 請確定您的環境使用 2020 年 2 月 24 日以後發行的平台版本。具體來說,使用在這兩個更新之一或之後發行的平台版本:Linux Update 2020-02-28Windows Update 2020-02-24

    注意

    需要更新平台版本的原因是舊版本存在一個問題,這會導致使「啟用DNS名稱」選DNS項建立的項目無法在 Amazon 上正常運作SQS。