小编jax*_*uru的帖子

如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件

我正在为我将通过 STS 承担的 IAM 角色编写 CloudFormation 模板。我需要添加一个条件,其中键等于值,其中键和值都取决于“阶段”参数。我已经能够根据参数以编程方式更改值,但是我基于 Stage 更改密钥的所有尝试都失败了。

我已经尝试使用地图和 !FindInMap 来获取正确的密钥,并尝试使用 !If 构建两种情况下的条件。

在第一种情况...

Mappings:
  Constants:
    beta:
      Id: "beta.example.com"
      Endpoint: "beta-link.example.com/api/oauth2/v2:aud"
    prod:
      Id: "example.com"
      Endpoint: "link.example.com/api/oauth2/v2:aud"

AssumeRolePolicyDocument:
  Statement:
    Action:
      - "sts:AssumeRoleWithWebIdentity"
    Condition:
      StringEquals:
        !FindInMap [Constants, !Ref Stage, Endpoint]:
          - !FindInMap [Constants, !Ref Stage, Id]
Run Code Online (Sandbox Code Playgroud)

...我有一个错误: map keys must be strings; received a map instead

在第二种情况...

AssumeRolePolicyDocument:
  Statement:
    Action:
      - "sts:AssumeRoleWithWebIdentity"
    Condition:
      !If
        - !Equals [!Ref Stage, prod]
        - StringEquals:
          "link.example.com/api/oauth2/v2:aud": "example.com"
        - StringEquals:
          "beta-link.example.com/api/oauth2/v2:aud": "beta.example.com"
Run Code Online (Sandbox Code Playgroud)

...我有另一个错误: Template format error: …

yaml aws-cloudformation amazon-iam openid-connect

7
推荐指数
2
解决办法
4629
查看次数