无法使用 boto3 创建策略
Posted
技术标签:
【中文标题】无法使用 boto3 创建策略【英文标题】:Unable to create Policy using boto3 【发布时间】:2019-08-09 16:12:28 【问题描述】:我正在尝试使用 boto3 创建 aws-dynamodb 策略。我每次都遇到同样的错误。请帮忙。我按照https://github.com/awsdocs/aws-doc-sdk-examples/blob/0edf8c7a52a77e405b71931bd9cee9c06f84368c/python/example_code/iam/create_policy.py 和https://boto3.amazonaws.com/v1/documentation/api/latest/guide/iam-example-policies.html 中提到的那样关注
我尝试使用命令提示符和 jupyter 都给我同样的错误。
import json
import boto3
dev = boto3.session.Session(profile_name='xyz')
iam = dev.client('iam')
my_managed_policy =
"Version": "2019-08-08",
"Statement": [
"Sid":"myTableAllActions",
"Effect":"Allow",
"Action":"dynamodb:*",
"Resource":"arn:aws:dynamodb:*:*:table/myTable"
]
try:
response = iam.create_policy(PolicyName='myTableDynamoDBPolicy',
PolicyDocument=json.dumps(my_managed_policy))
print(response)
except Exception as err:
print(str(err))
print("\n")
print(traceback.format_exc())
“我希望创建策略(我拥有所有管理员权限)。我能够对表执行插入/更新操作。但是,在创建策略时,我收到此错误”
“调用 CreatePolicy 操作时发生错误(MalformedPolicyDocument):策略中的语法错误。
Traceback (most recent call last):
File "<ipython-input-388-d2afcb29d5da>", line 21, in <module>
PolicyDocument=json.dumps(my_managed_policy))
File "/Users/dthomas/anaconda3/envs/pytf36/lib/python3.6/site-packages/botocore/client.py", line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/Users/dthomas/anaconda3/envs/pytf36/lib/python3.6/site-packages/botocore/client.py", line 661, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.MalformedPolicyDocumentException: An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy."
【问题讨论】:
【参考方案1】:您的版本字符串"2019-08-08"
无效。有效值为“2008-10-17”和“2012-10-17”。
我对此进行调试的方式是尝试使用您的策略文档在 IAM 控制台中创建新的 IAM 策略。它立即告诉我问题出在哪里:
此政策包含以下错误:政策必须包含 有效的版本字符串。
有关 IAM 政策的更多信息 语法,请参阅 AWS IAM 策略。
【讨论】:
以上是关于无法使用 boto3 创建策略的主要内容,如果未能解决你的问题,请参考以下文章