A company stores large volumes of sensitive transactional data in an Amazon S3 bucket. The data is encrypted at rest using Server-Side Encryption with AWS KMS Customer Managed Keys (SSE-KMS). Due to high read and write request volumes, the company is experiencing high AWS KMS costs and is occasionally throttled by AWS KMS API limits. Which action should the solutions architect take to resolve this issue with minimal changes to the application?
- AEnable automatic key rotation on the KMS Customer Managed Key to distribute the cryptographic workload.
- BConfigure SSE-S3 encryption for the S3 bucket, and store the plaintext encryption keys as String parameters in Systems Manager Parameter Store to perform client-side encryption.
- Configure the Amazon S3 bucket to use an S3 Bucket Key for server-side encryption.Answer
- DDeploy an S3 Gateway Endpoint in the VPC and route all AWS KMS API traffic through it to eliminate KMS request charges.
Answer
Configure the Amazon S3 bucket to use an S3 Bucket Key for server-side encryption.
Configuring an Amazon S3 Bucket Key for server-side encryption allows S3 to use a bucket-level key derived from AWS KMS. This key is used to encrypt new objects in the bucket, significantly reducing the volume of calls S3 makes to AWS KMS (by up to 99%). This reduces costs and mitigates API throttling without any modifications to the application.
Step-by-Step Solution
Key Concept
Amazon S3 Bucket Keys for SSE-KMS