使用 CloudFormation 创建 IdentityPool
Posted
技术标签:
【中文标题】使用 CloudFormation 创建 IdentityPool【英文标题】:IdentityPool Creation with CloudFormation 【发布时间】:2017-12-15 14:18:48 【问题描述】:我正在尝试按照位于 http://serverless-stack.com/chapters/create-a-cognito-identity-pool.html 的教程进行身份池创建,并使用 cloudformation 记录创建过程,以便在完成后轻松撤消所有操作。但是,我很难找到任何示例来展示如何使用模板语法有效地做到这一点。我目前拥有的是以下
ScratchUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: notes-user-pool
ScratchUserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
ClientName: notes-client
ExplicitAuthFlows: [ADMIN_NO_SRP_AUTH]
UserPoolId:
Ref: ScratchUserPool
ScratchIdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
IdentityPoolName: ScratchIdentityPool
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId:
Ref: ScratchUserPoolClient
ProviderName:
Ref: ScratchUserPool
部署步骤在尝试创建 ScratchIdentityPool
时失败。我收到一条错误消息:
配置堆栈时出错:ScratchIdentityPool - 无效的 Cognito 身份提供商(服务:AmazonCognitoIdentity; 状态码:400;错误代码:无效参数异常;请求编号: bc058020-663b-11e7-9f2a-XXXXXXXXXX)
我没有正确引用客户或提供商名称吗?
【问题讨论】:
【参考方案1】:几乎在我发布我的问题后,我想我能够回答它。我的身份池的问题是我需要通过以下方式引用提供者名称:
ScratchIdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
IdentityPoolName: ScratchIdentityPool
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId:
Ref: ScratchUserPoolClient
ProviderName:
Fn::GetAtt: [ScratchUserPool, ProviderName]
我需要使用特殊的亚马逊功能Fn::GetAtt
才能使其工作。
【讨论】:
也可能是必要的:DependsOn: ScratchUserPoolClient
。在没有它的情况下失败并出现同样的错误。以上是关于使用 CloudFormation 创建 IdentityPool的主要内容,如果未能解决你的问题,请参考以下文章
使用 CloudFormation 创建 IdentityPool
如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板
标记使用 cloudformation 创建的 Beanstalk 环境
如何使用 CloudFormation 创建 OpsWorks 用户?