##環境
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.作成
をクリックする。
####Lambda関数をテストする