繁体   English   中英

如何在 Express Project 中使用 AWS Secrets Manager 获取凭证?

[英]How to use AWS Secrets Manager in Express Project for fetching Credentials?

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

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

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

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

以下是我获取后续迁移的秘密的方法。

  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/yourwork/postgres' }) // fetch secret
    .promise();
  const parsedSecret = JSON.parse(secret.SecretString);

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

module.exports = returnSequelizeConfig;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM