【发布时间】:2018-06-29 14:58:17
【问题描述】:
我必须在本地安装 axios 模块,然后将其部署到 lambda 还是有办法通过内联代码编辑器以及浏览器中的方式来完成?
【问题讨论】:
标签: amazon-web-services aws-lambda axios alexa alexa-skills-kit
我必须在本地安装 axios 模块,然后将其部署到 lambda 还是有办法通过内联代码编辑器以及浏览器中的方式来完成?
【问题讨论】:
标签: amazon-web-services aws-lambda axios alexa alexa-skills-kit
您可以使用 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
【讨论】:
nodejs/node_modules/...。
Lambda 实际上并没有为您捆绑包依赖项,AWS 包除外,所以是的,您需要在本地安装它,将其压缩在一起并上传到 Lambda 控制台。
【讨论】:
在您的 lambda 脚本所在的文件夹 (index.js) 中运行以下命令 -
npm install axios
您应该看到node_modules 目录被创建在与 index.js 相同的目录中。现在将这两个压缩在一起(index.js 和 npm_modules)并将其上传到您的 lambda 作为 zip。您可以对您拥有的其他 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
这种方法对我有很大帮助,希望对其他人也有帮助! :)
【讨论】: