如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题?

如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题?

我想排查我完全私有的 Amazon Elastic Beanstalk 环境中的联网问题。
如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题? 2023-08-21 20:42:03
如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题? 0
如何排查我私有 Elastic Beanstalk 环境网络配置中的 VPC 端点问题?
## 简短描述 完全私有环境具有以下设置,并且仅允许从同一 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 之外的亚马逊云科技服务和 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 映像](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc.html#services-vpc-private:\~:text=Provide%20a%20private%20Docker%20image?trk=cndc-detail)。 ### 检查安全组 创建接口 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 端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies?trk=cndc-detail)必须允许您的 Elastic Beanstalk 环境与服务进行私密通信。创建接口端点或网关端点时,您可以附加端点策略。端点策略控制哪些亚马逊云科技主体可以使用 VPC 端点访问端点服务。亚马逊云科技主体包括亚马逊云科技账户、Amazon 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 端点访问亚马逊云科技服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-private-dns?trk=cndc-detail)