[解決済み] s3 - HeadObject 操作を呼び出すときに、エラーが発生しました (403)。Forbidden
質問
回答 役に立たなかった
s3バケットのリソースポリシー
bucket1
です。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket1/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket1/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket1/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
}
のIAMポリシー
bucket1
があります。
{
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*"
],
"Effect": "Allow"
}
s3Upload()
正常に動作する
を実行するとエラーが発生します。
aws s3 cp s3://url .
ファイルをローカルフォルダにコピーしているとき
これは、S3のIAMポリシーとリソースポリシーの間のコンフリクトです。
リソースポリシーで実行を許可する方法
aws s3 cp
?
解決方法は?
ここでいくつかの問題があります。まず、バケツポリシーのドキュメントが有効な json でないことですが、これはコピー中に発生したエラーだと思われます。
aws s3 cp s3://url
が動作しないのは、バケツ・ポリシーがブロックしているからです。明示的な拒否は常に勝つことに注意してください。HTTP リクエストにサーバー側の暗号化ヘッダーがない場合、Bucket Policy はアップロードを拒否します。IAM ポリシーをどのように定義しても、明示的な拒否のため、そのユーザはこのコマンドをそのまま使用することはできません。
CLIコマンドでサーバサイドの暗号化を指定したい場合は、適切なフラグを使用する必要があります。
--sse AES256
(s3バケットにオブジェクトをアップロードする場合も同様です)。
aws s3 cp s3://url --sse AES256
その他、気がついたこと。
この部分
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket1/*”,
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
HTTPS を使用していないリクエストで、そのバケット内のオブジェクトのみを指定した場合、すべての S3 アクションを拒否しています -。
"Resource": "arn:aws:s3:::bucket1/*”
バケツそのものではなく
"Resource": "arn:aws:s3:::bucket1”
したがって、あなたの発言は、オブジェクトレベルの操作にのみ適用されます。これは意図した動作なのでしょうか?HTTPS を使用していないオブジェクトレベルの操作とバケツレベルの操作の両方を拒否したい場合は、現在の
Resource
に変更します。
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket1”,
"arn:aws:s3:::bucket1/*”
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
そして、このセクションで
{
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*"
],
"Effect": "Allow"
}
の中のこの行は
Resource
-
"arn:aws:s3:::bucket1"
は完全に冗長であるため
"s3:GetObject"
アクションはオブジェクトレベルの操作であり、あなたのステートメントにはバケツレベルの操作は含まれていません。自由に削除してかまいません。というわけで、以下のような感じになります。
{
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::bucket1/*",
"Effect": "Allow"
}
アップデイト
オブジェクトを取得する場合、BucketのURLだけでなく、何らかのオブジェクトを指定するようにしてください。
これは動作します
aws s3 cp s3://bucket/file.txt .
これは403エラーで失敗します
aws s3 cp s3://bucket .
上記のコマンドで複数のファイルを同時にダウンロードする場合、2つのことが必要になります。まず、IAMパーミッションを更新して、以下のものを含める必要があります。
s3:ListBucket
をバケットに追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket"
}
]
}
2つ目は
--recursive
フラグを
cp
コマンドを使用します。
aws s3 cp s3://bucket . --recursive
関連
-
[解決済み】AWS DynamoDBとAWS DocumentDBの違い(新規サービス)?[解決済み】AWS DynamoDBとAWS DocumentDBの違いについて]
-
[解決済み】AWS CLI S3 HeadObject操作の呼び出し時に、クライアントエラー(403)が発生しました。Forbidden
-
[解決済み】DynamoDBMapperとTable for DynamoDB Tablesの違いとは?
-
[解決済み] CloudFormation Stack Errors with REST API Doesn't Contain Any Methods
-
[解決済み] AWSでロールを引き受ける際のRoleSessionNameのユースケースとパフォーマンスへの影響について
-
[解決済み] Terraformを使って既存のVPCにECを立ち上げる方法
-
[解決済み] AWS SNSとAWS SQSのFIFOキューを統合することは可能か?
-
[解決済み] Amazon SNSとAmazon SQSの違いは何ですか?
-
[解決済み] パスワードなしでec2インスタンスにscp(セキュアコピー)する
-
[解決済み】EC2インスタンスにスワップを追加する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS CLI S3 HeadObject操作の呼び出し時に、クライアントエラー(403)が発生しました。Forbidden
-
[解決済み] s3 - HeadObject 操作を呼び出すときに、エラーが発生しました (403)。Forbidden
-
[解決済み] Cognitoのサインアップ時に電話番号の書式が無効である
-
[解決済み] MSCK REPAIR TABLEは裏で何をしているのか、なぜこんなに遅いのか?
-
[解決済み] DNS名foo.を持つRRSetはゾーンバーで許可されていません。
-
[解決済み] Terraformを使って既存のVPCにECを立ち上げる方法
-
[解決済み] 新しいIAM管理者ユーザーに "この操作を実行する権限がありません "と表示される
-
[解決済み] AWSとPuTTy。悪いサービス要求のssh-connection [閉鎖]。
-
[解決済み] List<AWS::EC2::Subnet::Id> 型のパラメータをネストしたCloudFormationテンプレートに渡す。
-
[解決済み] Amazon SNSとAmazon SQSの違いは何ですか?