【AWS】Lambdaの環境変数を実行毎に変更する_#005
今回のゴール
AWS Lambdaに設定している環境変数の値を、
Lambda実行の度に変更します。
※本記事では、翌日の日付に変更します。
環境変数をLambda関数の実行の度に任意に変更することで、
同一のLamnda関数を連続実行させつつ、処理範囲を変更できます。
例)5分毎の同一Lambda関数起動で、売上情報CSVを1日ずつ作成する。
構成図

リソース一覧
・Lambda関連(ロール、関数)
…Lambda用のロールを作成。
今回用の関数を定義。
作成手順
-
Lambda用 IAMロール作成
・ポリシーを新規作成します。今回は「policy-lambda」で作成しました。

◆JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:GetFunctionConfiguration",
"lambda:UpdateFunctionConfiguration"
],
"Resource": "*"
}
]
}
・ロールを新規作成します。今回は「policy-lambda」で作成しました。
◆信頼関係
◆信頼関係のJSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
◆許可ポリシー
-
関数作成
・Lambda>関数>関数を作成 の順でクリックします。

・下記設定で「関数の作成」をクリックします。
◆ランタイム:Pyrhon X.XX
◆アーキテクチャ:x86_64
◆実行ロール:上記で作成したロール
・「設定」タブで各種設定を変更します。
◆一般設定:タイムアウト値を1分に設定します。
※初期値の3秒では、処理が完了しない場合があるため

◆環境変数:下記のよう設定します。
※今回は、環境変数「ENV_DATE」、値「2025-03-01」で設定しました。
・「コード」タブで下記のようにコードを記載し、Deployします。
◆コード
import boto3import osimport loggingimport datetimefrom dateutil.relativedelta import relativedelta
client = boto3.client('lambda')
def lambda_handler(event, context):# 環境変数を取得response = client.get_function_configuration(FunctionName=FUNCTION_NAME)env_vars = response['Environment']['Variables']str_date = env_vars.get('ENV_DATE')
# 環境変数を+1日するnew_date = (datetime.datetime.strptime(str_date, "%Y-%m-%d") + datetime.timedelta(days=1)).strftime("%Y-%m-%d")env_vars['ENV_DATE'] = new_dateclient.update_function_configuration(FunctionName=FUNCTION_NAME, Environment={'Variables': env_vars})print(new_date)return {'statusCode': 200,'body': 'Finish!'} -
関数テスト実行
・「テスト」タブでテストイベントを新規作成・保存します。
今回の関数では、任意の引数はないので、JSONはブランクにしておきます。
・「コード」タブでテスト実行します。
・正常終了しました!
・環境変数も翌日になっていました!