从NodeJS调用的AWS Lambda中的空事件值

时间:2019-07-13 08:52:59

标签: javascript python node.js amazon-web-services aws-lambda

我目前正在构建所有的JavaScript前端代码,以将其放在NodeJS上的AWS上。 我的请求链如下:

  • 用户通过以下调用(1)从Javascript调用NodeJS AWS托管的函数
  • NodeJS函数调用用于获取文件大小的python脚本。在本地调用时,此功能运行良好。但是这里收到的event值为空,所以什么也不会发生...(2)(3)
  • 大小已更新,并且在我的DynamoDB表中可用。

有人对事件为何为空传递有想法吗?我在做错什么吗?

代码块1:

API.post("notes", "/upload", {
    test: {
      "userId": toto['userId'],
      "noteId": toto['noteId']
    }
  });

代码块2:

import AWS from "aws-sdk";
import { success, failure } from "./libs/response-lib";

export function main(event, context, callback) {
  var lambda = new AWS.Lambda({
     region: 'us-east-1'
  });

  lambda.invoke({
     FunctionName: 'miseajour',
     InvocationType: 'RequestResponse',
     Payload: event.test
     }, function(error, data) {
         if (error) {
             callback(null, failure({error: error}));
         } else if(data){
             callback(null, success(data));
         }
    });
}

1 个答案:

答案 0 :(得分:0)

AWS JavaScript SDK的invoke函数期望Payload属性上有一个缓冲区,类型数组,Blob或字符串。您可以在SDK documentation site上签出。这是invoke方法的整个接口,摘自该链接:

var params = {
  FunctionName: 'STRING_VALUE', /* required */
  ClientContext: 'STRING_VALUE',
  InvocationType: Event | RequestResponse | DryRun,
  LogType: None | Tail,
  Payload: Buffer.from('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */,
  Qualifier: 'STRING_VALUE'
};
lambda.invoke(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

在您的情况下,您正在传递一个对象。尝试先使用string将其转换为JSON.stringify