Как повысить производительность (время отклика) для AWS Encryption SDK при расшифровке - PullRequest
4 голосов
/ 21 февраля 2020

У меня есть AWS лямбда, которая используется для шифрования PII (персональной идентификационной информации) с помощью AWS Encryption SDK перед сохранением в DynamoDB.

При извлечении данных из DynamoDB с использованием другой лямбды для отображения конечным пользователям среднее время каждого звонка в KMS составляет 9,48 с c. Это усредняется для примерно 2 000 запросов с запросами в диапазоне от ~ 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.

Карта трассировки XRay Выборка данных трассировки KMS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...