Amazon Virtual Private Cloud (Amazon VPC) を使用してインターフェイス VPC エンドポイントを作成しました。しかし、アベイラビリティーゾーンの好みのサブネットを選択することができません。
簡単な説明
AWS PrivateLink サービスに接続するためのインターフェイス VPC エンドポイントを作成すると、次のエラーが表示される場合があります。
「Error: VPC エンドポイントサービス com.amazonaws.vpce.us-east-1.vpce-svc-xxxx は、サブネットのアベイラビリティーゾーン subnet-xxxx をサポートしていません」
このエラーは、サービスプロバイダー VPC の Network Load Balancer のアベイラビリティーゾーンがアクティブ化されていない場合に発生する可能性があります。
インターフェイス VPC エンドポイントを作成するときは、以下のベストプラクティスに従ってください。
- サービスコンシューマーがエンドポイントサービス情報を作成および取得すると、サービスプロバイダーと共通のアベイラビリティーゾーンのみが表示されます。
- AZ ID は、すべての AWS アカウントにわたるアベイラビリティーゾーンの一意で一貫した識別子です。
- アベイラビリティーゾーンのマッピングは AWS アカウントによって異なる可能性があります。たとえば、あるアカウントで us-east-1a としてマップされているサブネットが、別のアカウントでは us-east-1c としてマップされている場合があります。
- AWS では、AZ IDを使用して、お使いのアカウントに関連するリソースの実際の場所を識別できます。
- アベイラビリティーゾーンは、プロバイダー VPC の Network Load Balancer上のアクティブなアベイラビリティーゾーンに対応する場合にのみ選択できます。
- Amazon VPC コンソールは、アベイラビリティーゾーンのマッピングを自動的に実行します。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」をご参照ください。また、AWS CLI の最新バージョンを使用しているかどうかを確認してください。
プロバイダー VPC の Network Load Balancer でどのアベイラビリティーゾーンがアクティブ化されているかを確認します。describe-vpc-endpoint-services AWS CLI コマンドを実行します。
$aws ec2 describe-vpc-endpoint-services —service-names com.amazonaws.vpce.us-east-1.vpce-svc-xxxx
注:****サービス名を自分のサービス名に置き換えてください。
この例では、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 を通じてサービスを共有する
AWS リソースのアベイラビリティーゾーン ID