Amazon Virtual Private Cloud (Amazon VPC) を使用してインターフェイス VPC エンドポイントを作成したところ、アベイラビリティーゾーンに目的のサブネットを選択できません。
簡単な説明
AWS PrivateLink サービスへの接続にインターフェイス VPC エンドポイントを作成する際、次のエラーが発生します。
"Error: The VPC endpoint service com.amazonaws.vpce.us-east-1.vpce-svc-### does not support the Availability Zone of the subnet: subnet-###."
上記のエラーメッセージは、選択したアベイラビリティーゾーンは、VPC の Network Load Balancer 上ではサービスプロバイダーにより有効化されていないことが原因で表示されます。
注: AWS PrivateLink で使用できるサービスのリストについては、「AWS PrivateLink と統合できる AWS サービス」を参照してください。または、Amazon VPC コンソールを使用し、インターフェイス VPC エンドポイントを作成する際も、利用可能なサービスのリストを参照できます。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
サービスプロバイダーにより、Network Load Balancer 上で有効化されたアベイラビリティーゾーンを確認するには、次の AWS CLI コマンド describe-vpc-endpoint-services を実行します。
aws ec2 describe-vpc-endpoint-services --service-names com.amazonaws.vpce.us-east-1.vpce-svc-###
注: service-names を目的のサービス名に置き換えてください。サービスプロバイダー、サービスコンシューマーの両者は、異なるアベイラビリティーゾーンに属している場合も describe-vpc-endpoint-services コマンドを実行できます。
次の出力例は、us-east-1b サブネットを選択できることを示しています。
{
"ServiceDetails": [
.............................
"ServiceName": " com.amazonaws.vpce.us-east-1.vpce-svc-### ",
"VpcEndpointPolicySupported": false,
"Owner": "##########",
"AvailabilityZones": [
"us-east-1b"
],
..............................
}
サービスプロバイダーの権限構成は、サービスコンシューマーをエンドポイントサービスの AWS プリンシパルとして許可していることを確認します。
重要:
- エンドポイントサービスの情報を取得する際は、サービスプロバイダーにより有効化されたアベイラビリティーゾーンのみが表示されます。
- Availability Zone ID (AZ ID) は、すべての AWS アカウントにおける、アベイラビリティゾーンの一意かつ一貫的な識別子です。
- アベイラビリティーゾーン名のマッピングは、AWS アカウントによって異なる可能性があります。たとえば、あるアカウントで us-east-1a とマッピングしたサブネットは、他のアカウントでは us-east-1c とマッピングされる可能性があります。
- AZ ID を利用すると、アカウントに関連するリソースの場所を特定できます。
- サービスプロバイダー VPC の Network Load Balancer 上で有効なアベイラビリティゾーンに対応するアベイラビリティゾーンのみが、選択可能です。
- Amazon VPC コンソールは、アベイラビリティーゾーン名を自動でマッピングします。
関連情報
AWS PrivateLink を通じてサービスを共有する