我已经设置了一个web服务来为amazon s3中的存储桶创建临时凭证,以便其他应用程序可以使用这些临时凭证来上传文件。
我想在每个userId的存储桶中创建单个文件夹,临时凭据只允许访问特定用户的文件夹
以下是我目前使用的政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::myTestBucket/1/*"
]
}
]
}
到目前为止,这允许调用应用程序将文件上传到myTestBucket中的文件夹1而不是文件夹2,这是预期的。 其中一个应用程序现在需要为每个用户列出文件夹中的对象。
使用同样的策略,当我使用临时凭证
执行此操作时,会出现以下异常Status Code: 403, AWS Service: Amazon S3, AWS Request ID: 7BC4C177E8CA1762, AWS Error Code: AccessDenied, AWS Error Message: Access Denied
有人可以建议我的政策中需要更新哪些内容才能让我列出文件吗?
答案 0 :(得分:3)
列表存储桶操作在存储桶中,因此必须更新策略以允许对存储桶执行特定操作
使用如下所示的政策可以让用户上传,获取和删除他们的文件并列出他们的文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect":"Allow",
"Action":["s3:PutObject","s3:GetObject","s3:DeleteObject"],
"Resource":"arn:aws:s3:::__MY_APPS_BUCKET_NAME__/__USERNAME__/*"
},
{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::__MY_APPS_BUCKET_NAME__",
"Condition":{"StringLike":{"s3:prefix":"__USERNAME__/"}}
}
]
}