我已经设置了一个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


谁能建议我的政策中需要更新哪些内容才能允许我列出文件?

最佳答案

列表存储桶操作位于存储桶中,因此必须更新策略以允许对存储桶执行特定操作

使用以下策略可以使用户具有上载,获取和删除文件并列出文件的能力:

{
  "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__/"}}
     }
  ]
}

08-07 16:20