バケットポリシーの VPC または VPC エンドポイント ID が間違っています。ポリシーを修正してバケットにアクセスできるようにする方法を教えてください。

最終更新日: 2021 年 3 月 19 日

Amazon Simple Storage Service (Amazon S3) バケットが、誤った Amazon Virtual Private Cloud (Amazon VPC) ID または VPC エンドポイント ID を指定しています。ポリシーを修正してバケットに再度アクセスできるようにする方法を教えてください。

解決方法

VPC ID または VPC エンドポイント ID は有効であるが VPC が間違っている場合

バケットポリシーの VPC ID または VPC エンドポイント ID は有効であるが、間違った VPC を参照している場合は、以下のステップに従います。

注意: バケットポリシーで VPC ID を指定した場合は、VPC エンドポイントが VPC に関連付けられていることを確認してください。関連付けられていない場合、バケットを更新できません。

1.    現在許可されている VPC にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続します。

注: Amazon EC2 インスタンスは、VPC エンドポイントを経由する Amazon S3 へのトラフィックを許可するルートテーブルも使用する必要があります。さらに、このインスタンスには、S3 バケットへのアクセス許可を持つロールまたは認証情報が必要です。

2.    インスタンスから、次の AWS コマンドラインインターフェイス (AWS CLI) のコマンドを実行してバケットポリシーを取得します。

aws s3api get-bucket-policy --bucket example_bucket

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

3.    既存のバケットポリシーは、後のステップで使用するためにコピーして保存しておきます。

4.    バケットポリシーを削除するには、このコマンドを実行してください。

警告: 次のコマンドはバケットポリシー全体を削除します。参照のため、必ず既存のバケットポリシーのコピーを保持してください。

aws s3api delete-bucket-policy --bucket example_bucket

5.    正しい VPC または VPC エンドポイントを参照するように前のバケットポリシーを編集します。または、VPC でアクセスを制限する必要がない場合は、VPC の制限を完全に削除します。次に、修正したポリシーを JSON ドキュメントとして保存します。

6.    バケットへのアクセス権がある AWS アカウントから、put-bucket-policy コマンドを実行して修正済みのバケットポリシーをバケットに追加します。

aws s3api put-bucket-policy --bucket example_bucket --policy file://policy.json

VPC ID または VPC エンドポイント ID が有効でない場合

バケットポリシーの VPC ID または VPC エンドポイント ID が無効 (または誤って入力されている) の場合、エラーが発生します。無効な (または誤っている) ポリシーを更新するには、AWS アカウントの root ユーザーアクセス権が必要です。管理者レベルのアクセス権がある場合でも、ポリシーを編集または削除することはできません。

注: これらの手順は、AWS GovCloud (米国) には適用されません。AWS GovCloud (米国) ユーザーの場合は、AWS サポートにお問い合わせください。

Amazon S3 コンソールでバケットポリシーを修正するには、以下のステップに従います。

1.    Amazon S3 コンソールにルートユーザーとしてサインインします。

2.    バケットポリシーを削除または編集する Amazon S3 バケットを選択します。

注: バケットを開くと、コンソールに「アクセスが拒否されました」というエラーが表示される場合があります。このエラーが表示されても、以下のステップを実行できます。

3.    [Routes (ルート)] ビューを選択します。

4.    [バケットポリシー] を選択します。

5.    バケットポリシー全体を削除するには、[削除] を選択します。VPC ID または VPC エンドポイント ID のみを編集するには、バケットポリシーエディタで ID を修正し、[保存] を選択します。

警告: バケットポリシーを完全に削除する場合は、必ず既存のバケットポリシーのコピーを参照のため保持してください。

AWS CLI でバケットポリシーを修正するには、以下のステップに従います。

警告: この手順では、root ユーザーの認証情報 (アクセスキー) を使用します。root ユーザーの認証情報は、緊急時または回復のシナリオにのみ使用することをお勧めします。必要でない限り、ルートアカウント認証情報は使用しないでください。詳細については、AWS アカウントのルートユーザーのアクセスキーをロックするをご参照ください。

1.    次のコマンドを実行して AWS CLI を設定します。

aws configure

2.    認証情報を入力するためのプロンプトがコマンドから返されます。ルートユーザーの認証情報を入力します。これらの認証情報を生成する手順については、root ユーザーのアクセスキーの作成をご参照ください。

3.    次のコマンドを実行してバケットポリシーを取得します。

aws s3api get-bucket-policy --bucket example_bucket

4.    既存のバケットポリシーは、後のステップで使用するためにコピーして保存しておきます。

5.    バケットポリシーを削除するには、このコマンドを実行してください。

警告: 次のコマンドはバケットポリシー全体を削除します。参照のため、必ず既存のバケットポリシーのコピーを保持してください。

aws s3api delete-bucket-policy --bucket example_bucket

6.    正しい VPC または VPC エンドポイントを参照するように前のバケットポリシーを編集します。または、VPC でアクセスを制限する必要がない場合は、VPC の制限を完全に削除します。次に、修正したポリシーを JSON ドキュメントとして保存します。

7.    put-bucket-policy コマンドを実行して修正済みのバケットポリシーをバケットに追加します。

aws s3api put-bucket-policy --bucket example_bucket --policy file://policy.json

AWS ベストプラクティス

バケットポリシーを修正したら、次のベストプラクティスに従ってください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?