【发布时间】:2019-12-25 18:40:44
【问题描述】:
我正在使用无服务器框架 (aws)。
在创建数据库时从 cloudFormation 写入 env。数据库的可变端点。
我的 serverless.yml 文件的一部分
environment:
DATABASE_HOST:
"Fn::GetAtt": [ServerlessRDS, Endpoint.Address]
此变量可从 lambda 级别获得,因为它已部署在 aws 上。但我想从本地访问这个变量。我想到了将这个变量写入参数存储(aws 系统管理器)。
所以我将脚本附加到我的 serverless.yml 文件中(使用 serverless-scriptable-plugin)。
scriptHooks,我的 serverless.yml 文件的一部分 :
after:aws:deploy:finalize:cleanup:
- scripts/update-dbEndopint.js
这是脚本。没什么特别的,写一个环境变量process.env.DATABASE_HOST到参数sora。
const aws = require('aws-sdk');
const ssm = new aws.SSM();
(async () => {
try {
const params = {
Name: `${process.env.AWS_SERVICE_NAME}-DATABASE_HOST-${
process.env.AWS_STAGE
}`,
Value: `${process.env.DATABASE_HOST}`,
Type: 'String',
Overwrite: true,
};
await ssm.putParameter(params).promise();
log(`[DATABASE_HOST]: ${process.env.DATABASE_HOST} `);
log('Task done.');
} catch (e) {
throw e;
}
})();
但是在部署之后,变量是未定义的。 这是因为变量值只能在以后使用。
您知道如何让我将基本端点获取到参数存储吗?
【问题讨论】:
标签: node.js amazon-web-services serverless-framework