我想提供对我桶中所有文件的公共访问权限。包括这个流行的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上看到的所有示例以及他们的示例中包含这个“版本”选项。
版本对我来说并不重要,但这是一个已知的变化吗?
答案 0 :(得分:29)
2012-10-17
是一个静态,常量,文字的日期表达式,指定了您的策略声明使用的IAM策略语言的版本 - 而不是您的策略声明的修订日期。
目前,您只能使用两种可能的值:2012-10-17
和2008-10-17
。如果您未指定,则表示您使用的旧版本功能较为有限。任何其他值表示不存在的IAM策略语言版本,并且由于该原因无效。