我如何在 lambda 中使用 axios?
How can I use axios in lambda?
我是否必须在本地安装 axios 模块,然后将其部署到 lambda,或者是否可以通过浏览器中的内联代码编辑器来完成?
Lambda 实际上不会为您捆绑包依赖项,AWS 包除外,所以是的,您需要在本地安装它,将其压缩并上传到 Lambda 控制台。
在您的 lambda 脚本所在的文件夹中 (index.js) 运行 按照命令 -
npm install axios
您应该会看到 node_modules
目录在与 index.js 相同的目录中创建。现在将它们压缩在一起(index.js 和 npm_modules)并将其作为 zip 上传到您的 lambda 中。您可以对您拥有的其他 npm 模块依赖项重复此操作。如果您不想为每个模块再次重复这些手动步骤,请创建 package.json
文件并在其中添加所有模块依赖项,并且只需 运行 npm install
一次。
您还可以创建图层。通过这种方法,您可以在许多功能中使用 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
这个方法对我帮助很大,希望对其他人也有帮助! :)
您可以使用 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
创建图层
取层 ARN
将图层附加到 Lambda
我是否必须在本地安装 axios 模块,然后将其部署到 lambda,或者是否可以通过浏览器中的内联代码编辑器来完成?
Lambda 实际上不会为您捆绑包依赖项,AWS 包除外,所以是的,您需要在本地安装它,将其压缩并上传到 Lambda 控制台。
在您的 lambda 脚本所在的文件夹中 (index.js) 运行 按照命令 -
npm install axios
您应该会看到 node_modules
目录在与 index.js 相同的目录中创建。现在将它们压缩在一起(index.js 和 npm_modules)并将其作为 zip 上传到您的 lambda 中。您可以对您拥有的其他 npm 模块依赖项重复此操作。如果您不想为每个模块再次重复这些手动步骤,请创建 package.json
文件并在其中添加所有模块依赖项,并且只需 运行 npm install
一次。
您还可以创建图层。通过这种方法,您可以在许多功能中使用 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
这个方法对我帮助很大,希望对其他人也有帮助! :)
您可以使用 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
创建图层