我有一个S3存储桶,其中有一些文件夹,但是文件夹中的对象将动态创建,因此简单来说,我可以这样说:
main_users/someIDNumber/uploaded
someIDNumber
是动态的,每次创建用户时都不同。
现在,我想向“ {up1”}文件夹内的所有对象授予GetObject
权限,仅向所有用户提供特定引用,这是我的网站。
我已经在我的存储桶策略中尝试过此操作,但这不起作用:
arn:aws:s3:::mybucketname/main_users/*/uploaded/*
这也是
arn:aws:s3:::mybucketname/main_users/*/uploaded
但是我的网站无法访问。
我该怎么办?
答案 0 :(得分:1)
对我有用。我做了以下事情:
s3://my-bucket/main_users/42/uploaded/foo.txt
stack
IAM用户aws s3 cp s3://my-bucket/main_users/42/uploaded/foo.txt . --profile stack
该政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/main_users/*/uploaded/*"
}
]
}
当我尝试使用以下方法复制文件时失败:
aws s3 cp s3://my-bucket/main_users/24/something/foo.txt . --profile stack
请注意,如果您尝试列出(ls
)文件夹,则将需要其他策略。以上是对GetObject
的测试,而不是列出存储桶。
尽管我将这些策略放在特定的IAM用户上,但它在存储桶策略中的工作原理应相同。只需确保您已编辑 S3阻止公共访问,以使存储桶中的内容可以公开访问。