Amazon S3存储桶策略不支持“版本”选项

时间:2014-05-02 16:24:39

标签: amazon-web-services amazon-s3

我想提供对我桶中所有文件的公共访问权限。包括这个流行的one在内的几个SO答案表明我应该创建一个策略。

所以我去复制粘贴并编辑了资源名称和版本日期,但是我收到了错误

Document is invalid: Invalid Version 2014-05-02 - undefined

我去看documentation(注意它说的是“最新的”),给出的例子是

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
        "Effect":"Allow",
      "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}

我接受了,更新了资源名称,并再次尝试。仍然无效:版本不存在。

然后我注意到在对话框的角落显示“AWS policy generator”的链接。我填写了详细信息,点击“生成”,得到类似的东西

{
  "Id": "Policy1399047197120",
  "Statement": [
    {
      "Sid": "Stmt1399047194777",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucketname/*",
      "Principal": {
        "AWS": [
          "AWS"
        ]
      }
    }
  ]
}

它有效!很好,所以看起来他们已经决定放弃“版本”选项,除了我在SO上看到的所有示例以及他们的示例中包含这个“版本”选项。

版本对我来说并不重要,但这是一个已知的变化吗?

1 个答案:

答案 0 :(得分:29)

示例中的

2012-10-17是一个静态,常量,文字的日期表达式,指定了您的策略声明使用的IAM策略语言的版本 - 而不是您的策略声明的修订日期。

目前,您只能使用两种可能的值:2012-10-172008-10-17。如果您未指定,则表示您使用的旧版本功能较为有限。任何其他值表示不存在的IAM策略语言版本,并且由于该原因无效。

http://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Version