![](/img/trans.png)
[英]Access AWS Secrets Manager secret from AWS Lambda with JS
[英]How to return secret from getSecretValue with AWS secret manager?
我正在嘗試使用 AWS 控制台中的示例代碼從 AWS 密鑰管理器獲取我的密鑰。 但在 function 的末尾,它返回未定義的值。 另一方面,當我在 getSecretValue 中記錄秘密時,它會返回正確的值
const env = require("../SharedExternalDependencies/node_modules/dotenv");
process.env.AWS_SDK_LOAD_CONFIG = "true";
var AWS = require("../SharedExternalDependencies/node_modules/aws-sdk"),
region = "eu-west-1",
secretName = "********",
secret,
decodedBinarySecret;
exports.getCredentials = (event, context, callback) => {
// Create a Secrets Manager client
var client = new AWS.SecretsManager({
region: region,
});
client.getSecretValue({ SecretId: secretName }, function (err, data) {
if (err) {
throw err;
} else {
if ("SecretString" in data) {
secret = data.SecretString;
secret = JSON.parse(secret);
console.log(secret) // return the correct value
} else {
let buff = new Buffer(data.SecretBinary, "base64");
decodedBinarySecret = buff.toString("ascii");
}
}
});
console.log(secret) // return undefined
};
這是預期的回調行為。 我會將其細化為:
var result;
callbackFunc(function(err, data) {
// executes second, after the 'console.log' below
result = data;
})
// executes first, before data has returned
console.log(result);
如果您繼續使用回調,則保證值的唯一方法是引用“callbackFunc”中的變量。 您可以將其轉換為 promise。 只是語法不同
const myPromise = new Promise(function(resolve, reject) {
callbackFunc(function(err, data) {
if (err) { reject(err) }
else { resolve(data) }
})
})
myPromise.then(function(data) { doSomethingWithData(data) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.