繁体   English   中英

如何在 IAM 政策文档中使用 AWS CloudFormation 伪参数

[英]How to use AWS CloudFormation pseudoparameter inside IAM Policy Document

我正在使用 AWS CloudFormation(基于 YAML)来部署 IAM 角色。 应该允许此角色部署其他 CloudFormation 资源,并拥有作为受信任实体部署到的 AWS 账户的根。 我正在尝试使用内置伪参数AWS::AccountId提供帐户 ID: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html#cfn-伪参数 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 堆栈中的Invalid principal (在 AWS 管理控制台中的Events下),这会导致MalformedPolicyDocument错误:

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 等变量使用内部函数!Sub

AWS: !Sub arn:aws:iam::${AWS::AccountId}:root

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM