微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在侦听认知 PreSignUp 事件的不同微服务中执行多个 lambda?

如何解决如何在侦听认知 PreSignUp 事件的不同微服务中执行多个 lambda?

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

解决方法

对于以下任何内容,请确保不要超过 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',Payload: Buffer.from(JSON.stringify(<DATA HERE>))
    }).promise()
])
  1. 设置一个触发器 lambda,它只是对每个需要触发的微服务端点进行 API 调用

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

// 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。