當我嘗試建立 AWS Elastic Beanstalk 環境時,收到 "failed to communicate" 錯誤訊息。
簡短說明
您必須設定您的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,以啟動前往 Elastic Beanstalk 和其他服務端點的傳出連線。
如果您嘗試在沒有傳出連線的情況下建立 Elastic Beanstalk 環境,則會收到下列錯誤訊息:
"The EC2 instances failed to communicate with AWS Elastic Beanstalk, either because of configuration problems with the VPC or a failed EC2 instance.Check your VPC configuration and try launching the environment again."
若要解決此錯誤,請確認您已將 EC2 執行個體設定為透過下列其中一個端點啟動傳出連線:
解決方法
適用於在公有子網路中設定的 EC2 執行個體
如果您的執行個體無法連線至網際網路,請檢查您是否已將網際網路閘道附加至 VPC。另請檢查您是否已將路由表設定為具有一條指向網際網路閘道的 0.0.0.0/0 路由。
請確保您已將公有子網路與具有此預設路由的正確路由表建立關聯。
您必須將執行個體設為具有傳出 HTTPS (443) 和 HTTP (80) 存取權限,以與 AWS 服務通訊並下載套件。請確保您的安全群組允許前往 0.0.0.0/0 的連接埠上的傳出流量。針對傳入流量,請允許您的負載平衡器在應用程式連接埠上連線至執行個體。
如果您使用的是自訂網路存取控制清單 (網路 ACL),請確保您允許連接埠 80 和 443 上的傳出流量,且傳入回傳流量可通過暫時連接埠 (1024-65535)。使用預設網路 ACL 是最佳實務,因為它允許所有流量。
適用於在私有子網路中設定的 EC2 執行個體
您必須將 NAT 閘道部署在已附加彈性 IP 位址的公有子網路中。請確保您將私有子網路的 0.0.0.0/0 路由表指向 NAT 閘道,並將公有子網路 (NAT 閘道所在位置) 的 0.0.0.0/0 路由指向網際網路閘道。如需更多資訊,請參閱 Troubleshoot NAT gateways (對 NAT 閘道進行疑難排解)。
如果路由遺失或不正確,您可能會遇到連線失敗。若要解決此問題,請確認您的私有子網路會將 0.0.0.0/0 流量路由至 NAT 閘道,且您會將 NAT 閘道所在的公有子網路路由將 0.0.0.0/0 流量路由至網際網路閘道。
您必須為私有執行個體設定連接埠 80 和 443 的傳出存取權限,以連線至 AWS 服務並下載套件。如果您使用的是 NAT 執行個體而非 NAT 閘道,請確保您已設定 NAT 執行個體的安全群組,以允許來自私有子網路的傳入流量以及前往網際網路的傳出流量。
如果沒有正確的 DNS 設定,那麼即使路由正確,執行個體也無法解析 AWS 服務端點。若要解決此問題,請啟用 DNS 解析和 DNS 主機名稱。
適用於透過 VPC 端點設定的 EC2 執行個體
請確保您已設定下列 VPC 端點,以正確啟動環境:
- Amazon Simple Queue Service (Amazon SQS)
- AWS CloudFormation
- Elastic Beanstalk (elasticbeanstalk.region.amazonaws.com)
- Elastic Beanstalk Health (elasticbeanstalk-health.region.amazonaws.com)
- Amazon Simple Storage Service (Amazon S3) 閘道端點
注意: 如果您的環境必須與其他 AWS 服務互動,請為這些服務建立 VPC 端點。
VPC 端點必須具有允許執行個體子網路 HTTPS (443) 流量的安全群組。請確保您為 VPC 端點建立安全群組,其傳入規則須允許來自您私有子網路 CIDR 區塊或執行個體安全群組的連接埠 443 流量。
請在介面端點上啟用私有 DNS,並確保您已為 VPC 啟用 DNS 解析和 DNS 主機名稱。
相關資訊
為什麼我無法使用 NAT 將私有子網路中的 EC2 執行個體連線到網際網路?