Oam*_*nji 4 environment-variables node.js aws-lambda serverless-framework
我正在使用 aws-node 模板。我想做这样的事情:
sls deploy URL='https://postman-echo.com/post'
Run Code Online (Sandbox Code Playgroud)
其中URL是环境变量。我正在尝试将此环境变量传递给我的serverless.yml
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: us-west-2
environment:
URL: ${env:URL}
Run Code Online (Sandbox Code Playgroud)
然后在我的handler.js中访问它
const axios = require('axios');
module.exports.hello = async (event, context) => {
console.log("Lambda invoked\n")
await axios.post(
process.env.URL // Accessing the environment variable.
).then(function (response) {
console.log(`Status: ${response.status}`)
})
.catch(function (error) {
console.log(`Error`)
console.error(error);
});
return {
statusCode: 200,
body: JSON.stringify({
message: 'Function executed successfully!',
input: event
}),
};
};
Run Code Online (Sandbox Code Playgroud)
我怀疑问题在于我如何将环境变量传递给程序,但我的研究没有结果。
不要将变量与部署命令一起传递。首先从终端设置它:
在您的终端中,运行:
URL='https://postman-echo.com/post'
然后运行
sls deploy
或者,您可以使用插件:
这是一个插件: https://github.com/colynb/serverless-dotenv-plugin
npm i -D serverless-dotenv-plugin
Run Code Online (Sandbox Code Playgroud)
然后将插件添加到您的配置文件中:
service: myService
plugins:
- serverless-dotenv-plugin
...
Run Code Online (Sandbox Code Playgroud)
创建常用的 dotenv 文件.env
,然后照常访问:
...
provider:
name: aws
runtime: nodejs6.10
stage: ${env:STAGE}
region: ${env:AWS_REGION}
...
Run Code Online (Sandbox Code Playgroud)
如果您确实需要使用不同的 url 标志从控制台运行它(尽管我建议仅使用一个不带命令标志的 .env 文件),请执行以下操作:
将您的不同网址放入:
.env.url1
.env.url2
.env.url3
进而:
sls deploy --env url1
归档时间: |
|
查看次数: |
6312 次 |
最近记录: |