0

直到最近,我在一个微服务中有一个 lambda,它由 cognito PreSignUp 事件触发。现在我需要在另一个微服务中运行另一个,但是自从我把它放进去之后,只有一个真正运行。我必须做些什么才能使用相同的触发事件执行这两个,甚至更多的 lambda?

4

1 回答 1

0

对于以下任何情况,请确保所用时间不超过 5 秒,否则 Cognito 将超时并再次尝试调用最多 3 次。

  1. 有一个 Cognito 触发器 lambda 调用多个其他子 lambda,使用invoke()
const lambda = new AWS.Lambda({region: 'us-east-1', apiVersion: '2015-03-31'})

await Promise.all([
  lambda.invoke({
      FunctionName: 'ChildLambda1',
      InvocationType: 'Event',
      LogType: 'None',
      Payload: Buffer.from(JSON.stringify(<DATA HERE>))
    }).promise(),
  lambda.invoke({
      FunctionName: 'ChildLambda2',
      InvocationType: 'Event',
      LogType: 'None',
      Payload: Buffer.from(JSON.stringify(<DATA HERE>))
    }).promise()
])
  1. 设置一个触发器 lambda,它只对需要触发的每个微服务端点进行 API 调用

  2. 让每个子 lambda 订阅一个 SNS 主题并让 Cognito 触发器 lambda 向所述主题发送消息(AWS 文档

// SNS subscriptions to "Cognito_PreSignUp" topic are configured in AWS console

// Send message from Cognito trigger lambda
const sns = new AWS.SNS({apiVersion: '2010-03-31'})

await sns.publish({
  Message: JSON.stringify(<DATA HERE>),
  TopicArn: 'Cognito_PreSignUp'
}).promise()
于 2021-05-31T20:49:22.390 回答