__init__.py
に lambda_handler
をコーディングしている Flask アプリケーションを AWS CloudFormation の AWS::Serverless::Function
や AWS::Lambda::Function
リソースの Handler
プロパティへ lambda_handler
を設定する例です。
app.py
や lambda_function.py
の例が公式に掲載されているため、世の中の実装もその踏襲が多く、初学者によく質問されるので掲載しておきます。
以下は、AWS SAM として定義する場合の例です。
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: >-
AWS CloudFormation Template for my-app stack:
The FROG Brigade dot NET - Rev. 1.0.0, 2023-01-01
Resources:
MyAppLambdaFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyApp
Architectures: x86_64
Runtime: python3.9
Description: "Marvelous My Application"
PackageType: Zip
CodeUri: my_app/
Handler: __init__.lambda_handler
AWS Lambda として定義する場合も Handler
プロパティ部分は変わりません。
補足
このように Handler
プロパティへ任意の Python 関数を指定できるため、AWS Lambda Function ハンドラは lambda_handler
という名称でなくても構いません。
event
と context
を引数とする任意の関数を AWS Lambda Function ハンドラとすることができます。