0

我正在尝试创建一个策略以供部署在 ECS 中的应用程序使用,以获取存储桶内的一些文件。我正在创建的策略如下所示:

{
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": [
            "s3:ListBucket",
            "s3:DeleteObject",
            "s3:PutObjectAcl",
            "s3:ListBucket",
            "s3:ListMultipartUploadParts",
            "s3:PutObject",
            "s3:GetObject",
            "s3:ListBucketVersions",
            "s3:ListBucketMultipartUploads"
        ],
        "Resource": [
            "arn:aws:s3:::name-of-bucket",
        ]

但是我在尝试将文件上传到存储桶时仍然遇到访问被拒绝错误,我已经看到了一些 AWS 示例,其中人们将策略中的资源定义为:

"arn:aws:s3:::name-of-bucket/*",

请注意 /* 。

所以我的问题是我应该什么时候使用 /* 什么时候不应该使用它(我应该使用它的权限)。

4

1 回答 1

4

您必须同时执行这两项操作,这意味着您需要对存储桶、存储桶本身和存储桶中的对象的权限。每一层都可以控制。

在以下政策通知中,共有三个部分。第一部分提供列出您账户中的存储桶的权限。下一部分提供列出存储桶内容和获取存储桶位置属性的权限。第三部分控制您可以在存储桶中执行的操作。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::examplebucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::examplebucket/*"
      }
   ]
}
于 2018-07-25T22:18:56.867 回答