我有两个 lambda 函数,其中 test1
会调用 test2
。我希望以“点火就走”的心态异步调用 test2
。
以下是这两个 lambda 函数的代码。当我将 InvocationType
设置为 RequestResponse
时,函数会被调用并在 CloudWatch 中记录日志。但是当我将 InvocationType
改为 Event
时,在 CloudWatch 中没有记录表明该函数被调用了。
test1:
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
exports.handler = async (event) => {
const params = {
'FunctionName': 'test2',
'InvocationType': 'Event',
'Payload': JSON.stringify('Hello')
};
const response = await lambda.invoke(params).promise();
return response;
};
测试2:
exports.handler = async (event) => {
console.log(event);
return 'Success';
};
IAM策略包括调用权限(否则
RequestResponse
类型也无法工作)。 我还阅读了有关传递参数的大小限制,但在这种情况下,我只传递“Hello”......是什么原因呢?编辑:我还应该补充说明,在每种情况下,我都会收到202个响应代码,这表示成功调用,但我在日志中看不到执行函数的任何迹象。
编辑2:我已将
await
添加到test1
的末尾,但仍然没有看到CloudWatch中调用test2的任何迹象。
invokeAsync
吗? - Thales MinussiinvokeAsync
会导致相同的行为 - 没有 CloudWatch 日志。 - Wuubbawait
等待 Promise 吗?await lambda.invoke(params).promise()
- Thales Minussi