👏

【初心者向け】AWS Lambda 環境変数の保管時の暗号化

に公開

はじめに

本ページは個人の勉強で使用することを目的に作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報についてはAWS公式ドキュメントをご参照ください。

やること

  • AWS Lambdaで環境変数を使用して"Hello World"を出力する関数を作成する。
  • 環境変数はKMSのAWSマネージドキーで保管時の暗号化をする。

1. Lambda関数の作成

  1. Lambdaコンソールから関数の作成をクリックします。
  2. 以下の設定値を選択して関数の作成をクリックします。
  • 関数の作成:一から作成
  • 基本的な情報
    • 関数名:lambda-env-test
    • ランタイム:Python 3.12
    • アーキテクチャ:x86_64
  • デフォルトの実行ロールの変更
    • 実行ロール:基本的なLambdaアクセス権限で新しいロールを作成

2. ソースコードの作成

  1. Lambda関数lambda-env-testのコードソースを作成します。


lambda_function.py

import json
import message

def lambda_handler(event, context):
    
    msg = message.hello()
    
    return {
        'statusCode':200,
        'body':json.dumps(msg)
    }

message.py

import os

def hello():
    greet = os.environ['GREET']
    return greet

コードについて

  • message.py 4行目のos.environ['GREET']GREETというキーに一致する環境変数の値を取得し、変数greetに代入しています。
greet = os.environ['GREET']


3. 環境変数の設定

  1. 設定タブの環境変数から編集をクリックします。

  2. 環境変数の編集画面で以下の環境変数を設定し、保存をクリックする。

  • 環境変数
    • キー:GREET ※os.environ['GREET'] で呼び出す環境変数のキー
    • 値:Hello World
  • 暗号化の設定
    • 転送時の暗号化
      • 転送時の暗号化に使用するヘルパーの有効化:未選択
    • 保管時に暗号化するAWS KMSキー:(デフォルト)aws/lambda

  1. 環境変数が保存されました。

4. Lambda関数のテスト

  1. コードタブのTestをクリックする。

  2. テストイベントを設定画面で、デフォルトの設定状態で呼び出すをクリックします。

  3. Execution resultタブにHello worldが出力されます。

おわりに

  • KMSキーでの暗号化にはAWS マネージド型キーとカスタマー管理型のキーのどちらも利用できますが、KMSキーポリシーで復号できるユーザーを制限したいなどの場合はカスタマー管理型のキーを使用した方がよいでしょう。

  • Lambda関数の上限は合計4KBとなっています。それ以上のサイズの環境変数を使用したい場合はパラメータストア アドバンスドを使用すると8KBまで使用できます。

参考

  • Lambdaでの環境変数の暗号化

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars-encryption.html

  • Python os.environ

https://docs.python.org/ja/3/library/os.html#process-parameters

Discussion