【问题标题】:How to set a dynamic RoleMappings key for a IndentityPoolRoleAttachment in CloudFormation如何在 CloudFormation 中为 IndentityPoolRoleAttachment 设置动态 RoleMappings 键
【发布时间】:2017-12-19 19:54:30
【问题描述】:

我正在构建一个堆栈来初始化Cognito 安装。作为其中的一部分,我设置了具有相关角色的用户组。我需要设置Choose role from token 选项,允许身份使用他们所分配到的组中的角色。

这是通过IndentityPoolRoleAttachment 对象中的RoleMappings 对象完成的。此映射对象是一个string -> object 映射,其中字符串表示身份提供者。就我而言,这是:

cognito-idp.${some-region}.amazonaws.com/${some-userpool-id}:${some-pool-client-id}

显然,这需要根据堆栈中的值动态构建,但我还没有找到以语法正确的方式执行此操作的方法。使用RefFn::Sub 都会导致语法错误。 yaml 和 json 语法我都试过了。

我是否遗漏了一些明显的东西?

【问题讨论】:

  • 这似乎是不可能的。 this thread 有一个解决方案。
  • 对于那些想知道的人,提到的线程聚集了许多面临相同问题的用户,并提供了使用自定义 lambda 资源的解决方案。 AWS 尚未解决此问题...

标签: json amazon-web-services amazon-cloudformation amazon-cognito


【解决方案1】:

最近被这个问题困住了,我从@AkkarinZA 的评论访问了the thread

在那个帖子中,@mikef 的回复对我有用。我们可以使用cognitoProvider 键。

RoleMappings:
     cognitoProvider:
       IdentityProvider: 
        Fn::Join:
          - ''
          - - "cognito-idp.${self:provider.region}.amazonaws.com/"
            - !Ref CustomerUserPool
            - ':'
            - !Ref CustomerUserPoolClient
       AmbiguousRoleResolution: Deny
       Type: Rules
       RulesConfiguration:
          Rules:
            - Claim: cognito:groups
              MatchType: Contains
              Value: "clients"
              RoleARN:
                { Fn::GetAtt: [UserIdentityPoolClientRole, Arn] }

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 2023-03-25
    • 2011-04-11
    • 2022-06-15
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多