使用节点 aws sdk 在本地调用 aws lambda 函数

invoking aws lambda functions locally with node aws sdk

我是相当新的 运行使用 sam 在本地使用 lambda 函数。 我有这个项目设置,其中“node express app”充当互联网(api 网关)和其他 lambda 函数之间的中间件。

根据资源路径调用另一个 lambda 函数。

调用代码块:

const { Lambda } = require ("@aws-sdk/client-lambda");
const client = new Lambda({region: "eu-central-1"});
const input = { 
                FunctionName: "My-func",
                InvocationType: "RequestResponse",
                Payload: JSON.stringify(payload)
            };
client.invoke(input);

My-func 是一个基于 java 的 lambda 函数。

此设置在 lambda 上运行良好,但在本地 运行ning 时,几乎没有我无法解决的问题。按照以下设置。

我正在使用 sam 运行 我的 lambda 函数。 运行将我的 java 函数 (My-func) 设置为 sam local start-lambda -t my-func.yaml,其中 运行 是 127.0.0.1:3001 上的 lambda。

现在我正尝试从我的 nodejs 应用程序调用此函数,我从 aws sdk repo 中阅读了一些 github 问题以在 lambda 客户端初始化配置中指定端点,例如

const client = new Lambda({apiVersion: '2015-03-31', endpoint: 'http://127.0.0.1:3001/' });

并使用与上述相同的代码来调用函数。但这不起作用失败并出现错误: '$metadata': { attempts: 1, totalRetryDelay: 0 } (net.js:1144:16) { ERROR Error: connect ECONNREFUSED 127.0.0.1:3001

请帮助我弄清楚如何在本地从另一个 运行ning 调用一个 lambda 函数。

提前致谢。

运行 我的 lambda 函数作为 sam local start-lambda -t my-func.yaml --host 0.0.0.0 并修改 lambda 配置以使用 dockers ip 172.17.0.1 作为端点工作 const client = new Lambda({region: "eu-central-1", apiVersion: '2015-03-31', endpoint: 'http://172.17.0.1:3001' });