簡體   English   中英

Cognito 從 Pre Sign-up Lambda 觸發器發送什么樣的事件

[英]What kind of event does Cognito send from Pre Sign-up Lambda Trigger

我創建了一個PreSignup Lambda function 與 Cognito Pre-SignUp 觸發器一起使用,代碼如下:

import { APIGatewayEventDefaultAuthorizerContext, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';

export async function PreSignup(event: any, context: APIGatewayEventDefaultAuthorizerContext,) {
  console.log("...event:", event);
  console.log("...context:", context);

  let userName = event.userName;
  let email = event.request.userAttributes.email;

  console.log("...userName:", userName);
  console.log("...email:", email);

  // Confirming the event so Cogntio doesnt resend it again:
  event.response.autoConfirmUser = true;
  event.response.autoVerifyPhone = true;
  event.response.autoVerifyEmail = true;
  return event;
}

與其使用function PreSignup(event: any)event設置為any ,我寧願指定事件的類型。

我試圖將其指定為APIGatewayProxyEvent ,如下所示:

function PreSignup(event: APIGatewayProxyEvent, context: APIGatewayEventDefaultAuthorizerContext,) {...}

但它不起作用,因為 Cognito 預注冊觸發器發送的event不是APIGatewayProxyEvent類型。 這是什么活動?

后來編輯:

以下是 Cognito PreSignUp Trigger 推送的復制/粘貼事件:

{
  version: '1',
  region: 'us-east-1',
  userPoolId: 'us-east-1_abcdef',
  userName: 'emailf@address.com',
  callerContext: {
    awsSdkVersion: 'aws-sdk-nodejs-2.799.0',
    clientId: 'CLIENT_ID_NOT_APPLICABLE'
  },
  triggerSource: 'PreSignUp_AdminCreateUser',
  request: {
    userAttributes: { email: 'emailf@address.com' },
    validationData: null
  },
  response: {
    autoConfirmUser: false,
    autoVerifyEmail: false,
    autoVerifyPhone: false
  }
}

下面是AWS EventBridge這次推送的另一個 AWS 事件的示例(類似於 Cognito Trigger 推送的事件):

{
  version: '0',
  id: '0ee136cb-ea53-f9e0-a6a9-232dfb78b7d0',
  'detail-type': 'UserCreated',
  source: 'my.company.endpointname',
  account: '123456789012',
  time: '2021-01-29T03:05:54Z',
  region: 'us-east-1',
  resources: [],
  detail: { foo: 'bar', createdAt: 1611889553709 }
}

PreSignUp_SignUp :您的標准 Cognito 池(用戶名/密碼)注冊

PreSignUp_AdminCreateUser :當使用管理員方法創建用戶時(要清楚,不是在您創建管理員時,而是當您是管理員時創建不同的用戶)。

PreSignUp_ExternalProvider :如果您有第三方注冊,例如 Google 或 facebook

{
   "version":"1",
   "region":"us-east-1",
   "userPoolId":"us-east-1_xxxxxxx",
   "userName":"2d4eb80f-7998-xxxx-xxxx-xxxxxxxxxx",
   "callerContext":{
      "awsSdkVersion":"aws-sdk-unknown-unknown",
      "clientId":"xxxxxxxxxxxxxxxxxxxxxxxxxx"
   },
   "triggerSource":"PreSignUp_SignUp",
   "request":{
      "userAttributes":{
         "email":"xxxxxxxxxxxxxxx@gmail.com"
      },
      "validationData":null
   },
   "response":{
      "autoConfirmUser":false,
      "autoVerifyEmail":false,
      "autoVerifyPhone":false
   }
}
{
   "version":"1",
   "region":"us-east-1",
   "userPoolId":"us-east-1_xxxxxxxxxxx",
   "userName":"efce8c11-e0ff-4400-xxxx-xxxxxxxxxx",
   "callerContext":{
      "awsSdkVersion":"aws-sdk-java-1.11.856",
      "clientId":"CLIENT_ID_NOT_APPLICABLE"
   },
   "triggerSource":"PreSignUp_AdminCreateUser",
   "request":{
      "userAttributes":{
         "email_verified":"true",
         "email":"xxxxxx@xxxxxxx.com"
      },
      "validationData":null
   },
   "response":{
      "autoConfirmUser":false,
      "autoVerifyEmail":false,
      "autoVerifyPhone":false
   }
}
{
   "version":"1",
   "region":"us-east-1",
   "userPoolId":"us-east-1_xxxxxx",
   "userName":"Google_xxxxxxxxxxxxxxxxxxxxx",
   "callerContext":{
      "awsSdkVersion":"aws-sdk-unknown-unknown",
      "clientId":"xxxxxxxxxxxxxxxxxxxxxxxxxx"
   },
   "triggerSource":"PreSignUp_ExternalProvider",
   "request":{
      "userAttributes":{
         "email_verified":"false",
         "cognito:email_alias":"",
         "cognito:phone_number_alias":"",
         "email":"xxxxxx@xxxxxx.com"
      },
      "validationData":{
         
      }
   },
   "response":{
      "autoConfirmUser":false,
      "autoVerifyEmail":false,
      "autoVerifyPhone":false
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM