この記事の対象者
初めてLambdaを使う人、使い始める人
結論
- パラメータ名:決まり文句ではないが ほぼ決まり文句
AWS Lambda ランタイムの基本
パラメータの基本構造
- 第一パラメータ:イベントデータ(通常
event
) - 第二パラメータ:コンテキスト情報(通常
context
)def lambda_handler(第一パラメータ, 第二パラメータ):
順序の重要性
- 第一パラメータ:常にイベントデータ
- 第二パラメータ:常にコンテキスト情報
パラメータ名のカスタマイズ例
標準的な使用方法
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
カスタム名の使用例
def lambda_handler(action, text):
print(f"Received action data: {action}")
print(f"Function name: {text.function_name}")
user_name = action.get('user_name', 'Guest')
return f"Hello, {user_name}! This is a custom named handler."
さらにシンプルな命名例
def lambda_handler(event, context):
上記を下記の様にすることも可能
def lambda_handler(A,B):
def lambda_handler(A, B):
print(f"Received event data: {A}")
print(f"Function name: {B.function_name}")
user_name = A.get('user_name', 'Guest')
remaining_time = B.get_remaining_time_in_millis()
return {
'message': f"Hello, {user_name}!",
'remaining_time': remaining_time
}
特殊なユースケース
context を使用しない場合
- 用途:S3バケットのCSVファイルをJSON変換
- 特徴:イベントデータのみ使用。context 不要
def lambda_handler(event, _):
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
return convert_csv_to_json(bucket, key)
context のみを使用する場合
- 用途:簡単な挨拶ボットなど
- 特徴:Lambda関数の情報のみ使用。イベントデータ不要
import time
def lambda_handler(_, context):
current_time = time.strftime("%Y-%m-%d %H:%M:%S")
function_name = context.function_name
remaining_time = context.get_remaining_time_in_millis()
message = (f"こんにちは!\n"
f"現在の時刻は {current_time} です。\n"
f"この関数の名前は「{function_name}」です。\n"
f"関数はあと約 {remaining_time / 1000:.2f} 秒実行可能です。")
return {
'statusCode': 200,
'body': message
}
まとめ
- パラメータ名:自由にカスタマイズ可能
- 順序:固定。第一がイベント、第二がコンテキスト
補足
- 標準名(
event
,context
)の使用が多め