我使用 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