インターフェイスの Amazon Virtual Private Cloud (Amazon VPC) エンドポイントを使用して、Amazon Simple Storage Service (Amazon S3) バケットに接続する際に発生する問題を解決したいと考えています。
簡単な説明
接続に関する問題をトラブルシューティングするには、次の手順を実行してください。
- インターフェイスの Amazon VPC エンドポイントと Amazon S3 バケットに関連付けられているポリシーを確認する。
- ネットワークがインターフェイスの Amazon S3 エンドポイントに接続されていることを確認する。
- DNS がインターフェイスの Amazon S3 エンドポイントの IP アドレスに解決されることを確認する。
- SSL 検証エラーを修正する。
解決策
注: 次のコマンドで、サンプル値を適した値に置き換えてください。
Amazon VPC エンドポイントと Amazon S3 バケットに関連付けられているポリシーを確認する
デフォルトでは、ポリシーはバケットの作成時に Amazon S3 バケットに関連付けられません。ポリシーを関連付けることができるのは、Amazon S3 インターフェイスエンドポイントの作成時です。デフォルトでは、関連付けるポリシーはバケットに対するすべてのアクションを許可します。詳細については、「インターフェイス VPC エンドポイントを使用して AWS のサービスにアクセスする」を参照してください。
ネットワークがインターフェイスの Amazon S3 エンドポイントに接続されていることを確認する
インターフェイスの Amazon S3 エンドポイントへの接続を確認するには、次の手順を実行します。
- ソースと宛先の間の接続を確認します。ネットワークアクセスコントロールリスト (ネットワーク ACL) および Amazon S3 インターフェイスエンドポイントに関連付けられているセキュリティグループを確認します。インターフェイスエンドポイントへのトラフィックが許可されていることを確認してください。
- AWS リソースまたはオンプレミスホストと Amazon S3 エンドポイント間の接続をテストします。
telnet bucket.example_S3_interface_endpoint_DNS 443
- セキュリティグループまたはネットワーク ACL の接続の問題を特定するには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用して、ソースエンドポイントがあるサブネット内の接続をテストします。ソースから宛先の AWS リソースへのレイヤー 3 の接続があることを確認してください。テストインスタンスでは、Amazon S3 インターフェイスエンドポイントと同じセキュリティグループを使用するようにしてください。
DNS がインターフェイスの Amazon S3 エンドポイントの IP アドレスに解決されることを確認する
DNS が正しい IP アドレスに解決されることを確認するには、nslookup や dig などのツールを使用します。
dig コマンドの例:
dig *example_s3_interface_endpoint_DNS@example_local_nameserver
注: Amazon が提供する DNS サーバーは、Amazon VPC CIDR の .2 IP アドレスです。オンプレミスホストは、/etc/resolv.conf ファイルにリストされているホストのローカルネームサーバーです。
SSL 検証エラーを解決する
SSL 検証の失敗を解決または防止するには、エンドポイント URL がドメインと一致することを確認してください。この URL の検証が完了したら、S3 バケットにアクセスし、バケット内のオブジェクトを一覧表示します。
注: Amazon S3 用の AWS PrivateLink エンドポイントの証明書には、バケット、アクセスポイント、コントロールの 3 つのサブドメインがあります。Amazon S3 用の AWS PrivateLink エンドポイントをアドレス指定する際は、必ず正しいサブドメインを指定してください。
SSL エラーをトラブルシューティングするには、次のコマンドを実行します。
URL 検証の確認:
aws s3 ls s3://<example-bucket-name>/ --region <example-region> --endpoint-url https://bucket.<example-endpoint-id>.s3.<example-region>.
サポートされている証明書の確認:
openssl s_client -connect <example-endpoint-URL>:443 </dev/null 2>/dev/null | openssl x509 -noout -text | grep DNS
SSL プロトコルを介した接続の確認:
openssl s_client -connect <Endpoint URL>:443
関連情報
S3 インターフェイスエンドポイントからバケット、アクセスポイント、および Amazon S3 コントロール API オペレーションにアクセスする
AWS PrivateLink を通じてサービスを共有する
Amazon S3 のゲートウェイエンドポイント