运行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": "*"
}
]
}
答案 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)