繁体   English   中英

AWS Secrets Manager 和 javascript

[英]AWS Secrets Manager and javascript

我有大约 7 个小时和数十次尝试来获取 AWS 秘密。 我遵循了 AWS 示例代码以及此处和其他站点上的其他示例。 我当前的问题是代码在我的变量“p”中返回一个 Promise,而不是明文秘密字符串。 我在这里拉我的头发......如果它在等待解决的同时返回一个承诺; 我不知道为什么它不等待。 调用代码在 sequelize.config 文件中,没有包含在导出的函数中——因此async function () =>下面。

getSecrets.js

const AWS = require ('aws-sdk')

const sm = new AWS.SecretsManager({region: 'us-east-1'});

export default async function getSecret (secretId) {
  const data = await sm.getSecretValue({
      SecretId: secretId
    })
    .promise();

  console.log ("returning SecretString:", data.SecretString)
  return data.SecretString;

调用代码:

if (RUN_ENV != 'local') {
  const p = async function () {
    await getSecrets (DB_PASSWORD)
      .then (function ( value ) {
        return value;
        })
    .catch ((error) => {
      console.log ("AWS getSecrets error: ", error);
    })
  }
  password = p;
}

这是从 Secrets Manager 获取密钥字符串的简单方法:

const AWS = require('aws-sdk');
const client = new AWS.SecretsManager({ region: "us-east-1" });

const getMySecret = async (SecretId) => {
  const s = await client.getSecretValue({ SecretId }).promise();
  return s.SecretString;
};

// Async IIFE
(async() => {
  const secret_101 = await getMySecret('secret-101');
  console.log('My secret:', secret_101);
})();

正如@GalAbra 所建议的那样,您的原始问题是您的代码在需要const password = p()时具有password = p 具体来说,它需要调用函数而不是引用函数。

暂无
暂无

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

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