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 别名

AWS re:Invent 2017 Serverless 回顾

AWS - Serverless 和 lambda