如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题?
我想排查我完全私有的 AWS Elastic Beanstalk 环境中的联网问题。
简短描述
完全私有环境具有以下设置,并且仅允许从同一 Amazon Virtual Private Cloud(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 和 Multi-Docker 环境正常运行,请提供一个私有 Docker 映像。
检查安全组
创建接口 VPC 端点时,必须为您的 VPC 端点选择子网和安全组。务必要选择具有恰当入站规则的私有子网和安全组。
附加到接口 VPC 端点的安全组必须具有端口 443(HTTPS)的入站规则:
入站规则:
类型 | 协议 | 端口范围 | 源 |
HTTPS | TCP | 443 | 客户端 IP 地址(请参阅注释) |
注意:为保护通过 VPC 端点的传入流量,可考虑在源中仅指定客户端的 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*/*" ] } ] }
相关信息

相关内容
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- 已提问 2 个月前lg...
- 已提问 4 个月前lg...
- 已提问 4 个月前lg...
- AWS 官方已更新 2 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 3 个月前