put_role_policyするとMalformedPolicyDocumentExceptionが発生した
pythonでRoleのpolicyを設定使用としたところ以下のエラーが発生して小一時間ハマりました。
botocore.errorfactory.MalformedPolicyDocumentException: An error occurred (MalformedPolicyDocument) when calling the PutRolePolicy operation: The policy failed legacy parsing
使用したプログラムは次のようなものです。
# 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
)
原因
どうやらヒアドキュメントの1行目が改行になってしまっていることが原因のようでした。
以下のようにpolicyの設定行を変更したところ正常に設定できるようになりました。
policy = '''{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
'''
Author And Source
この問題について(put_role_policyするとMalformedPolicyDocumentExceptionが発生した), 我々は、より多くの情報をここで見つけました https://qiita.com/sekitaka_1214/items/18ce94bc54d6ea6d95ad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .