Lambda 中的 NodeJS AWS KMS 解密

2023-12-28

首先我要说的是,感觉这个问题被问了很多,但问题中的答案似乎都不能解决我遇到的问题。

我正在 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  

正如您所看到的,解密回调中的控制台日志实际上都没有显示,我不知道为什么。

使用密钥的缓冲区版本(第 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)
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lambda 中的 NodeJS AWS KMS 解密 的相关文章

随机推荐

  • 如何从 ggplot 对象中提取填充颜色?

    我正在尝试为一系列生成的函数编写一些自动化单元测试ggplot图形 例如 我想为绘图设置特定的色标 现在我需要一种方法来确定是否实际应用了正确的色阶 的背景 这是一些示例代码 用于设置fill使用 Color Brewer 调色板的颜色Da
  • 自定义 WordPress 颜色选择器

    有没有办法自定义 WordPress 3 8 颜色选择器 在自定义字段类型上 以仅使用我将定义的颜色 我只需要为客户提供 6 种颜色 但他们不想拥有除了 6 种渐变颜色之外的所有颜色 将不胜感激任何帮助 我已经尝试了好几天了 但没有积极的解
  • 调用clock()时出现分段错误

    我试图了解使用以下程序以编程方式缓存的效果 我的代码出现段错误 我使用GDB 编译为 g O0 并发现这是分段错误 start clock first occourance 难道我做错了什么 该代码对我来说看起来不错 有人可以指出错误吗 i
  • 该属性是接口类型('IFormFile')MVC Core

    我正在尝试制作一个可以保存文件 图像 的表单 但它显示了一个错误 InvalidOperationException 属性 Product Image 属于接口类型 IFormFile 如果它是导航属性 请通过将其转换为映射的实体类型来手动
  • 如何删除ios模拟器safari缓存

    我正在尝试在 iPhone 模拟器上测试一个网站 我做了一些 JavaScript 更改 并且我的 JavaScript 文件正在从缓存中加载 我使用 safari Web 检查器 资源选项卡 在模拟器窗口上 看到旧版本文件 网络调用的状态
  • 如何以编程方式刷新 Eclipse 视图或 RSE 文件子系统?

    如何以编程方式更新 Eclipse 视图 我想这可能不需要特定于 RSE 背景 我用的是远程系统资源管理器 RSE http www eclipse org tm 对于 Eclipse 通过 SSH 执行远程命令来执行一些操作 这会在远程主
  • JAX-RS 响应对象将对象字段显示为 NULL 值

    第一次实施JAX RS Client API在应用程序中 我在存储响应数据时遇到一些小问题 该数据返回为JSON作为 Java BEAN 请参阅下面的代码片段 其中演示了到目前为止我是如何实现它的 object client target
  • Groovy 代表按预期工作吗?

    我有一个简短的片段 我尝试将变量解析委托给委托人 但是 不使用委托值 而是使用所有者值 这是故意的还是错误 class Person int age def age 5 def closure gt age closure delegate
  • 如何在单个JVM中以多线程方式运行hadoop?

    我有 4 核桌面 希望使用所有核心通过 hadoop 进行本地数据处理 即有时我有足够的能力在本地处理数据 有时我向集群提交相同的作业 默认情况下 hadoop 本地模式仅运行一个映射器和一个减速器 因此我的本地作业非常慢 我不想首先在单台
  • 如何在 Kotlin 中将 Int 转换为 Hex 字符串?

    我正在寻找与Java类似的功能Integer toHexString 在科特林中 是否有内置的东西 或者我们必须手动编写一个函数来转换Int to String 您仍然可以通过调用静态函数来使用 Java 转换java lang Integ
  • 调试断言失败!表达式:__acrt_first_block == header

    我正在尝试测试我用 GoogleTest 编写的 dll 当我调用其中一个测试时 它会抛出此错误 我得出的结论是 问题在于将内存分配给向量 但我不知道如何解决这个问题 因为我对 C 编程相当陌生 代码如下 ArraysCPP11 h ifd
  • 将角度变量放入 routerLink 中

    我试图在我的 routerLink 中传递一个 id 我该如何连接它 a a doesnt work 你有解决办法吗 提前致谢 就这样吧 a Link a
  • iOS 7 - 键盘动画

    我正在尝试了解 iPhone 5 模拟器上 iOS 7 0 中的新键盘动画 我想调整我的大小UITableView当键盘出现时 但我无法获得正确的动画细节 我正在使用来自NSNotification当键盘出现或消失时对象 这是我的日志 Mo
  • SQL语句忽略where参数

    SELECT FROM people WHERE university 2 AND MATCH lname fname AGAINST massive IN BOOLEAN MODE OR fname LIKE box OR lname L
  • 如何获取 CakePHP 中的控制器名称列表来验证用户数据?

    我正在为客户构建一个 CakePHP 站点 并且遇到了一些有趣的问题 他们希望添加一项新功能 让用户可以使用此类 URL 在网站内创建自己的登陆页面 http mainsite com username 由于这是一个蛋糕网站 因此有很多价值
  • JDK 中哪里可以找到本机代码?

    我正在查看 FileInputStream 的 Java 代码 并对 open 和 close 方法的作用感兴趣 这些功能或其中的一部分是本机实现的 你知道我在哪里可以找到这个代码吗 该代码是 JDK 开源许可证的一部分吗 http jav
  • 在图像上浮动 Div

    我在将 div 浮动到图像上时遇到问题 这是我想要实现的目标 container border 1px solid DDDDDD width 200px height 200px tag float left position relati
  • 获取所有连接的显示器支持的最大分辨率

    我正在尝试使用 WMI 获取两台显示器支持的最大分辨率 因为它将成为 VBScript 的一部分 我尝试了以下 WMI 命令 但我要么得到错误的结果 要么只获取一台显示器的信息 C gt wmic path win32 videocontr
  • Vim 脚本:在函数调用中保留光标位置和屏幕视图

    我有一些 Vim 函数可以更改文档格式 当我调用此函数时 我当前使用类似以下内容来保存和恢复光标位置 func Foo norm mz norm z endf 这可以正确保存光标位置 但有时会更改窗口位置 从而使当前行从靠近屏幕顶部移动到靠
  • Lambda 中的 NodeJS AWS KMS 解密

    首先我要说的是 感觉这个问题被问了很多 但问题中的答案似乎都不能解决我遇到的问题 我正在 NodeJS 中编写 lambda 函数 除了尝试解密加密的环境变量之外 它的一切都很好 为了让它发挥作用 我已经评论了有关我的 Lambda 的所有