从本地Lambda本地调用Lambda

时间:2018-11-10 22:25:31

标签: docker aws-lambda docker-compose docker-networking aws-sam-cli

我试图在本地调用一个lambda函数,该函数又调用了另一个lambda函数,也是本地的。

我正在使用sam local start-lambda -t notificationServiceTemplate.yml --docker-network lambda-local --host 0.0.0.0

然后我启动我的消费者lambda,它调用工作程序lambda,

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

消费者lambda函数使用这些参数进行调用,

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

它不起作用,因为lambda容器无法访问容器UnknownEndpoint: Inaccessible host: '0.0.0.0\'. This service may not be available in the 'us-west-2\' region.\n外部的localhost。

我知道使用端点0.0.0.0:3001无效,因为start-lambda设置了主机可访问的lambda端点,并且与lambda docker容器内的网络不同。

按照这个问题,我已经设法连接到dynamodb docker容器并回答here

有没有一种简单的方法可以使我丢失? 就像我可以在lambda容器内部调用的lambda容器的主机名一样,即options.endpoint = "http://lambda:3001/";

1 个答案:

答案 0 :(得分:0)

使用host.docker.internal:PORT将我的本地lambda连接到运行django的容器,我获得了一些成功。