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

3 分钟阅读
0

我想排查我完全私有的 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)的入站规则:

入站规则:

类型协议端口范围
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/16本地
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 官方
AWS 官方已更新 1 年前