将 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 代替。