我有运行多个端点的AWS Lambda Express应用程序
我想在没有api网关的情况下调用该应用程序,即通过lambda:invoke,但无法弄清楚如何导航到特定端点。
有可能吗?
答案 0 :(得分:0)
完全有可能,这正是API网关正在做的事情。
您打算直接请求Express 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}'
}