Я пытаюсь вызвать лямбда-функцию локально, которая вызывает другую лямбда-функцию, также локальную.
Я использую 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/";
?