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

MxL*_*evs 14 amazon-s3 amazon-web-services

我想提供对我桶中所有文件的公共访问.几个SO答案,包括这个流行的一个表示,我要创建一个策略.

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

Document is invalid: Invalid Version 2014-05-02 - undefined
Run Code Online (Sandbox Code Playgroud)

我去看了一下文档(注意它说的是"最新的"),给出的例子是

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

我接受了,更新了资源名称,并再次尝试.仍然无法正常工作:版本不存在.

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

{
  "Id": "Policy1399047197120",
  "Statement": [
    {
      "Sid": "Stmt1399047194777",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucketname/*",
      "Principal": {
        "AWS": [
          "AWS"
        ]
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*bot 29

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

这里只有两个可能的值,就像现在一样:2012-10-172008-10-17.如果您未指定,则假定您使用的旧版本功能更为有限.任何其他值表示不存在的IAM策略语言版本,并且由于该原因无效.

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