Lambdaの環境変数をKMSで暗号化しておく IT by NHM - 2021-03-102021-03-10 1.関数を作成する 2.関数に紐づけられたロールを確認する(「設定」ー「アクセス権限」で確認可能。リンククリックするとIAMに飛ぶ)。 3.KMSで鍵を作成する(カスタマー管理型のキー)。 4.ロールに割り当てる。 5.作成した鍵のエイリアスとARNを覚えておく。 6.Lambdaに戻って関数の環境変数を設定し、「暗号化」を押す 7.実行ロールポリシーをコピーして別ウインドウを開いて、IAMに割り当てる。今回は復号なのでDecryptだけで良い。 8.lambdaを開いているウインドウに戻って「暗号化」を押す。Valueが暗号化された。 9.復号化する(シークレットスニペットの復号をコピーして利用する) require 'aws-sdk-kms' require 'base64' ENCRYPTED = ENV['test'] require 'json' require 'aws-sdk-kms' require 'base64' ENCRYPTED = ENV['test'] # Decrypt code should run once and variables stored outside of the function # handler so that these are decrypted once per container DECRYPTED = Aws::KMS::Client.new .decrypt({ ciphertext_blob: Base64.decode64(ENCRYPTED), encryption_context: {'LambdaFunctionName' => ENV['AWS_LAMBDA_FUNCTION_NAME']}, }) .plaintext def lambda_handler(event:, context:) # TODO implement { statusCode: 200, body: JSON.generate("Hello from Lambda! #{DECRYPTED}") } end 10.デプロイしてテスト呼び出し。成功 Appendix 今回作成したものの削除順序 1.IAMからKMSの内容を削除する。 2.Lambda関数を削除する 3.KMSを削除する(削除待機日数7~30を指定) 4.IAMを削除する。 5.Cloudwatchのロググループを削除する。