我想在完全私有的 AWS Elastic Beanstalk 環境中對網路問題進行疑難排解。
簡短描述
完全私有的環境具有以下設定,並且只允許從相同的 Amazon Virtual Private (Amazon VPC) 內存取您的 Web 應用程式。
- **負載平衡器可見性:**私有
- **負載平衡器子網路:**兩個私有子網路
- **執行個體公有 IP:**已停用
- **執行個體子網路:**兩個私有子網路
VPC 之間的所有通訊都會透過設定的 VPC 端點進行。此外,VPC 內的所有通訊都會透過路由表中的本機路由進行。以下是由於網路組態而可能會在環境中看到的常見錯誤:
- Amazon Elastic Compute Cloud (Amazon EC2) 執行個體無法與 Elastic Beanstalk 通訊。通訊失敗是由於 VPC 的組態問題或失敗的 EC2 執行個體。請檢查您的 VPC 組態,然後再次嘗試啟動環境。
- 執行個體在允許的命令逾時時間內沒有回應。
解決方案
建立完全私有的 Elastic Beanstalk 環境時,請確定已設定下列組態:
- 您必須擁有包含不同可用區域中至少兩個私有子網路的 VPC。
- VPC 必須已開啟 DNS 主機名稱和 DNS 解析。開啟之後,會在 VPC 中新增 DNS 項目,將公有服務端點映射至界面 VPC 端點。
- 您必須建立 VPC 端點,以便 VPC 以外的 AWS 服務和 VPC 內的執行個體可以透過這些端點進行通訊。
檢查 VPC 端點
標準 Elastic Beanstalk 環境必須具有下列 VPC 端點才能成功建立:
- com.amazonaws.your-region.elasticbeanstalk (Elastic Beanstalk 界面端點)
- com.amazonaws.your-region.elasticbeanstalk-health (Elastic Beanstalk 運作狀態界面端點)
- com.amazonaws.your-region.cloudformation (AWS CloudFormation 界面端點)
- com.amazonaws.your-region.logs (日誌界面端點)
- com.amazonaws.your-region.sqs (Amazon Simple Queue Service (Amazon SQS) 界面端點)
- com.amazonaws.your-region.s3 (Amazon Simple Storage Service (Amazon S3) 閘道端點)
在 64 位元 Amazon Linux 2 中執行的 Docker 平台上的執行環境必須具有下列額外的 VPC 端點:
- com.amazonaws.your-region.ecr.dkr
- com.amazonaws.your-region.ecr.api
在 64 位元 Amazon Linux 2 中執行的 Amazon Elastic Container Service (Amazon ECS) 平台上的執行環境必須具有以下額外的 VPC 端點:
- com.amazonaws.your-region.ecs
- com.amazonaws.your-region.ecr.api
- com.amazonaws.your-region.ecr.dkr
備註:為了確保您的 Docker 和多 Docker 環境正常工作,請提供私有 Docker 映像檔。
檢查安全群組
建立界面 VPC 端點時,您必須為 VPC 端點選擇子網路和安全群組。請確定您選擇具有適當傳入規則的私有子網路和安全群組。
連接至界面 VPC 端點的安全群組必須具有連接埠 443 (HTTPS) 的傳入規則:
傳入規則:
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
HTTPS | TCP | 443 | 用戶端的 IP 地址 (請參閱備註) |
**備註:**若要保護透過 VPC 端點的傳入流量,請考慮僅在 Source (來源) 中指定用戶端的 IP 地址或網路。
此外,請確認與執行個體相關聯的安全群組是否允許來自負載平衡器安全群組的 HTTP 流量:
傳入規則:
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
HTTP | TCP | 80 | 負載平衡器的安全群組 |
確認與負載平衡器關聯的安全群組允許傳入規則中的所有 HTTP 流量:
傳入規則:
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
HTTP | TCP | 80 | 0.0.0.0/0 |
**備註:**不需要限制先前任何安全群組中的傳出流量。
檢查路由表項目
建立閘道端點時,您可以選擇路由表。確保選擇與 VPC 的私有子網路相關聯的路由表。與私有子網路相關聯的路由表必須具有適用於每個閘道 VPC 端點的路由。例如,您必須為與 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 相關聯的每個閘道 VPC 端點建立路由。
路由表項目:
| |
---|
目的地 | 目標 |
172.xx.x.0/16 | 本機 |
pl-63a5xxx | vpce-04xxx |
檢查 VPC 端點政策
VPC 端點政策必須允許您的 Elastic Beanstalk 環境與服務進行私密通訊。建立界面或閘道端點時,可以連接端點政策。端點政策控制哪些 AWS 主體可以使用 VPC 端點存取端點服務。AWS 主體包括 AWS 帳戶、AWS Identity and Access Management (IAM) 使用者以及 IAM 角色。如果您在建立端點時未指定端點政策,則依預設,該端點具有完整存取權。
以下是使用 Elastic Beanstalk 時 S3 端點所需的 S3 閘道 VPC 端點最低政策範例。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EBBucketAccess",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject",
"s3:PutBucketPolicy",
"s3:PutObjectVersionAcl"
],
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*",
"arn:aws:s3:::cloudformation*/*"
]
}
]
}
相關資訊
使用界面 VPC 端點存取 AWS 服務