将 put-group-policy 与 cli-input-json 一起使用时出错
Error using put-group-policy with cli-input-json
我正在尝试通过使用 cli-input-json 提供 json 作为 cli 命令的输入来为组创建策略。
命令是
aws iam put-group-policy --cli-input-json file://D:\json\demo\json
grpPolicy_testpolicy1.json
给出以下错误
A client error (MalformedPolicyDocument) occurred when calling the PutGroupPolicy operation: The policy is not in the valid JSON format.
位于 D:\json\demo\json 的 json 文件的内容
grpPolicy_testpolicy1.json 是
{
"GroupName": "testgroup11",
"PolicyName": "testpolicy11",
"PolicyDocument": "file://D:\json\policypermission.txt"
}
D:\json\中策略文档文件的内容
policypermission.txt 是
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "uploadandgetfromS3",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:CreateObject",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:PutBucketAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"rds:DescribeDBLogFiles",
"rds:DownloadDbLogFilePortion"
],
"Resource": "*"
}
]
}
我已经验证了所有 json 文件 json 的有效性,aws cli 仍然说策略文件格式错误。
我还使用普通的 cli 命令创建并附加了上述策略,以确认策略文档的有效性并且工作正常。
{
"GroupName": "testgroup11",
"PolicyName": "testpolicy11",
"PolicyDocument": "file://D:\json\policypermission.txt"
}
虽然这在概念上有意义,但我认为 AWS Command Line Interface (AWS CLI) 不支持 inline/nested 对 URL 的引用,例如 file://
,而只是作为命令行参数,例如:
aws iam put-group-policy --cli-input-json file://D:\json\demo\json \
grpPolicy_testpolicy1.json --policy-document file://D:\json\policypermission.txt
这是可行的,因为命令行参数优先于指定为 CLI Input JSON Parameters 的参数。但是,一旦您未指定覆盖 --policy-document
,JSON 解析器就会越过内联 PolicyDocument
元素,它期望内联 JSON 对象但遇到 URL file://D:\json\policypermission.txt
代替。
我正在尝试通过使用 cli-input-json 提供 json 作为 cli 命令的输入来为组创建策略。 命令是
aws iam put-group-policy --cli-input-json file://D:\json\demo\json
grpPolicy_testpolicy1.json
给出以下错误
A client error (MalformedPolicyDocument) occurred when calling the PutGroupPolicy operation: The policy is not in the valid JSON format.
位于 D:\json\demo\json 的 json 文件的内容 grpPolicy_testpolicy1.json 是
{
"GroupName": "testgroup11",
"PolicyName": "testpolicy11",
"PolicyDocument": "file://D:\json\policypermission.txt"
}
D:\json\中策略文档文件的内容 policypermission.txt 是
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "uploadandgetfromS3",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:CreateObject",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:PutBucketAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"rds:DescribeDBLogFiles",
"rds:DownloadDbLogFilePortion"
],
"Resource": "*"
}
]
}
我已经验证了所有 json 文件 json 的有效性,aws cli 仍然说策略文件格式错误。 我还使用普通的 cli 命令创建并附加了上述策略,以确认策略文档的有效性并且工作正常。
{
"GroupName": "testgroup11",
"PolicyName": "testpolicy11",
"PolicyDocument": "file://D:\json\policypermission.txt"
}
虽然这在概念上有意义,但我认为 AWS Command Line Interface (AWS CLI) 不支持 inline/nested 对 URL 的引用,例如 file://
,而只是作为命令行参数,例如:
aws iam put-group-policy --cli-input-json file://D:\json\demo\json \
grpPolicy_testpolicy1.json --policy-document file://D:\json\policypermission.txt
这是可行的,因为命令行参数优先于指定为 CLI Input JSON Parameters 的参数。但是,一旦您未指定覆盖 --policy-document
,JSON 解析器就会越过内联 PolicyDocument
元素,它期望内联 JSON 对象但遇到 URL file://D:\json\policypermission.txt
代替。