我是否可以使用 lambda:invoke 调用 AWS Lambda Express 应用程序?



我有运行多个终端节点的 AWS Lambda Express 应用程序

我想在没有 api-gateway 的情况下调用这个应用程序,即通过 lambda:invoke,但无法弄清楚如何导航到特定的端点。

可能吗?

这是完全可能的,这正是API网关正在做的事情。

您打算直接请求快速 Lambda 的应用程序必须

因此,假设您拥有本地凭证,并且本地用户有权调用您的 lambda 函数,您可以通过执行以下操作在本地执行简单的测试:

payload.json

{
"httpMethod": "POST",
"path": "/PATH/TO/YOUR/ROUTE",
"headers": { "content-type": "text/plain" },
"body": "{"version":"2.1.0"}",
"isBase64Encoded": false
}

lambda-caller.js

const region = process.env.AWS_REGION || 'us-west-2'
const lambda = new (require('aws-sdk/clients/lambda'))({ region })
const Payload = require('fs').readFileSync('payload.json')
const FunctionName = 'your-function-name'
lambda.invoke({ Payload, FunctionName }).promise().then(console.log)

然后只需调用您的节点应用程序

node lambda-caller.js

那应该打印这样的东西

{
StatusCode: 200,
ExecutedVersion: '$LATEST',
Payload: '{"statusCode":202,"body":"{\"count\":1,\"success\":1}","headers":{"content-type":"application/json; charset=utf-8","content-length":"23","date":"Thu, 21 May 2020 00:29:33 GMT","connection":"keep-alive"},"isBase64Encoded":false}'
}

最新更新