■ はじめに
https://dk521123.hatenablog.com/entry/2021/10/05/105550
のコードを AWS Lambda (ラムダ)で実行する必要ができたのだが よくよく考えると Lambda は、Javaでしか組んだことがなく、 Python は初めてだったので、メモっておく。 後、大分、前にやったから、すっかり忘れているので、 リハビリも兼ねて、デプロイ手順とかもメモっておく。
目次
【1】AWS Lambda 【2】テンプレート 【3】プログラム実行までの流れ 1)Lambda関数をAWS上に登録する 2)Test Event登録およびTest 実行 3)処理したいプログラムを実装する 【4】その他技術事項 1)環境変数の設定・取得 2)ログ出力
【1】AWS Lambda
https://dk521123.hatenablog.com/entry/2017/04/05/235618
より抜粋 ~~~~~~~~ * サーバレスのプログラム実行環境 ~~~~~~~~
【2】テンプレート
* Python の場合、以下のようになる。
Pythonコード
import json def lambda_handler(event, context): # ★ここに自分の実装を書く return { 'statusCode': 200, 'body': json.dump("Hello from Lambda!") }
【3】プログラム実行までの流れ
1)Lambda関数をAWS上に登録する
[1] AWSマネージメントコンソールにログインし、 「Lambda」のページにアクセスする [2] 画面右上の「Create function」ボタン押下 [3] 以下を入力し、画面右下の「Create function」ボタン押下 ~~~~~~~ * 「Author from scratch」を選択(デフォルトで選択されている) Base information * Function name : 任意(今回は「hello_world」) * Runtime : Python 3.9 (他にも「3.6」~「3.8」が選択可能) * Architecture : x86_64(デフォルトで選択されている) ~~~~~~~ ※ 後は、既存のロールやVPCなどがあれば選択する
2)Test Event登録およびTest 実行
「1)-[3]」の流れのまま... [1] 「Test」ボタン押下 [2] Test Eventの設定ページにおいて、以下を入力し、「Test」ボタン押下 * Event template: hello_world (デフォルトで選択されている) * Event name : 任意(ここでは「hello_world」)
3)処理したいプログラムを実装する
* テンプレートの「# ★ここに自分の実装を書く」部分に自分の実装を書く
使用上の注意
* 修正後にTestする際は、一度、「Deploy」ボタン押下後ではないと 修正が反映されないので注意 => 結構、ハマった。ログ埋め込んでもでてこないので、、、
【4】その他技術事項
1)環境変数の設定・取得
* 以下の公式サイトに記載されている。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html
a) 環境変数を取得する(例:現在のRegion nameの取得)
import os region = os.environ.get('AWS_REGION') # region = os.environ.get('AWS_REGION', 'us-west-2')
b) 独自の環境変数を設定する
[1] AWS マネージメントコンソールにおいて、対象のLambdaを選択する [2] [Configuration]-[Enviroment variables]-[Edit]を選択 [3] 「Key」「Value」に環境変数名とその値を入力し、「Save」ボタン押下 => 使い方は「a) 環境変数を取得する」のようにすればいい。
2)ログ出力
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-logging.html
に詳しく記載されている。 上述の「使用上の注意」で述べているように 「Deploy」ボタン押下しないと修正が反映されないので注意。 => ログ埋め込んでもログが出力されなくてハマって大変だった、、、
サンプル
import os import logging # print()文でもできる(簡単なツールならprint()でもいいかも) logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): logger.info('## ENVIRONMENT VARIABLES') logger.info(os.environ)
確認方法
[1] AWS マネージメントコンソールにおいて、対象のLambdaを選択する [2] [Monitor]-[Logs](又は「View logs in CloudWatch」)を選択
参考文献
https://dev.classmethod.jp/articles/lambda-my-first-step/
関連記事
Lambda ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2017/04/05/235618
Lambda ~ Python / S3トリガー ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229
Lambda ~ Python / 外部モジュール追加 ~
https://dk521123.hatenablog.com/entry/2024/05/25/005456
Lambda ~ Lambda で気を付ける事項 ~
https://dk521123.hatenablog.com/entry/2018/02/04/233700
Lambda のトラブルシュート
https://dk521123.hatenablog.com/entry/2017/12/16/231714
Serverless Framework ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/11/02/000200
Serverless Framework ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/11/03/234825
機密データの管理 ~ Secrets Manager / boto3 編 ~
https://dk521123.hatenablog.com/entry/2021/10/05/105550