環境
AWS Lambda
Python 3.7
AWS Lambdaとは
サーバレスコンピューティングサービス
サーバなしでコードを実行できる。
通常ならサーバのセットアップなどが必要だが、それらが無くてもプログラムを実行できる。FaaSに該当する
IaaSーPaaSーFaaS
ーSaaS
ファンクションをサービス提供する。
サービス | ターゲットとなる方式 | 説明 |
---|---|---|
PaaS | リクエストリプライ方式 | リクエストごとにアプリケーション全体を起動・終了させる |
FaaS | イベントドリンブン方式 | 必要なサービス毎に起動・終了させる |
画像引用:IT media:コレ1枚で分かる「サーバレスとFaaS」
コードを実行するインフラに依存せずに実行できる
-
サポートしている言語は、
- Java
- Go
- PowerShell
- Node.js
- C#
- Python
- Ruby
イベントに応じてコードを実行できる
例:S3バケットにオブジェクトが配置されたら実行する自動スケーリング
Lambdaで処理が追いつかなくなったら自動でLambdaを追加するイメージ。エッジロケーションで実行できる
お客さんに最も近い場所で実行できる。EC2インスタンスに比べてサーバ管理が無い
実行していないアイドリング時の料金がかからない
他のAWSとどんな連携ができるのか
APIGateway
APIGatewayにリクエストするとLambdaが実行される。
S3
S3バケットにオブジェクトが配置されたらLambdaが発動する。
EventBridge
定期的にLambdaを実行する。
例:毎朝このLambdaの関数を実行したい。
CloudWatchLogs
Lambda関数を作成すると自動的にCloudWatchと連携がされる。
Lambdaの実行結果は正常に終了したのか、エラーが出たのか、CloudWatchのログで確認が出来る。
用語
イベントソース
Lambda関数が実行されるきっかけ。
例:S3,SQS,SNS,EventBridge
ハンドラ
Lambda側でイベントを受け取る。
デフォルト:ファイル名.関数名
公式チュートリアル
以下ページで簡単な
Hello World
的な戻り値の出力を試すことができ、操作感を掴むことができる。
AWS Lambda サーバーレスでコードを実行
以下の場合は、Pythonを使った実行結果。
イベントソースがLambdaに送られ、サンプルコードが実行される様子をイメージで理解するページもある。
APIゲートウェイやKinesis、S3バケットをクリックするとLambdaを実行できる。
ハンズオン
Lambda関数の作成から実行までの一連の流れを実際に手を動かしてやってみる。
Lambda関数の作成
-
Lambda > 関数の作成
をクリックする。- 以下のいずれかのオプションを選択して、関数を作成します。:
設計図の使用
- キーワードによる検索:
hello-world-python
- 以下のいずれかのオプションを選択して、関数を作成します。:
-
設定
をクリックする。- 関数名:
hello-python
(任意) - 実行ロール:
基本的な Lambda アクセス権限で新しいロールを作成
- 関数名:
-
関数の作成
をクリックする。
テストイベントの作成
-
コードタブ > hello-python/lambda_function.pyを開く > Test
をクリックする。新しいテストの作成
- イベントテンプレート:
hello-world
- イベント名:
helloEvent
(任意) - コード欄
テストイベントのLambdaに渡される状態を記載。keyがvalueに対応している。
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
2.作成
をクリックする。