AWSのLambdaを実行する方法を解説します。
Lambdaはプログラムを実行するときだけ起動および課金されるため、常時起動が必要なEC2を構築する場合に比べてコストを抑えることができます。
IAMロールの用意
LambdaからRDSへアクセスできように、IAMロールを用意します。
基本的なIAMロールの追加方法は、こちらの「IAMポリシーの追加」「IAMロールの追加」を参考にして下さい。
IAMポリシーは以下のように設定します。
![AWSのIAMポリシーの設定](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_iam_policy_compressed-1024x910.png)
Lambdaの追加
AWSマネージメントコンソール > サービス > Lambda > 関数で、(Lambda)関数の作成します。
![AWSのLambda設定①](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_1_compressed-1-1024x911.png)
AWSマネージメントコンソール上で実装
AWSマネージメントコンソール上で実装・実行する方法です。
![AWSのLambda設定②](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_2_compressed-1-1024x910.png)
![AWSのLambda設定③](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_3_compressed-1024x910.png)
ローカル環境で実装
ローカル環境で実装し、AWSへアップロードして実行する方法です。
ローカル環境でのLambda用Python環境の構築方法はこちらを参考にして下さい。
「C:\lambda\lambda_function.py」ファイルを作成し、以下のように記載します。
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
「C:\lambda」内のファイル群を圧縮してZIPファイルをつくります。
![AWSのLambda設定④](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_4_compressed-1024x811.png)
S3へアップロード・Lambdaへ適用
AWSマネージメントコンソール > サービス > S3 > バケットで、バケットを作成します。
同バケットに前述のZIPファイルをアップロードします。
![AWSのLambda設定⑤](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_5_compressed-1024x914.png)
アップロードしたZIPファイルの保存場所(URL)を控えておきます。
![AWSのLambda設定⑥](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_6_compressed-1024x907.png)
Lambdaのコードで、アップロードしたZIPファイルを指定するようにします。
![AWSのLambda設定⑦](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_7_compressed-1024x907.png)
![AWSのLambda設定⑧](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_8_compressed-1024x372.png)
動作確認
テストでアップロードしたコードを実行することができます。
![](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_9_compressedpng-1024x908.png)
ファイル名・関数名の変更
Lambdaで実行するPythonのファイル名と関数名は以下で指定することができます。
![](https://mihono-bourbon.com/wp-content/uploads/2021/09/aws_lambda_10_compressed-1024x490.png)
ローカルで用意したファイルが「lambda_function.py」、関数名が「lambda_handler()」であれば、Lambdaでは上図のように「lambda_function.lambda_handler」と指定します。Lambdaではこの名前での指定がデフォルトです。
デフォルトから変えたい場合、例えば、ローカルで用意したファイルが「lambda_hoge.py」、関数名が「lambda_hoge()」であれば、Lambdaでは上「lambda_hoge.lambda_hoge」のように指定します。