Rya*_*her 5 encryption amazon-web-services aws-lambda
我有一个 AWS Lambda,用于在将 PII(个人识别信息)存储到 DynamoDB 之前使用 AWS 加密 SDK 对其进行加密。
当使用不同的 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();
}
Run Code Online (Sandbox Code Playgroud)
加密片段:
async function encryptWithKeyring(keyring: KmsKeyringNode, value: any, context: any) {
const { result } = await encrypt(keyring, value, { encryptionContext: context });
return result.toString('base64');
}
Run Code Online (Sandbox Code Playgroud)
转换为 base64 是为了便于在 DynamoDB 中存储。
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |