跳至内容

如何对我的私有 Elastic Beanstalk 环境网络配置中的 VPC 端点进行故障排除?

3 分钟阅读
0

我想在我的完全私有的 AWS Elastic Beanstalk 环境中解决网络问题。

简短描述

完全私有环境具有以下设置,并且仅允许从同一个 Amazon Virtual Private Cloud (Amazon VPC) 内访问您的 Web 应用程序。

  • **负载均衡器可见性:**私有
  • **负载均衡器子网:**两个私有子网
  • **实例公共 IP:**已禁用
  • **实例子网:**两个私有子网

VPC 之间的所有通信均通过配置的 VPC 端点进行。此外,VPC 内的所有通信均通过路由表中的本地路由进行。以下是由于网络配置而可能在环境中看到的常见错误:

  • The Amazon Elastic Compute Cloud (Amazon EC2) instances failed to communicate with Elastic Beanstalk.(Amazon Elastic Compute Cloud (Amazon EC2) 实例与 Elastic Beanstalk 通信失败。)Communication failure is due to configuration problems with the VPC or a failed EC2 instance.(通信失败是由于 VPC 的配置问题或 EC2 实例失败造成的。)Check your VPC configuration, and try launching the environment again.(请检查您的 VPC 配置并尝试重新启动环境。)
  • The instances didn't respond in the allowed command timeout time.(实例在允许的命令超时时间内未响应。)

解决方法

在创建完全私有的 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) 的入站规则:

入站规则:

类型协议端口范围
HTTPSTCP443客户端的 IP 地址(参考备注)

注意:要保护通过 VPC 端点的传入流量,请考虑在中仅指定客户端的 IP 地址或网络。

此外,验证与实例关联的安全组是否允许来自负载均衡器的安全组的 HTTP 流量:

入站规则:

类型协议端口范围
HTTPTCP80负载均衡器的安全组

验证与负载均衡器关联的安全组是否允许入站规则中的所有 HTTP 流量:

入站规则:

类型协议端口范围
HTTPTCP800.0.0.0/0

**注意:**您无需限制前面任何安全组中的出口流量。

检查路由表条目

创建网关端点时,您可以选择路由表。确保选择与 VPC 私有子网关联的路由表。与私有子网关联的路由表必须为每个网关 VPC 端点提供路由。例如,您必须为与 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 关联的每个网关 VPC 端点提供路由。

路由表条目:

目标目标
172.xx.x.0/16local
pl-63a5xxxvpce-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 服务

AWS 官方已更新 1 年前