我怎样才能在lambda中使用axios?

时间:2018-01-20 13:44:23

标签: amazon-web-services aws-lambda axios alexa alexa-skills-kit

我是否必须在本地安装axios模块,然后将其部署到lambda,或者是否有办法通过内联代码编辑器在浏览器中执行此操作?

4 个答案:

答案 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

创建图层 enter image description here Take Layer ARN enter image description here 将图层附加到 Lambda enter image description here