【问题标题】:Issue with invoking lambda from another lambda从另一个 lambda 调用 lambda 的问题
【发布时间】:2018-08-03 21:08:22
【问题描述】:

我有 2 个 Lambda 函数,我想不通过 API 网关直接调用它们。 Lambda 函数 A 与 queryStringParameters 一起调用 Lambda B。由于某些原因,我收到此错误

{ UnexpectedParameter: 在参数中发现意外的键 'queryStringParameters'

这是我的 Lambda A 函数

    var aws = require('aws-sdk');
var lambda = new aws.Lambda({
  region: 'eu-central-1'
});    
exports.handler = (event, context, callback) => {
var params = {
      FunctionName: "function-getStats", 
      InvocationType: "RequestResponse", 
      LogType: "Tail", 
      "queryStringParameters" : { "fn" : "latest_no" }
     };
     lambda.invoke(params, function(err, data) {
       if (err) console.log(err, err.stack); // an error occurred
       else     console.log(data);           // successful response
     });
};

如下调用 Lambda B

var AWS = require('aws-sdk');
AWS.config.update({region: 'eu-central-1'});
var ddb = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

exports.handler = (event, context, callback) => {
    var fn = event["queryStringParameters"]['fn'];
...
..


//If successful return the following response
     console.log("Success", items);
                callback(null, {
                    'statusCode': '200',
                    'body': JSON.stringify(items),
                    'headers': {
                        "Access-Control-Allow-Origin": "*"

                    },
                    'isBase64Encoded': false
                });

有人可以建议如何解决这个问题吗?

【问题讨论】:

  • 问题在于 Lambda A,Lambda B 从测试或通过 API 网关运行良好。我不确定为什么找不到 queryStringParameters

标签: node.js aws-lambda amazon-dynamodb aws-api-gateway aws-sdk-nodejs


【解决方案1】:

以防万一有人遇到同样的问题。这是我做的方法

var aws = require('aws-sdk');
var lambda = new aws.Lambda({
  region: 'eu-central-1'
});    
exports.handler = (event, context, callback) => {
    event.queryStringParameters= {"fn" : "latest_no" };
var params = {
      FunctionName: "function-getStats", 
      InvocationType: "RequestResponse", 
      LogType: "Tail", 
      Payload: JSON.stringify(event, null, 2), 

     };
     lambda.invoke(params, function(err, data) {
       if (err) console.log(err, err.stack); // an error occurred
       else     console.log(data);           // successful response
     });
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 2020-11-10
    • 2019-12-15
    • 2016-12-31
    • 2022-12-05
    • 2021-11-04
    • 2021-06-02
    • 2020-09-15
    相关资源
    最近更新 更多