gpt4 book ai didi

node.js - 解密 aws kms key 时出现 Nodejs 异步问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:09 25 4
gpt4 key购买 nike

我在node6中有一个lambda函数,它有5个环境变量,全部用aws kms加密。我有以下方法,它接受加密的 key 并返回解密的 key 。

function decryptKMS(encryptedKey) {
console.log('inside decryptkms');
const kms = new AWS.KMS();
kms.decrypt({ CiphertextBlob: new Buffer(encryptedKey, 'base64') }, (err, data) => {
if (err) {
console.log('Decrypt error:', err);
return callback(err);
}
var result = data.Plaintext.toString('ascii');
return result;
});
}

在我的处理程序中,我这样做是为了获取解密的 key 。

decryptedkey1 = decryptKMS(encryptedkey1);
decryptedkey2 = decryptKMS(encryptedkey2);
decryptedkey3 = decryptKMS(encryptedkey3);
decryptedkey4 = decryptKMS(encryptedkey4);
decryptedkey5 = decryptKMS(encryptedkey5);

但是,由于 Node 是异步的,该函数在解密 key 之前移至下一步。无论如何,我是否可以对所有组合的 key 使用 Node promise ,或者有什么方法可以从 kms 一次解密多个 key ?

最佳答案

Promisify 您的 decryptKMS 并与 Promise.all 结合使用

function decryptKMS(key) {
return new Promise((resolve, reject) => {
const kms = new AWS.KMS()

kms.decrypt({}, (err, data) => {
if(err) {
reject(err)
}
else {
resolve(data.Plaintext.toString('ascii'))
}
})
})
}

const keys = [encryptedkey1, encryptedkey2, encryptedkey3]

Promise.all(keys.map(decryptKMS))
.then(([decryptedkey1, decryptedkey2, decryptedkey3]) => {
// use decryptedkeyN here
})
.catch(console.log)

关于node.js - 解密 aws kms key 时出现 Nodejs 异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44633822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com