如何使用Javascript(TypeScript)aws-sdk v3调用lambda函数?
我使用了以下代码,但似乎不起作用:
// the payload (input) to the "my-lambda-func" is a JSON as follows:
const input = {
name: 'fake-name',
serial: 'fake-serial',
userId: 'fake-user-id'
};
// Payload of InvokeCommandInput is of type Uint8Array
const params: InvokeCommandInput = {
FunctionName: 'my-lambda-func-name',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: input as unknown as Uint8Array, // <---- payload is of type Uint8Array
};
console.log('params: ', params); // <---- so far so good.
const result = await lambda.invoke(params);
console.log('result: ', result); // <---- it never gets to this line for some reason.
我在CloudWatch中看到此错误消息,不确定它是否与我的问题相关:
第一个参数的类型必须为string或Buffer、ArrayBuffer或Array的示例或类似于Array的Object。收到Object的示例
问题:
上面调用lambda函数的代码正确吗?或者有更好的方法吗?
2条答案
按热度按时间sqougxex1#
看起来您对
lambda.invoke()
的调用抛出了TypeError,因为您传递给它的有效负载是一个对象,而它需要是一个Uint8Array缓冲区。您可以按如下方式修改代码以传递有效负载:
dffbzjpn2#
作为上例的替代方法,您可以避免使用额外的AWS库,而使用内置的Node函数代替Buffer.from。
首先导入您需要的内容:
然后定义你的函数
然后调用它:
如果你错过了await,函数可能会开始执行,但永远不会到达最后一行。