当我尝试映射 Amazon VPC 端点时,如何解决“endpoint does not support the Availability Zone”错误?

1 分钟阅读
0

我使用 Amazon Virtual Private Cloud (Amazon VPC) 创建了接口 VPC 端点。然而,我无法为可用区选择我的首选子网。

简短描述

创建接口 VPC 端点来连接 AWS PrivateLink 服务时,可能会遇到以下错误:

"Error: The VPC endpoint service com.amazonaws.vpce.us-east-1.vpce-svc-xxxx does not support the Availability Zone of the subnet: subnet-xxxx."

如果没有为服务提供商 VPC 的网络负载均衡器激活可用区,可能会发生此错误。

创建接口 VPC 端点时,请遵循以下最佳实践:

  • 服务使用者创建和检索端点服务信息时,只能看到与服务提供商共用的可用区。
  • 对于所有 AWS 账户,可用区 ID (AZ ID) 是可用区的唯一且始终如一的标识符。
  • 该可用区在不同 AWS 账户中的映射可能会不同。例如,在一个账户中映射为 us-east-1a 的子网可能在另一个账户中映射为 us-east-1c
  • AWS 允许您使用 AZ ID 识别与您的账户相对应的资源的实际位置。
  • 只有当可用区与提供商 VPC 的网络负载均衡器上的活动可用区相对应时,您才能选择该可用区。
  • Amazon VPC 控制台自动执行可用区映射。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI

检查在提供商 VPC 的网络负载均衡器上启用了哪些可用区。运行 describe-vpc-endpoint-services AWS CLI 命令:

$aws ec2 describe-vpc-endpoint-services —service-names com.amazonaws.vpce.us-east-1.vpce-svc-xxxx

**注意:**用您的服务名称替换 service-names

此示例的输出显示您可以选择 us-east-1b 子网:

{    
    "ServiceDetails": [
         .............................
            "ServiceName": " com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxx ",
            "VpcEndpointPolicySupported": false,
            "Owner": "##########",
            "AvailabilityZones": [
                "us-east-1b"
            ],
        ..............................
}

上述输出映射到运行该命令的账户的值。因此,服务提供商账户和服务消费者账户都可以运行 describe-vpc-endpoint-services 命令,即使它们位于不同的可用区也是如此。对于消费者账户,确保该账户为允许作为端点服务的 AWS 主体

相关信息

通过 AWS PrivateLink 共享您的服务

Availability Zone IDs for your AWS resources

AWS 官方
AWS 官方已更新 1 年前