创建IAM角色遇MalformedPolicyDocument错误:存在禁止字段Resource
问题原因及解决方法
你犯了一个常见的IAM概念混淆错误:
aws iam create-role命令的--assume-role-policy-document参数对应的是IAM角色的信任策略,而非权限策略。- 信任策略的作用是定义「哪些实体可以扮演这个角色」,它的语法规则里不允许出现
Resource字段,你把用于授权Route53操作的权限策略内容直接填进去了,所以触发了MalformedPolicyDocument错误。
解决步骤
创建正确的信任策略文件(比如命名为
trust-policy.json)
根据你的使用场景填写内容,比如如果是让EC2实例角色能扮演该角色,内容如下:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }如果你是在EKS集群中使用ExternalDNS,需要替换为对应集群的OIDC身份提供者作为Principal。
使用信任策略创建IAM角色
执行以下命令:aws iam create-role --role-name externaldns --assume-role-policy-document file://trust-policy.json将Route53权限策略附加到角色上
用你原来的external_dns.json文件(带Route53权限的策略),执行命令将其作为内联策略附加到角色:aws iam put-role-policy --role-name externaldns --policy-name externaldns-route53 --policy-document file://external_dns.json
内容的提问来源于stack exchange,提问作者0xsegfault
相关产品推荐
相关产品推荐

