如何解决如何在 IAM 策略文档中使用 AWS CloudFormation 伪参数
我正在使用 AWS CloudFormation(基于 YAML)来部署 IAM 角色。应允许此角色部署其他 CloudFormation 资源,并将其作为受信任实体部署到的 AWS 账户的根。
我正在尝试使用内置伪参数 AWS::AccountId
提供帐户 ID:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html#cfn-pseudo-param-accountid .
这是我按照官方文档尝试过的:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html(仅显示我的 CFN 模板的 resources
部分):
Resources:
IAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: ["sts:AssumeRole"]
Effect: Allow
Principal:
Service: [cloudformation.amazonaws.com]
AWS: arn:aws:iam::AWS::AccountId:root # <-- ERROR HERE !
由于 CloudFormation 堆栈中的 MalformedPolicyDocument
(在 AWS 管理控制台中的 Invalid principal
下)导致 Events
错误:
Invalid principal in policy: "AWS":"arn:aws:iam::AWS::AccountId:root" (Service: AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument
我尝试改变 AWS
Principal 值的语法:
- 带引号和不带引号
- 带和不带方括号
校长的错误在哪里,如何改正?
解决方法
我们需要对 AWS::Region、AWS::AccountId、AWS::StackName 等变量使用 Intrinsic functions !Sub
AWS: !Sub arn:aws:iam::${AWS::AccountId}:root
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。