策略中的AWS Boto3语法错误

时间:2020-05-18 23:25:17

标签: python-3.x amazon-web-services boto3

运行boto3到create_policy命令时,我收到格式错误的语法错误,但是我没有在AWS控制台中收到错误。我尝试使用AWS Console的“策略编辑器”进行调试,然后单击“验证”按钮,它会创建策略“无错误”。有人知道我在做什么错吗?

iam_client.create_policy(PolicyName='xxxxx-policy',
                                               PolicyDocument=json.dumps(dir_name + 'xxxxx-policy.json'))

此策略包含以下错误: botocore.errorfactory.MalformedPolicyDocumentException:调用CreatePolicy操作时发生错误(MalformedPolicyDocument):策略中的语法错误。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "iam:ListRoles",
                "sts:AssumeRole"
            ],
            "Resource": "*"
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

json.dumps将Python字典转换为JSON字符串。输入的内容不应是文件名。实际上,您不需要json包即可。

import boto3

with open('xxx-policy.json', 'r') as fp:
    iam_client = boto3.client('iam')
    iam_client.create_policy(
        PolicyName='xxx-policy',
        PolicyDocument=fp.read()
    )

答案 1 :(得分:1)

您正在从文件中读取文档:

 with open(dir_name + 'xxxxx-policy.json', 'r') as f: 
     policy_document = f.read() 

 iam_client.create_policy(
         PolicyName='xxxxx-policy',
         PolicyDocument=policy_document)