如何在 Express 项目中使用 AWS Secrets Manager 来获取凭证?

Nik*_*ash 7 amazon-web-services node.js express secret-manager aws-secrets-manager

我正在尝试从我的凭证和机密迁移到我的 Express 项目中的 AWS Secrets Manager。

当前结构有一个 config.json 文件,该文件在 express 应用程序时同步加载。

但是当我尝试从 AWS API 获取凭证时,流程将不起作用。因为在我以前的方法中,文件是同步加载的,因此,当应用程序启动时,所有凭证都可用,但当从 AWS API 获取凭证时,则不可能。

我想了解在 Express/Node 项目中需要 API 调用以获取凭据的任何秘密管理器的理想方法是什么。

nic*_*ick 0

以下是我如何获取续集迁移的秘密。

  1. 将 config.json 重命名为 config.js,确保相应地更新 .sequelizerc。
  2. 在 config.js 中粘贴以下内容:
const aws = require('aws-sdk');
aws.config.update({
  region: 'ca-central-1', // IMPORTANT: configure your aws region
});

const returnSequelizeConfig = async () => {
  const secretsManager = new aws.SecretsManager();
  const secret = await secretsManager
    .getSecretValue({ SecretId: 'dev/postgres' }) // fetch secret
    .promise();
  const parsedSecret = JSON.parse(secret.SecretString);

  return {
    development: {
      database: parsedSecret.dbname,
      username: parsedSecret.username,
      password: parsedSecret.password,
      host: 'db-instance.XXXXX.ca-central-1.rds.amazonaws.com', // replace with host
      dialect: 'postgres',
    },
    test: {
      username: 'postgres',
      password: 'postgres',
      database: 'db',
      host: 'localhost',
      dialect: 'postgres',
    },
  };
};

module.exports = returnSequelizeConfig;
Run Code Online (Sandbox Code Playgroud)

然后,当运行您的sequelize迁移时,它将首先获取秘密,然后返回配置。