Amazon S3 コンソールを使用して Amazon Simple Storage Service (Amazon S3) バケットにファイルをアップロードしようとしています。しかし、「403 禁止」エラーが表示されます。
簡単な説明
「403 禁止」エラーは、次の理由で発生する可能性があります。
解決策
s3:PutObject または s3:PutObjectAcl の権限を確認する
以下の手順に従ってください。
- AWS ID およびアクセス管理 (IAM) コンソールを開きます。
- ユーザーやロールなど、バケットへのアクセスに使用される ID に移動します。ID の名前を選択します。
- [権限] タブを選択して各ポリシーを展開すると、その JSON ポリシードキュメントが表示されます。
- JSON ポリシードキュメントで、Amazon S3 アクセスに関連するポリシーを検索してください。次に、バケットに対する s3:PutObject または s3:PutObjectAcl アクションの権限があることを確認します。
AWS KMS キーを使用する許可を取得する
AWS KMS で暗号化されたオブジェクトをアップロードするには、AWS KMS アクションを実行する権限が必要です。少なくとも kms:Decrypt と kms:GenerateDataKey アクションを実行できる必要があります。
**重要:**別のアカウントのバケットにオブジェクトをアップロードする場合、AWS マネージドキー aws/S3 をデフォルトの暗号化キーとして使用することはできません。これは、AWS マネージドキーポリシーを変更できないためです。
バケットポリシーに明示的な拒否ステートメントがないか確認する
以下の手順に従ってください。
- Amazon S3 コンソールを開きます。
- バケットのリストから、ファイルをアップロードする先のバケットを開きます。
- [権限] タブを選択します。
- [バケットポリシー] を選択します。
- "Effect": "Deny" を含むステートメントを探します。
- これらのステートメントで、バケットへのアップロードを妨げていないことを確認してください。
**重要:**バケットポリシーを "Effect": "Deny" を使用して保存する前に、S3 バケットへのアクセスを拒否するステートメントがないか確認してください。ロックアウトされた場合は、「誤って全ユーザーの Amazon S3 バケットへのアクセスを拒否してしまいました。アクセスを回復するにはどうすればよいですか?」をご覧ください。
次のステートメント例では、アップロードリクエストで ARN が arn:aws:kms:us-east-1:111122223333:key と一致する AWS KMS キーを使用してオブジェクトを暗号化しない限り、example-bucketの s3:PutObject へのアクセスを明示的に拒否します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:PutObject"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::example-bucket/*",
"Condition": {
"StringNotLikeIfExists": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
}
},
"Principal": "*"
}
]
}
リクエストからパブリック ACL を削除するか、S3 ブロックパブリックアクセスを無効にする
PUT リクエストで public-read や authenticated-read などのパブリック ACL を渡すと、S3 オブジェクトがパブリックになります。このアカウントまたはバケットで S3 ブロックパブリックアクセス機能がオンになっている場合、アップロードリクエストは拒否されます。
注: 必要でない状況では、オブジェクトをパブリックにすることはベストプラクティスではありません。
オブジェクトをパブリックオブジェクトとして正常にアップロードするには、必要に応じて S3 ブロックアクセス機能を変更します。オブジェクトをパブリックにする必要がない状況では、前述のパブリック ACL を PUT リクエストから削除してください。
アカウントレベルでの S3 ブロックパブリックアクセスの設定については、「アカウントのブロックパブリックアクセスの設定」を参照してください。バケットレベルでの設定については、「S3 バケットのブロックパブリックアクセスの設定」を参照してください。また、「パブリックの意味」も参照してください。
AWS Organizations のサービスコントロールポリシーを確認する
AWS Organizations を使用している場合は、サービスコントロールポリシーが S3 アクションを明示的に拒否しているかどうかを確認してください。必要に応じてポリシーを変更してください。
関連情報
Amazon S3 からの 403 アクセス拒否エラーのトラブルシューティング方法を教えてください。
Amazon S3 でバケットポリシーを変更しようとしたときに、「バケットポリシーを編集する権限がありません」というエラーをトラブルシューティングする方法を教えてください。