![](/img/trans.png)
[英]Requesting 2 secrets from AWS Secrets Manager in One API Call with 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.