使用boto3创建跨账号IAM角色时遇MalformedPolicyDocument错误排查
问题原因分析
导致MalformedPolicyDocumentException错误的核心原因及次要可能因素如下:
错误使用
json.dumps()处理策略字符串
你的trust_role变量本身已经是符合JSON格式的字符串,但调用create_role时额外使用json.dumps(trust_role)进行序列化,会把原JSON字符串转义成嵌套的字符串格式(例如变成"{\n\"Version\":\"2012-10-17\",...}"),IAM服务接收到的不再是有效的JSON对象,直接触发格式错误。修正方式:直接传入
trust_role字符串即可,无需json.dumps()处理:iam = boto3.client("iam") response_acct=iam.create_role( RoleName="CrossAccountLambdaRole", AssumeRolePolicyDocument=trust_role)占位符未替换(次要可能)
如果<management_account_id>未替换为实际的管理账号数字ID(如123456789012),生成的ARN格式无效,也可能导致策略文档校验失败,需确保占位符已替换为真实账号ID。
内容的提问来源于stack exchange,提问作者GdsChld
相关产品推荐
相关产品推荐

