解密aws kms密钥时Nodejs异步问题

时间:2017-06-19 14:55:13

标签: node.js asynchronous aws-lambda aws-kms

我在node6中有一个lambda函数,它有5个env变量,全部用aws kms加密。我有以下方法,它采用加密密钥并返回解密密钥。

guides

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

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;
});
}

但是,由于节点是异步的,因此在解密密钥之前,该功能已移至下一步。无论如何我可以使用节点承诺来组合所有密钥,或者有没有办法从kms一次解密多个密钥?

1 个答案:

答案 0 :(得分:7)

宣传您的String并与 @TypeConverter public static String fromStringSet(Set<String> strings) { if (strings==null) { return(null); } StringWriter result=new StringWriter(); JsonWriter json=new JsonWriter(result); try { json.beginArray(); for (String s : strings) { json.value(s); } json.endArray(); json.close(); } catch (IOException e) { Log.e(TAG, "Exception creating JSON", e); } return(result.toString()); } @TypeConverter public static Set<String> toStringSet(String strings) { if (strings==null) { return(null); } StringReader reader=new StringReader(strings); JsonReader json=new JsonReader(reader); HashSet<String> result=new HashSet<>(); try { json.beginArray(); while (json.hasNext()) { result.add(json.nextString()); } json.endArray(); } catch (IOException e) { Log.e(TAG, "Exception parsing JSON", e); } return(result); }

结合使用
decryptKMS