คุณยังสามารถกำหนดค่า ListBuckets สำหรับแต่ละโฟลเดอร์ได้เช่นกัน
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSESPuts-1521238702575",
"Effect": "Allow",
"Principal": {
"Service": "ses.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::buckets.email/*",
"Condition": {
"StringEquals": {
"aws:Referer": "[red]"
}
}
},
{
"Sid": "Stmt1586754972129",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::596322993031:user/[red]"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::buckets.email",
"Condition": {
"StringEquals": {
"s3:delimiter": "/",
"s3:prefix": [
"",
"domain.co",
"domain.co/user"
]
}
}
},
{
"Sid": "Stmt1586754972129",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::596322993031:user/[red]"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::buckets.email",
"Condition": {
"StringLike": {
"s3:prefix": "domain.co/user/*"
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::596322993031:user/[red]"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::buckets.email/domain.co/user/*"
}
]
}
กฎเหล่านี้ใช้ร่วมกับ SES เพื่อรับอีเมล แต่อนุญาตให้ผู้ใช้ภายนอกดูไฟล์ที่ SES ใส่ไว้ในที่เก็บข้อมูล ฉันทำตามคำแนะนำจากที่นี่: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
นอกจากนี้คุณต้องระบุคำนำหน้าเป็นdomain.co/user/
ด้วยเครื่องหมายทับในตอนท้ายเมื่อใช้ SDK มิฉะนั้นคุณจะถูกปฏิเสธการเข้าถึง หวังว่ามันจะช่วยทุกคน