Вызвать лямбду локально из местной лямбды - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь вызвать лямбда-функцию локально, которая вызывает другую лямбда-функцию, также локальную.

Я использую sam local start-lambda -t notificationServiceTemplate.yml --docker-network lambda-local --host 0.0.0.0

Затем я запускаю свою потребительскую лямбду, которая вызывает рабочую лямбду,

aws lambda invoke --function-name ImportUsageConsumerLambda --endpoint-url http://127.0.0.1:3001

Лямбда-функция потребителя выполняет вызов invoke, используя эти параметры,

if (process.env.STACK_ENVIRONMENT == "local" ) {
     options.endpoint = "http://0.0.0.0:3001/";
     options.sslEnabled = false;
 }
 lambda = new AWS.Lambda(options);

Это не работает, потому что лямбда-контейнер не может получить доступ к localhost снаружи контейнера, UnknownEndpoint: Inaccessible host: '0.0.0.0\'. This service may not be available in the 'us-west-2\' region.\n.

Я понимаю, что использование конечной точки 0.0.0.0:3001 не будет работать, потому что именно здесь start-lambda устанавливает конечную точку лямбды, которая доступна для моего хоста, а не в той же сети, что и в контейнере для настройки лямбды.

Мне удалось подключиться к Docker-контейнеру DynamodB после этого вопроса и ответить здесь .

Есть ли простой способ сделать это, что мне не хватает? Как имя хоста лямбда-контейнера, который я могу вызвать изнутри лямбда-контейнера, то есть options.endpoint = "http://lambda:3001/";?

1 Ответ

0 голосов
/ 09 января 2019

У меня был некоторый успех при использовании host.docker.internal: PORT для подключения моей локальной лямбды к моему контейнеру с запущенным django.

...