如何使用 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 文件