amazon-web-services - 如何提高 AWS 加密 SDK 在解密时的性能(响应时间)
问题描述
我有一个 AWS Lambda,用于使用 AWS 加密 SDK 加密 PII(个人识别信息),然后将其存储在 DynamoDB 中。
使用不同的 Lambda 从 DynamoDB 检索数据以显示给最终用户时,每次调用 KMS 的平均时间为 9.48 秒。这是大约 2k 个请求的平均值,请求范围从 ~14.5 秒到 ~5.1 秒。对 KMS 的调用是异步进行的。
从第一次 KMS 调用到最后一次调用的总时间约为 20 秒
我们已经考虑过使用数据密钥缓存,并阅读了这篇关于何时使用它的 AWS 博客文章。
我们的数据输入可能不够频繁,无法充分利用缓存,我正在尝试寻找其他方法来提高性能。
解密代码 Sippet:
async function decryptWithKeyring(keyring: KmsKeyringNode, ciphertext: string, context: {}) {
const b: Buffer = Buffer.from(ciphertext, 'base64');
const { plaintext, messageHeader } = await decrypt(keyring, b);
const { encryptionContext } = messageHeader;
Object.entries(context).forEach(([key, value]) => {
if (encryptionContext[key] !== value) {
throw new Error('Encryption Context does not match expected values');
}
});
return plaintext.toString();
}
加密片段:
async function encryptWithKeyring(keyring: KmsKeyringNode, value: any, context: any) {
const { result } = await encrypt(keyring, value, { encryptionContext: context });
return result.toString('base64');
}
转换为 base64 是为了便于在 DynamoDB 中存储。
解决方案
推荐阅读
- oracle11g - 递归查询可能吗?
- powershell - 如果 ValidatePattern 抛出错误 Powershell,则设置变量
- android - Jetpack Compose 中的自定义 Toast
- function - Google 表格中的条件
- excel - VBA 代码在一台计算机上运行,但不在另一台计算机上运行
- powershell - 如何使用 PowerShell 从命令或文本文件中选择一部分输出
- android - DownloadManager 适用于 API 30,但不适用于 API 27
- python - 如何在 Python 中解决这个函数?
- php - 使用 cookie 向 WooCommerce 购物车添加费用
- javascript - VSCode 不建议 ES6 导入?