Как использовать AWS Secrets Manager в Express Project для получения учетных данных?

Я пытаюсь перейти от своих учетных данных и секретов к AWS Secrets Manager в моем Экспресс-проекте.

Текущая структура имеет файл config.json, который загружается синхронно, когда приложение Express.

Но когда я пытаюсь получить учетные данные из AWS API, поток не будет работать. Поскольку в моем предыдущем подходе файлы загружались синхронно, поэтому все учетные данные доступны при запуске приложения, но это невозможно при получении учетных данных из AWS API.

Я хочу понять, что является идеальным методом для работы с любым секретным менеджером, где требуется вызов API в проектах Express/Node для получения учетных данных.

1 ответ

Вот как я получаю секреты для последовательной миграции.

  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;

Затем при выполнении миграции сиквела он сначала извлечет секреты, а затем вернет конфигурацию.

Другие вопросы по тегам