AWS + Serverless - 如何获取 cognito 用户池生成的密钥
Posted
技术标签:
【中文标题】AWS + Serverless - 如何获取 cognito 用户池生成的密钥【英文标题】:AWS + Serverless - how to get at the secret key generated by cognito user pool 【发布时间】:2019-05-26 19:43:20 【问题描述】:我一直在关注https://serverless-stack.com/chapters/configure-cognito-user-pool-in-serverless.html 的无服务器教程
我有以下无服务器 yaml 代码段
Resources:
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
# Generate a name based on the stage
UserPoolName: $self:custom.stage-moochless-user-pool
# Set email as an alias
UsernameAttributes:
- email
AutoVerifiedAttributes:
- email
CognitoUserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
# Generate an app client name based on the stage
ClientName: $self:custom.stage-user-pool-client
UserPoolId:
Ref: CognitoUserPool
ExplicitAuthFlows:
- ADMIN_NO_SRP_AUTH
# >>>>> HOW DO I GET THIS VALUE IN OUTPUT <<<<<
GenerateSecret: true
# Print out the Id of the User Pool that is created
Outputs:
UserPoolId:
Value:
Ref: CognitoUserPool
UserPoolClientId:
Value:
Ref: CognitoUserPoolClient
#UserPoolSecret:
# WHAT GOES HERE?
我将所有其他配置变量导出到一个 json 文件(供移动应用程序使用,因此我需要密钥)。
如何让生成的密钥出现在我的输出列表中?
【问题讨论】:
【参考方案1】:检索密钥的理想方法是在您的 cloudformation 模板中使用“CognitoUserPoolClient.ClientSecret”。
UserPoolClientIdSecret:
Value:
!GetAtt CognitoUserPoolClient.ClientSecret
但它不受支持,如here 所解释,并给出如图所示的消息: 您可以运行下面的 CLI 命令来检索密钥作为解决方法:
aws cognito-idp describe-user-pool-client --user-pool-id "us-west-XXXXXX" --region us-west-2 --client-id "XXXXXXXXXXXXX" --query 'UserPoolClient.ClientSecret' --output text
【讨论】:
以上是关于AWS + Serverless - 如何获取 cognito 用户池生成的密钥的主要内容,如果未能解决你的问题,请参考以下文章
如何在 serverless.yml 文件中获取 AccountId 作为变量?
我们如何使用 serverless.yml 创建 AWS S3 存储桶并向其中添加文件?
来玩 Serverless: 如何把 Express 应用迁移到 Amazon API 网关和 AWS Lambda 上
在定义单个 AWS::Serverless::Function 的 SAM 模板中指定多个 API 阶段和 Lambda 别名