Als ich die Richtlinie von Role in Python festlegte und verwendete, trat der folgende Fehler auf und ich war eine Stunde lang davon abhängig.
botocore.errorfactory.MalformedPolicyDocumentException: An error occurred (MalformedPolicyDocument) when calling the PutRolePolicy operation: The policy failed legacy parsing
Das verwendete Programm ist wie folgt.
# coding:utf-8
# !/usr/bin/python
import boto3
iamClient = boto3.client('iam')
policy = '''
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
'''
iamClient.put_role_policy(
RoleName='MyRole',
PolicyName='Policy_Of_MyRole',
PolicyDocument=policy
)
Anscheinend war die Ursache, dass die erste Zeile des hier gezeigten Dokuments einen Zeilenumbruch hatte. Nachdem Sie die Richtlinieneinstellungszeile wie unten gezeigt geändert haben, kann sie normal eingestellt werden.
policy = '''{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
'''