Mah*_*dra 2 node.js aws-lambda serverless-framework serverless-offline
我正在尝试使用无服务器框架在 lambda 函数中调用 lambda 函数。我现在正在使用这段代码,部署到 AWS 后它可以正常工作。但它在 serverless-offline 中本地返回一些错误。
我现在使用的代码:
const middy = require("@middy/core");
const httpErrorHandler = require("@middy/http-error-handler");
const httpUrlEncodeBodyParser = require("@middy/http-urlencode-body-parser");
const AWS = require("aws-sdk");
const lambda = new AWS.Lambda();
const baseHandler = async (payload) => {
const params = {
FunctionName: `my-api-${process.env.STAGE}-handleProcessA`,
InvocationType: "Event",
LogType: "None",
Payload: JSON.stringify(payload),
};
await lambda.invoke(params).promise();
return standardResponse();
}
const endpoint = middy(baseHandler)
.use(httpUrlEncodeBodyParser())
.use(httpErrorHandler());
module.exports = { endpoint };
Run Code Online (Sandbox Code Playgroud)
当这个被触发时,它表示找不到该函数:
Function not found: arn:aws:lambda:us-west-2:893853743015:function:my-api-local-handleProcessA
我也尝试了这些问题的建议: /sf/answers/4113647121/ /sf/answers/4897727201/
根据建议,我更改了这部分:
const lambda = new AWS.Lambda({
region: "us-west-2",
endpoint: process.env.IS_OFFLINE
? "http://localhost:6002"
: "https://lambda.us-west-2.amazonaws.com",
});
Run Code Online (Sandbox Code Playgroud)
但是,它给了我Unsupported Media Type
状态 415。以前有人遇到过这种情况吗?任何指导表示赞赏。
谢谢。
最后,我在一些帮助下找到了解决方案。当我将离线端点更改为http://localhost:3002
: where3002
是默认值时,这会起作用lambdaPort
。
const lambda = new AWS.Lambda({
region: "us-west-2",
endpoint: process.env.IS_OFFLINE
? "http://localhost:3002"
: "https://lambda.us-west-2.amazonaws.com",
});
Run Code Online (Sandbox Code Playgroud)
解释:
在无服务器离线中,有 CLI 选项可设置--lambdaPort
和--httpPort
。
默认--httpPort
为 3000,默认--lambdaPort
为3002
.
在我的项目中,我已设置--httpPort
为6002
不带自定义--lambdaPort
,默认为3002
.
我调用 lambda 函数时使用的6002
是不正确的。使用3002
解决了它。
归档时间: |
|
查看次数: |
1693 次 |
最近记录: |