【发布时间】:2019-12-15 15:11:01
【问题描述】:
使用无服务器框架创建 Cognito 用户池以及用于 TOPT SMS 授权期间的 cognito 事件的多个 lambda。一切都已创建,但 lambda 函数未在 Cognito 中注册。
相对较新的 Serverless jut 似乎无法让它们连接起来。尝试了池名称,因为其他人试图在创建结束时将其标记为已经存在,池在那里并且 lambda 在那里但没有连接。
目前正在关注另一篇文章,尝试将用户池更改为 CognitoUserPoolMyUserPool,然后在 lambda 中将其引用为 MyUserPool。还在这两个位置都尝试过 CognitoUserPool ,但都没有工作。
serverless.yaml 文件示例:
service: cognito-authentication
frameworkVersion: ">=1.1.0 <2.0.0"
package:
individually: false
plugins:
- serverless-bundle
custom:
stage: ${opt:stage, self:provider.stage}
poolName: ${self:custom.stage}-user-pool
provider:
name: aws
runtime: nodejs10.x
stage: dev
iamRoleStatements:
- Effect: Allow
Action:
- sns:*
Resource:
- "*"
functions:
preSignUp:
handler: functions/pre-signup.main
events:
- cognitoUserPool:
pool: MyUserPool
trigger: PreSignUp
defineAuthChallenge:
handler: functions/define-auth-challenge.main
events:
- cognitoUserPool:
pool: MyUserPool
trigger: DefineAuthChallenge
createAuthChallenge:
handler: functions/create-auth-challenge.main
events:
- cognitoUserPool:
pool: MyUserPool
trigger: CreateAuthChallenge
verifyAuthChallengeResponse:
handler: functions/verify-auth-challenge-response.main
events:
- cognitoUserPool:
pool: MyUserPool
trigger: VerifyAuthChallengeResponse
resources:
Resources:
CognitoUserPoolMyUserPool:
Type: "AWS::Cognito::UserPool"
Properties:
# Generate a name based on the stage
UserPoolName: ${self:custom.poolName}
# Set phone_number as an alias
UsernameAttributes:
- phone_number
Policies:
PasswordPolicy:
MinimumLength: 6
RequireLowercase: False
RequireNumbers: False
RequireSymbols: False
RequireUppercase: False
CognitoUserPoolClient:
Type: "AWS::Cognito::UserPoolClient"
Properties:
# Generate an app client name based on the stage
ClientName: ${self:custom.stage}-sms-auth-client
UserPoolId:
Ref: CognitoUserPoolMyUserPool
ExplicitAuthFlows:
- CUSTOM_AUTH_FLOW_ONLY
GenerateSecret: false
期望用户池已正确创建并配置为使用 lambda 来触发工作流执行。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cognito serverless-framework eventtrigger