Node.js 第一次部署期间种子参数存储的自动化

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

我在nodejs项目中使用了一个无服务器框架。在项目中,我在yaml中定义了服务。我想创建RDS数据库并传递密码和管理员名称。我正在使用AWS系统管理器(Parameter Store)保存这些凭据。在部署期间,我从参数存储下载此凭据,以使用我在nodejs中编写的脚本创建rds

rds实例定义:

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并在以后的某处手动获取此数据