如何使用 CloudFormation 添加用户池的资源服务器?

Posted

技术标签:

【中文标题】如何使用 CloudFormation 添加用户池的资源服务器?【英文标题】:How to add the Resource Servers of an UserPool using CloudFormation? 【发布时间】:2018-12-21 08:08:41 【问题描述】:

如何使用 CloudFormation 在 AWS Cognito 中为用户池创建资源服务器?

在 CloudFormation 文档中,Cognito 下只有 5 项,我看不到如何配置 ResourceServer,这可能吗?

谢谢。

【问题讨论】:

恐怕不可能。我也找不到任何东西。我建议创建一个支持票并要求,以防他们的路线图上没有。 【参考方案1】:

现在可以使用 AWS::Cognito::UserPoolResourceServer 资源类型直接在 cloudformation 上。您无需创建自定义资源即可创建资源服务器。现在它由cloudformation支持。见https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolresourceserver.html 我尝试将我的自定义资源更新为 cloudformation 的,但由于某种原因,资源服务器不可更新。所以首先我必须删除一个变更集中的自定义资源并重新创建为AWS::Cognito::UserPoolResourceServer

【讨论】:

【参考方案2】:

CloudFormation 不支持资源服务器等项目。这是所有supported resources 的列表。

作为 CloudFormation 的替代方案,您可以使用 CLI or SDK to provision and manage a Resource Server。使用 SDK,您可以在 CloudFormation 中创建 Lambda-Backed Customer Resource。然后,您可以将资源服务器添加为 CloudFormation 中的自定义资源。

【讨论】:

【参考方案3】:

您可以使用this 通用自定义资源提供程序。

像这样使用它(未经测试,但应该几乎可以工作):

  ResourceServer:
    Type: 'Custom::CognitoResourceServer'
    Properties:
      ServiceToken: !Sub '$CustomResourceLambdaArn'
      AgentService: cognito-idp
      AgentType: client
      AgentCreateMethod: create_resource_server
      AgentUpdateMethod: update_resource_server
      AgentDeleteMethod: delete_resource_server
      AgentResourceId: Name
      AgentCreateArgs:
        UserPoolId: !Sub '$UserPool'
        Name: 'my-resource-server'
        Identifier: 'https://foo.bar'
        Scopes:
        - ScopeName: 'my-scope'
        - ScopeDescription: 'My scope.'
      AgentUpdateArgs:
        UserPoolId: !Sub '$UserPool'
        Name: 'my-resource-server'
        Identifier: 'https://foo.bar'
        Scopes:
        - ScopeName: 'my-scope'
        - ScopeDescription: 'My scope.'
      AgentDeleteArgs:
        Identifier: 'https://foo.bar'

APIreference.

【讨论】:

以上是关于如何使用 CloudFormation 添加用户池的资源服务器?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cognito 用户池通过 cloudformation 文件

不允许从 cloudformation 更新用户池架构

Cognito 用户池未调用 lambda 函数

CloudFormation 能否在构建堆栈后填充资源或依赖项?

配置 Cognito 用户池以使用 SES 发送电子邮件

Cloudformation Cognito - 如何通过 SAM 模板设置应用程序客户端设置、域和联合身份