ゲートウェイ VPC エンドポイントを使用して S3 バケットに接続できないのはなぜですか?
最終更新日: 2022 年 3 月 22 日
Amazon Virtual Private Cloud (Amazon VPC) の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから Amazon Simple Storage Service (Amazon S3) バケットへの接続にゲートウェイエンドポイントを使用していますが、接続できません。この解決方法を教えてください。
解決方法
注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
ゲートウェイ VPC エンドポイントの接続の問題は、ネットワークアクセスまたは Amazon VPC から Amazon S3 への接続を許可するセキュリティルールに原因がある可能性があります。次のリソースと設定を確認して、接続問題をトラブルシューティングしてください。
リージョンの設定
VPC エンドポイントを使用してアクセスできるのは、Amazon S3 ゲートウェイ VPC エンドポイントと同じリージョンにある Amazon S3 オブジェクトに限られます。オブジェクトとエンドポイントが同じリージョンにあることを確認してください。
VPC での DNS 設定
重要: VPC で DNS 解決が有効になっている必要があります (「ゲートウェイエンドポイントの制限」を参照)。独自の DNS サーバーを使用している場合は、AWS のサービスへの DNS リクエストが AWS が維持する IP アドレスに解決されることを確認してください。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[Virtual Private Cloud] の下にある [VPC] を選択します。
- リソースリストで、S3 接続の問題がある Amazon VPC を選択します。
- [概要] ビューで、必ず [DNS 解決] を [はい] に設定します。
ルートテーブルを Amazon S3 に設定する
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[Virtual Private Cloud] の下にある [Route Tables] (ルートテーブル) を選択します。
- S3 接続の問題がある VPC サブネットに関連付けられているルートテーブルを選択します。
- [Routes] (ルート) ビューを選択します。
- ゲートウェイ VPC エンドポイントを使用する、Amazon S3 へのルートがあることを確認します。
セキュリティグループのアウトバウンドルール
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインの [ネットワーク & セキュリティ] の下にある [セキュリティグループ] を選択します。
- リソースリストで、Amazon S3 への接続に使用しているインスタンスに関連付けられているセキュリティグループを選択します。
- [アウトバウンド] ビューで、利用可能なアウトバウンドルールで Amazon S3 へのトラフィックが許可されていることを確認します。
デフォルトのアウトバウンドルールはすべてのアウトバウンドトラフィックを許可します。セキュリティグループに、デフォルトのアウトバウンドルールよりも制限の厳しいルールがある場合は、次のいずれかを追加します。
- ゲートウェイ VPC エンドポイントに関連付けられたプレフィックスリストの ID へのトラフィックを許可するアウトバウンドルール。
- 送信先が Amazon S3 の VPC エンドポイントに設定されているアウトバウンドルール。
詳細については、「セキュリティグループの変更」を参照してください。
ネットワーク ACL ルール
- Amazon VPC コンソールを開きます。
- ナビゲーションペインの [セキュリティ] で、[ネットワーク ACL] を選択します。
- リソースリストで、Amazon S3 接続の問題がある VPC サブネットに関連付けられているネットワークアクセスコントロールリスト (ネットワーク ACL) を選択します。
- [インバウンドルール] ビューで、エフェメラル TCP ポート 1024-65535 の Amazon S3 からのインバウンドリターントラフィックが、ルールにより許可されていることを確認します。
- [アウトバウンドルール] ビューで、HTTPS ポートでの Amazon S3 へのトラフィックが、ルールにより許可されていることを確認します。
ゲートウェイ VPC エンドポイントポリシー
重要: エンドポイントは、現在クロスリージョンリクエストをサポートしていません。エンドポイントがバケットと同じリージョンにあることを確認してください。get-bucket-location コマンドを使用して、バケットの場所を見つけることができます。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインの [Virtual Private Cloud] で、 [Endpoints] (エンドポイント) を選択します。
- リソースリストで、Amazon S3 接続の問題がある VPC サブネットに関連付けられているエンドポイントを選択します。
- [Policy] ビューを選択します。
- エンドポイントポリシーを確認してください。ポリシーにより、接続問題の影響を受ける S3 バケットまたは AWS Identity and Access Management (IAM) ユーザーへのアクセスがブロックされているかどうかを確認します。必要に応じて、ポリシーを編集して、S3 バケットまたは IAM ユーザーへのアクセスを有効にします。詳細については、「Amazon S3 のエンドポイントポリシー」を参照してください。
S3 バケットポリシー
- Amazon S3 コンソールを開きます。
- 接続問題がある S3 バケットを選択します。
- [アクセス権限] ビューを選択します。
- [バケットポリシー] を選択します。
- バケットポリシーにより、接続を希望するゲートウェイ VPC エンドポイントと VPC からのアクセスが許可されていることを確認してください。ポリシーを編集して、ゲートウェイ VPC エンドポイントと VPC からのアクセスを有効にします。詳細については、「Amazon S3 バケットポリシー」を参照してください。
注意: バケットポリシーは、VPC のインスタンスに関連付けられた、特定のパブリック IP アドレスや Elastic IP アドレスからのアクセスのみを制限できます。インスタンスに関連付けられたプライベート IP アドレスに基づくアクセスは制限できません。詳細については、「特定の IP アドレスへのアクセスを制限する」を参照してください。
プロキシサーバーを使用する場合、必ずサーバー経由の VPC 接続を許可してください。Amazon S3 にプロキシサーバーを使用しない場合、Amazon S3 バケットにアクセスする際に次のコマンドを使用してプロキシサーバーを迂回します。
export no_proxy = mybucket.s3.us-west-2.amazonaws.com
注意: 「us-west-2」はご利用のリージョンに必ず置き換えてください。
IAM ポリシー
- AWS IAM コンソールを開きます。
- インスタンスから S3 バケットへのアクセスに使用する IAM ユーザーかロールを選択します。
- [アクセス権限] ビューを選択します。
- IAM ユーザーまたはロールに関連付けられたユーザーに、Amazon S3 にアクセスするための適切なアクセス許可があることを確認します。詳細については、「特定の IAM ロールへの Amazon S3 バケットアクセスを制限する方法」および「ユーザーポリシーを使用したバケットへのアクセスコントロール」を参照してください。
AWS CLI 設定
AWS CLI を設定し、デフォルトの AWS リージョンを設定します。デフォルトのリージョン名を指定するには、aws configure コマンドを使用します。または、次の場合は、各 AWS CLI コマンドで --region オプションを設定できます。
- デフォルトのリージョンを指定したくない場合
- または - - デフォルトのリージョンを上書きしたい場合
AWS SDK の設定
ゲートウェイ VPC エンドポイントを使用して S3 バケットにリクエストを行う場合は、正しいリージョンを使用するように SDK (またはクライアントオブジェクト) を設定する必要があります。詳細については、「Using the Config object (Config オブジェクトの使用)」を参照してください。