Amazon Simple Storage Service (Amazon S3) バケットが、誤った Amazon Virtual Private Cloud (Amazon VPC) ID または VPC エンドポイント ID を指定しています。ポリシーを修正してバケットに再度アクセスできるようにしたいと考えています。
解決策
注:
VPC ID または VPC エンドポイント ID は有効であるが VPC 自体が誤っている場合
注: バケットポリシーで VPC ID を指定した場合は、VPC エンドポイントを VPC に関連付ける必要があります。そうしないと、バケットを更新できません。
次の手順を実行します。
-
許可されている VPC にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続します。
注: Amazon EC2 インスタンスは、VPC エンドポイントを経由する Amazon S3 へのトラフィックを許可するルートテーブルも使用する必要があります。さらに、このインスタンスには、S3 バケットへのアクセス許可が設定されたロールまたは認証情報が必要です。
-
このインスタンスから AWS CLI コマンド get-bucket-policy を実行し、バケットポリシーを取得します。
aws s3api get-bucket-policy --bucket example_bucket
-
重要: この既存のバケットポリシーは、後のステップで使用するため、コピーしておきます。
-
前述のバケットポリシーを削除します。
aws s3api delete-bucket-policy --bucket example_bucket
-
正しい VPC または VPC エンドポイントを参照するように前のバケットポリシーを編集します。または、VPC でアクセスを制限する必要がない場合は、VPC 制限を解除します。
-
修正したポリシーを JSON 形式で保存します。
-
バケットへのアクセス権がある 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 GovCloud (米国) には適用されません。AWS GovCloud (米国) ユーザーの場合は、AWS サポートにお問い合わせください。
Amazon S3 コンソールを使用してバケットポリシーを修正する
次の手順を実行します。
- Amazon S3 コンソールをルートユーザーとして開きます。
- バケットポリシーを削除または編集する Amazon S3 バケットを選択します。
注: バケットを開くと、コンソールに「Access Denied」というエラーが表示される場合があります。このエラーが表示されても、以下のステップを実行できます。
- [アクセス権限] ビューを選択します。
- [バケットポリシー] を選択します。
- バケットポリシーを削除するには、[削除] を選択します。VPC ID または VPC エンドポイント ID のみを編集するには、バケットポリシーエディタで ID を修正し、[保存] を選択します。
警告: バケットポリシーを削除する場合は、必ず既存のバケットポリシーのコピーを後で参照できるように保存しておいてください。
AWS CLI を使用してバケットポリシーを修正する
警告: この手順では、ルートユーザーの認証情報 (アクセスキー) を使用します。ルートユーザーの認証情報は、緊急時または回復のシナリオにのみ使用することをお勧めします。詳細については、「ルートユーザーの認証情報を保護し、日常的なタスクには使用しない」を参照してください。
次の手順を実行します。
-
次のコマンドを実行して AWS CLI を設定します。
aws configure
-
ルートユーザーの認証情報を入力します。認証情報を生成する手順については、「ルートユーザーのアクセスキーの作成」を参照してください。
-
バケットポリシーを取得します。
aws s3api get-bucket-policy --bucket example_bucket
-
重要: この既存のバケットポリシーは、後のステップで使用するため、コピーしておきます。
-
以下のコマンドを実行してこの既存のバケットポリシーを削除します。
aws s3api delete-bucket-policy --bucket example_bucket
-
正しい VPC または VPC エンドポイントを参照するように前のバケットポリシーを編集します。または、VPC でアクセスを制限する必要がない場合は、VPC 制限を解除します。
-
修正したポリシーを JSON 形式で保存します。
-
put-bucket-policy コマンドを実行することで、修正済みのバケットポリシーをバケットに追加します。
aws s3api put-bucket-policy --bucket example_bucket --policy file://policy.json
AWS のベストプラクティスに従う
バケットポリシーを修正したら、以下のベストプラクティスに従ってください。
関連情報
バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール