【问题标题】:AWS Boto3 Syntax errors in policy策略中的 AWS Boto3 语法错误
【发布时间】:2020-05-18 23:25:17
【问题描述】:

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

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": "*"
        }
    ]
}

【问题讨论】:

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


    【解决方案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()
        )
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-11-26
        • 2020-09-13
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        相关资源
        最近更新 更多