我是否必须在本地安装axios模块,然后将其部署到lambda,或者是否有办法通过内联代码编辑器在浏览器中执行此操作?
答案 0 :(得分:2)
除了AWS软件包之外,Lambda实际上并没有为您捆绑您的软件包依赖项,所以是的,您需要在本地安装它,将其压缩并上传到Lambda控制台。
答案 1 :(得分:2)
您还可以创建图层。通过这种方法,您可以在许多功能中使用 Axios 模块。 不过,您需要小心路径。压缩模块时,文件夹路径很重要。 对于 node14.*,它应该是这样的。您的主文件夹名称应为“nodejs”。
nodejs/node14/node_modules/axios
nodejs/node14/node_modules/follow-redirects
附加图层后,您可以直接到达它。
例如:
const axios = require("axios");
exports.handler = async(event) => {
// TODO implement
var response = await axios.post(process.env.URL, { "data": event.data }, {
headers: {
"authorization": process.env.PASS,
"content-type": "application/json",
}
}, { timeout: 10000 }).then(response => response)
.catch((error) => {
//console.log(error.response.status);
//console.log(error.response.data);
//console.log(error.response.headers);
return error;
});;
}
更多信息:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
这种方法对我帮助很大,希望它也能帮助其他人! :)
答案 2 :(得分:0)
在存在lambda脚本的文件夹(index.js)中运行以下命令 -
npm install axios
您应该在与index.js相同的目录中看到创建node_modules
目录。现在将这两个压缩在一起(index.js和npm_modules)并将你的lambda上传为zip。您可以使用其他npm模块依赖项重复此操作。如果您不想再为每个模块重复这些手动步骤,请创建package.json
文件并在那里添加所有模块依赖项,然后运行npm install
一次。
答案 3 :(得分:0)
您可以使用 axios 包发布一个简单的 Node.js AWS Lambda 层,然后将创建的层附加到您的 lambda。
为层创建 .zip 文件的命令列表:
mkdir nodejs
cd nodejs
npm i axios
rm -rf package-lock.json
cd ..
zip -r axios.zip nodejs
此命令列表取自本文 https://ljmocic.medium.com/publish-simple-node-js-aws-lambda-layer-a87c00afdd83