AWS Lambdaについてまとめています。
AWS Lambdaは、サーバレスでコードを実行できるコンピューティングサービス
Lambda はサーバーインスタンスを起動しておかなくてもコードを実行できるサーバレスコンピューティングサービスです。Lambda では、可用性の高いコンピューティングインフラ上で実行されます。Node.jsやPythonなどの環境でコードを実行し、コンピューティングリソースの管理をユーザがおこなう必要はありません。サーバやOSのメンテナンス、容量のプロビジョニング、オートスケール、コードのモニタリング、ログ記録などを行ってくれるんですね。
サーバレスでのコード実行のメリットは、サーバ管理が不要な点と、コード実行時間のみ課金できる点です。動的ウェブやモバイルバックエンド処理として、「呼ばれたら都度処理を行う」ようなアプリケーションと相性が良いです。
Lambda は、ランタイムの使用で複数言語をサポートしています。コンテナイメージとして定義された関数では、コンテナイメージを作成時に、ランタイムと Linux ディストリビューション(Amazon Linuxか、Amazon Linux 2)を選択します。ランタイムを変更するには、新しいコンテナイメージを作成します。
- Node.js ランタイム
- Python ランタイム
- Ruby ランタイム
- Java ランタイム
- Go ランタイム
- .NET ランタイム
- カスタムランタイム
AWS Lambdaの料金
Amazon Lambdaの料金は、アーキテクチャ、月間リクエスト数、リクエストごとの実行時間、割当メモリ量で決まります。オプションとして、プロビジョニングされた同時実行性(アクセスが急増した場合などに、プロビジョニングすることで2桁ミリ秒で応答するハイパー対応状態にする)、Lambda@Edge(ユーザに近いロケーションでコード実行する機能。パフォーマンス向上と待ち時間短縮が見込める)で決まります。
項目を、AWS Pricing Calculatorに入力することで見積もりを入手できます。
【関連記事】
▶AWSの見積もりは、AWS Pricing Calculatorで自動計算 ユースケースから流用も可能
AWS Lambdaの使い方
AWS Lambdaは、以下の手順で使用できます。
- Lambda コンソールを起動する
- Lambda の設計図を選択する
- Lambda 関数を設定して作成する
- Lambda 関数を呼び出して結果を検証する
- メトリクスをモニタリングする
- Lambda 関数を削除する
参考)サーバーレスコードを実行する方法 – アマゾン ウェブ サービス (AWS)
AWSマネジメントコンソールから、検索窓に「Lambda」と入力して、AWS Lambdaコンソールを開きます。
【関連記事】
▶AWSを集中管理したい!AWS マネジメントコンソールを使いこなそう!
AWS Lambdaコンソールから「関数の作成」をクリックします。
関数の作成には、「一から作成」やサンプルコードを使った「設計図の使用」、関数にコンテナをデプロイする「コンテナイメージ」、サーバレスアプリのサンプル「Serverless Application Repositoryの参照」から選べます。ここでは、「設計図の使用」を選び、設計図「hello-world-python」を選択し、「設定」をクリックします。
hello-world-pythonのコードが表示されます。関数名や、実行ロールの設定を行ないます。ここでは、関数名に[mytest」とつけ、実行ロールは「基本的なLambdaアクセス権限で新しいロールを作成」を選びました。「Lambda関数のコード」で、実行環境(ランタイム)や、アーキテクチャを選択可能です。ここでは、設計図のデフォルトのまま、ランタイム=Python3.7、アーキテクチャ=x86_64のまま、「関数の作成」をクリックします。
コードは以下の通りです。コード内容は、テストイベントで渡されたkey1、key2、key3の値を表示するコードです。
import json print('Loading function') def lambda_handler(event, context): #print("Received event: " + json.dumps(event, indent=2)) print("value1 = " + event['key1']) print("value2 = " + event['key2']) print("value3 = " + event['key3']) return event['key1'] # Echo back the first key value #raise Exception('Something went wrong')
「コード」ペインの「Test」→「configure test event」を選択し、テストイベントを編集します。
Lambda関数に渡すテストイベントの編集が可能です。イベントテンプレートで「hello-world」を選択(デフォルトで選択されている)します。イベント名を入力し、「作成」をクリックします。イベントデータは編集できますが、今回は内容はそのままにしておきます。
「テスト」ペインをクリックし、「テスト」ボタンクリックで、Lambda関数mytestにテストイベントが渡された結果が表示されます。
結果は以下の通りです。リクエストIDが表示され、Lambda関数の実行結果が表示されます。
START RequestId: 5bfa14ae-d1fd-4fa7-896e-241fb4352750 Version: $LATEST Loading function value1 = value1 value2 = value2 value3 = value3 END RequestId: 5bfa14ae-d1fd-4fa7-896e-241fb4352750 REPORT RequestId: 5bfa14ae-d1fd-4fa7-896e-241fb4352750 Duration: 1.57 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 36 MB Init Duration: 100.89 ms
関数を削除するには、Lambdaコンソールのナビゲーションペインで「関数」を選択して、削除したい関数にチェックをつけ「アクション」プルダウンメニューから「削除」を選択します。
AWS Lambdaのまとめ
- AWS Lambdaは、サーバレスでコードを実行するサービス
- AWS Lambdaが対応している環境(Node.jsやPython)で、指定されたバージョンでのみコード実行可能
- AWS Lambdaの料金はオンデマンド。コードの実行時間のみ課金されるので、EC2インスタンスでの実行と比べて、コストの節約になります。