Как вызвать одну лямбду из другой в AWS SAM

Я пишу приложение с несколькими функциями внутри приложения SAM. Я могу вызвать лямбда-функцию, которая уже развернута в AWS, с кодом, похожим на AWS Lambda call Lambda, но он не работает с локальными функциями. Я пробовал что-то из https://github.com/awslabs/aws-sam-cli/issues/510, но пока ничего не работает.

Это самое близкое из имеющихся у меня (вам нужно sam local start-lambda --host 172.17.0.1, где хост находится в сети докеров)

var AWS = require("aws-sdk");

exports.lambdaHandler = async (event, context) => {
  let lambda = new AWS.Lambda({});
  if (process.env.AWS_SAM_LOCAL) {
    var ep = new AWS.Endpoint("http://172.17.0.1:3001");
    lambda = new AWS.Lambda({ endpoint: ep });
  }
  const body = await new Promise(r => {
    lambda.invokeAsync(
      {
        FunctionName: "myFunction",
        InvokeArgs: JSON.stringify({ arguments: "for other function" })
      },
      function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log(data);
        r(data);
      }
    );
  });
  response = {
    statusCode: 200,
    body: JSON.stringify(body)
  };
  return response;
};

и, по крайней мере, я вижу некоторую активность, но получаю ошибку в invokeAsync

PathNotFoundLocally: PathNotFoundException\n    at Object.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:51:27)\n

и эта ошибка в консоли start-lambda

2019-12-20 16:07:02 172.17.0.7 - - [20/Dec/2019 16:07:02] "POST /2014-11-13/functions/myFunction/invoke-async/ HTTP/1.1" 404 -

ОБНОВЛЕНИЕ:

Мне удалось исправить ошибку ssl, которая была у меня в первой версии этого вопроса, и похоже, что она работает в режиме синхронизации с lambda.invoke


person JLarky    schedule 20.12.2019    source источник


Ответы (1)


Похоже, что в настоящее время это не поддерживается до https://github.com/awslabs/aws-sam-cli/pull/749 объединено

person JLarky    schedule 21.12.2019