Lambda 中的 NodeJS AWS KMS 解密
NodeJS AWS KMS Decryption in Lambda
首先我要说的是,感觉这个问题被问了很多,但是 none 问题的答案似乎解决了我遇到的问题。
我正在用 NodeJS 编写一个 lambda 函数。除了试图解密加密的环境变量外,它的一切都很好。
为了让它发挥作用,我已经评论了关于我的 Lambda 的所有其他内容,但我仍然没有得到任何结果。这是我现在正在使用的代码:
const aws = require('aws-sdk')
exports.handler = async (event, context, callback) => {
const kms = new aws.KMS()
let params = {
//CiphertextBlob: Buffer.from(process.env.SECRET_KEY, 'base64')
CiphertextBlob: process.env.SECRET_KEY
}
console.log('before decrypt')
console.log('SECRET_KEY', process.env.SECRET_KEY)
kms.decrypt(params, function (err, data) {
console.log('decrypt')
if (err) console.log(err, err.stack) // an error occurred
else console.log(data) // successful response
})
console.log('after decrypt')
}
Lambda运行成功,没有遇到错误。这是此代码的输出:
START RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368 Version: $LATEST
2019-01-03T17:12:36.726Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 before decrypt
2019-01-03T17:12:36.763Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 SECRET_KEY Encoded key string that I'm not putting in here
2019-01-03T17:12:36.765Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 after decrypt
END RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368
REPORT RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368 Duration: 699.51 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 40 MB
如您所见,解密回调中的 none 控制台日志实际上出现了,我不知道为什么。
使用密钥的缓冲版本(第 6 行)而不是密钥的明文版本(第 7 行)对输出也没有任何影响。
有人可以帮我弄清楚我错过了什么吗?
这是我同事帮我解决的问题。
const aws = require('aws-sdk')
const kms = new aws.KMS()
exports.handler = async (event, context, callback) => {
let params = {
CiphertextBlob: Buffer.from(process.env.SECRET_KEY, 'base64')
}
let secret = null
try {
const decrypted = await kms.decrypt(params).promise()
secret = decrypted.Plaintext.toString('utf-8')
}
catch (exception) {
console.error(exception)
}
}
首先我要说的是,感觉这个问题被问了很多,但是 none 问题的答案似乎解决了我遇到的问题。
我正在用 NodeJS 编写一个 lambda 函数。除了试图解密加密的环境变量外,它的一切都很好。
为了让它发挥作用,我已经评论了关于我的 Lambda 的所有其他内容,但我仍然没有得到任何结果。这是我现在正在使用的代码:
const aws = require('aws-sdk')
exports.handler = async (event, context, callback) => {
const kms = new aws.KMS()
let params = {
//CiphertextBlob: Buffer.from(process.env.SECRET_KEY, 'base64')
CiphertextBlob: process.env.SECRET_KEY
}
console.log('before decrypt')
console.log('SECRET_KEY', process.env.SECRET_KEY)
kms.decrypt(params, function (err, data) {
console.log('decrypt')
if (err) console.log(err, err.stack) // an error occurred
else console.log(data) // successful response
})
console.log('after decrypt')
}
Lambda运行成功,没有遇到错误。这是此代码的输出:
START RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368 Version: $LATEST
2019-01-03T17:12:36.726Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 before decrypt
2019-01-03T17:12:36.763Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 SECRET_KEY Encoded key string that I'm not putting in here
2019-01-03T17:12:36.765Z c3a83ca7-0f7a-11e9-84f1-a5f7503df368 after decrypt
END RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368
REPORT RequestId: c3a83ca7-0f7a-11e9-84f1-a5f7503df368 Duration: 699.51 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 40 MB
如您所见,解密回调中的 none 控制台日志实际上出现了,我不知道为什么。
使用密钥的缓冲版本(第 6 行)而不是密钥的明文版本(第 7 行)对输出也没有任何影响。
有人可以帮我弄清楚我错过了什么吗?
这是我同事帮我解决的问题。
const aws = require('aws-sdk')
const kms = new aws.KMS()
exports.handler = async (event, context, callback) => {
let params = {
CiphertextBlob: Buffer.from(process.env.SECRET_KEY, 'base64')
}
let secret = null
try {
const decrypted = await kms.decrypt(params).promise()
secret = decrypted.Plaintext.toString('utf-8')
}
catch (exception) {
console.error(exception)
}
}