直到最近,我在一个微服务中有一个 lambda,它由 cognito PreSignUp 事件触发。现在我需要在另一个微服务中运行另一个,但是自从我把它放进去之后,只有一个真正运行。我必须做些什么才能使用相同的触发事件执行这两个,甚至更多的 lambda?
问问题
95 次
1 回答
0
对于以下任何情况,请确保所用时间不超过 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 文档)
// 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 回答