我正在尝试按照位于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;错误代码:InvalidParameterException;请求ID: bc058020-663b-11e7-9f2a-XXXXXXXXXX)
我没有正确引用客户端或提供商名称吗?
答案 0 :(得分:6)
在我发布问题后几乎立即,我想我能够回答它。我的身份池的问题是我需要以下列方式引用提供者名称:
ScratchIdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
IdentityPoolName: ScratchIdentityPool
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId:
Ref: ScratchUserPoolClient
ProviderName:
Fn::GetAtt: [ScratchUserPool, ProviderName]
我需要使用特殊的亚马逊函数Fn::GetAtt
才能使其正常工作。