ある開発者は、100MBを超える大容量ファイルをAmazon S3に保存する前にクライアント側で暗号化する必要があります。AWS KMS API(aws kms encrypt)を直接使用してファイルを暗号化しようとしたところ、ファイルサイズ制限に関するエラーが発生しました。この問題を解決するための最も適切な方法はどれですか?
KMSのEncrypt APIは最大4KBまでのデータしか直接暗号化できません。大容量データにはエンベロープ暗号化を使用します。GenerateDataKey APIで平文データキーと暗号化済みデータキーのペアを取得し、平文データキーでファイルをローカル暗号化します。平文データキーは使用後すぐ破棄し、暗号化済みデータキーをファイルと共に保存します。復号時はKMS Decrypt APIで暗号化済みデータキーを復号してからファイルを復号します。 選択肢Aのファイルを4KBチャンクに分割してKMS Encrypt APIを繰り返す方法は、100MBのファイルで約25,600回のAPIコールが必要となりコストとレイテンシが著しく増大するため実用的ではありません。 選択肢CのGenerateDataKeyWithoutPlaintextは平文キーを返さないため単独ではファイルを暗号化できません。 選択肢DのCloudHSMは専用のハードウェアセキュリティモジュールを管理するサービスであり、KMSの4KB制限を自動的に回避する機能は持たず、導入・運用コストも大幅に増加するため適切ではありません。