我如何在 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