如何在侦听 cognito PreSignUp 事件的不同微服务中执行多个 lambda?
How to execute more than one lambda in different microservices listening for the cognito PreSignUp event?
直到最近,我在一个微服务中有一个 lambda,它通过 cognito PreSignUp 事件触发。现在我需要在另一个微服务中 运行 另一个,但自从我把它放进去后,真的只有一个 运行 了。我需要做什么才能使用相同的触发事件执行两个甚至更多的 lambda?
对于以下任何内容,请确保不要超过 5 秒,否则 Cognito 将超时并重试调用最多 3 次。
- 有一个 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()
])
设置一个触发器 lambda,它只需 API 调用需要触发的每个微服务端点
让每个子 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()
直到最近,我在一个微服务中有一个 lambda,它通过 cognito PreSignUp 事件触发。现在我需要在另一个微服务中 运行 另一个,但自从我把它放进去后,真的只有一个 运行 了。我需要做什么才能使用相同的触发事件执行两个甚至更多的 lambda?
对于以下任何内容,请确保不要超过 5 秒,否则 Cognito 将超时并重试调用最多 3 次。
- 有一个 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()
])
设置一个触发器 lambda,它只需 API 调用需要触发的每个微服务端点
让每个子 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()