Node.js 第一次部署期间种子参数存储的自动化
我在nodejs项目中使用了一个无服务器框架。在项目中,我在yaml中定义了服务。我想创建RDS数据库并传递密码和管理员名称。我正在使用AWS系统管理器(Parameter Store)保存这些凭据。在部署期间,我从参数存储下载此凭据,以使用我在nodejs中编写的脚本创建rds rds实例定义:Node.js 第一次部署期间种子参数存储的自动化,node.js,amazon-web-services,amazon-rds,serverless-framework,aws-parameter-store,Node.js,Amazon Web Services,Amazon Rds,Serverless Framework,Aws Parameter Store,我在nodejs项目中使用了一个无服务器框架。在项目中,我在yaml中定义了服务。我想创建RDS数据库并传递密码和管理员名称。我正在使用AWS系统管理器(Parameter Store)保存这些凭据。在部署期间,我从参数存储下载此凭据,以使用我在nodejs中编写的脚本创建rds rds实例定义: Resources: DatabaseCluster: Type: AWS::RDS::DBCluster Properties: DatabaseName: ${fi
Resources:
DatabaseCluster:
Type: AWS::RDS::DBCluster
Properties:
DatabaseName: ${file(resources/rdsName.js)}
Engine: aurora
MasterUsername: ${file(resources/rdsUsername.js)}
MasterUserPassword: ${file(resources/rdsPassword.js)}
Port: "3306"
用于从参数存储检索数据库密码的示例脚本:
const aws = require('aws-sdk');
const getrdsPassword = async stage => {
const ssm = new aws.SSM();
const params = {
Name: `RDSPassword-${stage}`,
WithDecryption: true,
};
const password = await ssm.getParameter(params).promise();
return password.Parameter.Value;
};
module.exports = serverless => {
const {
service: {
provider: { stage },
},
} = serverless;
return getrdsPassword('dev')
};
问题是,当第一次部署时,即创建整个堆栈时,我需要在参数存储中创建密码参数和数据库用户名。我希望在部署时自动执行此操作,如果未创建特定参数,则会将其创建并保存在参数存储中。(我希望以后能够检索此数据,以便将程序插入数据库并查看数据,调试)
我想我会写一个脚本,在部署之前,借助于无服务器脚本插件
,我会运行一个脚本,检查参数控制器中是否有部署所需的数据,如果没有,它会创建它。但是浏览时我想插入事件before:package:cleanup:
,并在那里进行检查,但不幸的是,在部署无服务器框架时运行脚本之前,给了我一个错误:
Parameter Not Found ------------------------------------
ParameterNotFound: null
我在其中使用脚本的serverless.yml文件的一部分:
custom:
stage: ${opt:stage, self:provider.stage}
service: ${opt:service, self:service}
scriptHooks:
before:package:cleanup:
- scripts/bootstrappingParameterStore.js
问题是,是否有一个较早的事件,我可以用这个插件插入,并开始检查paramteter stora,如果它没有找到我需要的数据,就使用它
或者,是否有其他更简单的方法来自动化第一次部署、使用密码创建RDS并在以后的某处手动获取此数据