2026-02-11
LambdaでAPIキーやトークンなどの機密情報を扱う際、環境変数に直接設定するとLambdaコンソールやCloudFormationコンソールで平文で表示されてしまいます。 今回はAWS Systems Manager Parameter Store(SecureString)を使って、Lambda関数内で安全に機密情報を取得する方法を紹介します。
CDKで環境変数に直接値を設定することも可能ですが、SecureStringの場合は以下の理由から避けるべきです。
そのため、環境変数にはParameter Storeのキー名のみを渡し、Lambda関数内で実際の値を取得する方法を採用しました。
まず、CDKでLambdaのロールにParameter Storeの読み取り権限を付与します。
{parameter-store-key}には実際のパラメータ名を指定します。リソースを絞ることで、必要最小限の権限に制限できます。
Lambda関数内で、AWS SDKを使ってParameter Storeから値を取得します。
WithDecryption: trueを指定することで、SecureStringの値を復号化して取得できます。
取得した値をprocess.envに設定することで、既存のコードを大きく変更せずに機密情報を利用できます。
Parameter Storeを使うことで、機密情報をLambdaコンソールに露出させることなく安全に管理できます。 少し手間はかかりますが、セキュリティの観点からSecureStringを扱う場合はこの方法をおすすめします。