Как использовать AWS Secrets Manager в Express Project для получения учетных данных?
Я пытаюсь перейти от своих учетных данных и секретов к AWS Secrets Manager в моем Экспресс-проекте.
Текущая структура имеет файл config.json, который загружается синхронно, когда приложение Express.
Но когда я пытаюсь получить учетные данные из AWS API, поток не будет работать. Поскольку в моем предыдущем подходе файлы загружались синхронно, поэтому все учетные данные доступны при запуске приложения, но это невозможно при получении учетных данных из AWS API.
Я хочу понять, что является идеальным методом для работы с любым секретным менеджером, где требуется вызов API в проектах Express/Node для получения учетных данных.
1 ответ
Вот как я получаю секреты для последовательной миграции.
- Переименуйте config.json в config.js, не забудьте соответствующим образом обновить .sequelizerc.
- Внутри 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;
Затем при выполнении миграции сиквела он сначала извлечет секреты, а затем вернет конфигурацию.