我是AWS的新手/学习者,目前使用LocalStack
代替实时AWS
。
arn:aws:s3:::my-bucket/path/to/foo.json
是指向新创建的S3
存储桶中的对象的有效S3
键。由于存储桶是新创建的并且是原始的(除了上传一个文件之外),因此无法从外部访问其中的任何文件。我正在尝试通过示例来学习创建{@ 1}}存储桶中的部分内容的策略,以了解IAM
。
我根据S3
CLI参考中的this example创建了以下策略文件:
AWS
在相同的链接示例中,我尝试使用此命令创建策略,但失败了:
$ cat ./policy
{
"Version": "2020-04-27",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::my-bucket/path/to/foo.json"
]
}
]
}
此命令为什么失败,或者有什么方法可以获取更具描述性的错误消息?
({$ aws --endpoint-url=http://localhost:4593 iam create-policy --policy-name my-bucket-policy --policy-document file://policy
An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.
是policy
中执行cwd
CLI命令的文件)
根据我的阅读,错误消息表示JSON格式错误,但是类似https://jsonlint.com/的短绒表示文本是有效的JSON。此外,源示例中的更改很小,并且看起来很合理:aws
更改为今天的日期,而"Version"
"Resource"
更改为与我相关的内容。
答案 0 :(得分:3)
给出的版本不正确。应该是:“ 2012-10-17”
编辑:原则错误。看评论。对于基于资源的策略,原则是required:
主体(仅在某些情况下需要)–如果您创建基于资源的策略,则必须指明要使用的帐户,用户,角色或联盟用户您想允许还是拒绝访问。如果要创建 IAM权限策略以附加到用户或角色,则不能包含该元素。委托人隐含为该用户或角色。