S3バケットポリシーを使用してバケットに一般的なアクセスを提供すると同時に、ロールポリシーを使用してロールに特定のアクセスを許可しようとしています。この役割は、バケット内のオブジェクトを処理するためにラムダ関数によって使用されます。最初のハードルで停止しています。ロールポリシーでは許可されていて、バケットポリシーで明示的に拒否されていないにもかかわらず、接頭辞 "incoming /"を持つものは取得できません。S3バケットポリシーとIAMロールの競合
役割ポリシー:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBucketPut",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::bucket-name/*"
},
{
"Sid": "AllowIncomingGetDelete",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "incoming/*"
}
}
}
]
}
注:「:AWS:* S3 :::バケット名/入ARN」、唯一の方法を変えたようだった私も、条件を削除し、リソースへの変更を試みましたポリシーシミュレータが動作しました。別の注意: "incoming/*"接頭辞を付けたバケットからGETすると、実際にはシミュレータでは機能しません。
私は関連性のあるものがわからないため、以下のバケツポリシーの文を削除していません。 IPアドレスは省略されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicList",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "public*"
}
}
},
{
"Sid": "AllowPublicGet",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/public*"
},
{
"Sid": "AllowPrivateList",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name",
"Condition": {
"StringLike": {
"s3:prefix": "private*"
},
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
},
{
"Sid": "AllowPrivateGet",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/private*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
},
{
"Sid": "AllowIncomingPut",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket-name/incoming*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"..."
]
}
}
}
]
}
テキストの壁にお詫び申し上げます。
私の役職が接頭辞「着信/」でオブジェクトを取得できない理由はわかりません。次の操作を実行したときに
ラムダ関数は、403回のアクセス拒否を取得している:
S3.download_file(bucket, key, localfile)
ご清聴ありがとうございます。あなたが説明したようにリソースを指定するのと同じ動作をします。私は問題を理解した。私は職場に戻ったときに更新します。 – unclemeat