AWS Lambda –概要
AWS Lambdaサーバーレスコンピューティングを実行するサービスであり、サーバーなしでコンピューティングを行います。コードは、S3バケット内のファイルの追加/削除、Amazon dynamo dBテーブルの更新、Amazon APIゲートウェイからのHTTPリクエストなど、AWSサービスのイベントの応答に基づいて実行されます。
で作業するために AWS Lambda、AWSLambdaサービスでコードをプッシュする必要があります。インフラストラクチャ、オペレーティングシステム、サーバーのメンテナンス、コードモニタリング、ログ、セキュリティなど、他のすべてのタスクとリソースはAWSによって処理されます。
AWS LambdaJava、NodeJS、Python、C#、Goなどの言語をサポートします。AWSLambdaはAWSサービスでのみ機能することに注意してください。
AWS Lambdaとは何ですか?
公式ドキュメントに記載されているAWSLambdaの定義は次のとおりです-
AWS Lambdaは、サーバーをプロビジョニングまたは管理せずにコードを実行できるようにするコンピューティングサービスです。AWS Lambdaは、必要な場合にのみコードを実行し、1日あたり数リクエストから1秒あたり数千リクエストまで自動的にスケーリングします。消費した計算時間に対してのみ料金を支払います。コードが実行されていないときは無料です。
AWS Lambdaはどのように機能しますか?
AWSLambdaの動作を5つの簡単なステップで説明するブロック図を以下に示します-
Step 1 − AWSラムダがサポートする任意の言語(NodeJS、Java、Python、C#、Go)でAWSラムダコードをアップロードします。
Step 2 − これらは、AWSラムダをトリガーできるいくつかのAWSサービスです。
Step 3 −アップロードコードとトリガーが発生したイベントの詳細を含むAWSLambda。たとえば、Amazon S3、Amazon API Gateway、Dynamo dB、Amazon SNS、Amazon Kinesis、CloudFront、Amazon SES、CloudTrail、モバイルアプリなどからのイベント。
Step 4 − −などのシナリオでAWSサービスによってトリガーされた場合にのみAWSLambdaコードを実行します
- ユーザーがS3バケットにファイルをアップロードする
- http get / postエンドポイントURLがヒットしました
- ダイナモdBテーブルでデータが追加/更新/削除されます
- プッシュ通知
- データストリームコレクション
- ウェブサイトのホスティング
- メール送信
- モバイルアプリなど
Step 5 − AWSは、AWSラムダコードが実行されたときにのみ課金され、それ以外の場合は課金されないことに注意してください。
AWSLambdaを使用する利点
AWS Lambdaには、作業中に複数のメリットがあります。このセクションでは、それらについて詳しく説明します-
コードの操作のしやすさ
AWS Lambdaは、コードをアップロードするためのインフラストラクチャを提供します。コードの保守を処理し、必要なイベントが発生するたびにコードをトリガーします。これにより、コードに必要なメモリとタイムアウトを選択できます。
AWS Lambdaは、イベントトリガーに従って並列リクエストを実行することもできます。
ログプロビジョニング
AWS Lambdaは、コードが実行された回数と実行にかかった時間、消費されたメモリなどの詳細を提供します。AWSCloudWatchはすべてのログを収集し、実行フローの理解とコードのデバッグに役立ちます。
使用量に基づく請求
AWS Lambdaの課金は、メモリ使用量、行われたリクエスト、実行時に行われ、最小100ミリ秒単位で課金されます。したがって、500ミリ秒の実行の場合、請求は100ミリ秒ごとに行われます。AWSラムダコードを500ミリ秒で実行するように指定し、実行にかかる時間がわずか200ミリ秒の場合、AWSは、500ミリ秒ではなく200ミリ秒の実行時間に対してのみ請求します。AWSは、使用された実行時間に対して常に課金します。関数が実行されない場合は支払う必要はありません。
多言語サポート
AWS Lambdaは、Nodeなどの一般的な言語をサポートしています。js、Python、Java、C#、Go。これらは広く使用されている言語であり、開発者なら誰でもAWSLambdaのコードを簡単に作成できます。
コードの作成と展開の容易さ
Lambdaでコードをオーサリングおよびデプロイするために利用できる多くのオプションがあります。コードの記述には、AWSオンラインエディター、Visual Studio IDE、またはEclipseIDEを使用できます。また、AWSLambdaコードの記述とデプロイを簡単にするサーバーレスフレームワークもサポートしています。AWSコンソールの他に、コードを作成してデプロイするためのAWS-cliがあります。
その他の機能
AWS無料利用枠にログインすると、AWSLambdaを無料で使用できます。それはあなたに1年間無料でサービスを提供します。AWS無料利用枠が提供する無料サービスをご覧ください。
AWSLambdaを使用するデメリット
多くの利点があるにもかかわらず、AWSLambdaには次の欠点があります-
小規模なプロジェクトには適していません。
コードを注意深く分析し、メモリとタイムアウトを決定する必要があります。関数が割り当てられた時間よりも多くの時間を必要とする場合、関数は指定されたタイムアウトに従って終了し、コードは完全には実行されません。
AWS LambdaはインフラストラクチャをAWSに完全に依存しているため、コードで必要な場合は追加のソフトウェアをインストールできません。
AWSLambdaをトリガーするイベント
AWSLambdaをトリガーできるイベントは次のとおりです-
- S3オブジェクトへのエントリ
- Dynamo DBテーブルのデータの挿入、更新、削除
- SNSからのプッシュ通知
- APIGatewayへのGET / POST呼び出し
- CloudFrontでのビューアまたはオリジンリクエスト/レスポンスでのヘッダーの変更
- AWSKinesisデータストリームのログエントリ
- CloudTrailのログ履歴
AWSLambdaのユースケース
AWS Lambdaは、主にバックグラウンドプロセスを実行するために使用されるコンピューティングサービスです。他のAWSサービスと併用するとトリガーされる可能性があります。AWSLambdaを使用できるAWSサービスのリストを以下に示します-
S3オブジェクトとAWSLambda
Amazon S3は、S3にファイルがアップロードされると、イベントの詳細をAWSLambdaに渡します。ファイルのアップロードまたはファイルの削除またはファイルの移動の詳細は、AWSLambdaに渡されます。AWS Lambdaのコードは、イベントの詳細を受信するときに必要な手順を実行できます。たとえば、S3に挿入された画像のサムネイルを作成します。
DynamoDBとAWSLambda
DynamoDBは、テーブルにデータが追加、更新、削除されたときにAWSLambdaをトリガーできます。AWS Lambdaイベントには、挿入/更新または削除に関するAWSDynamoDBテーブルのすべての詳細が含まれています。
APIゲートウェイとAWSLambda
API Gatewayは、GET / POSTメソッドでAWSLambdaをトリガーできます。フォームを作成し、API Gatewayエンドポイントと詳細を共有し、AWS Lambdaで使用して、たとえばDynamoDBテーブルにデータを入力するなどのさらなる処理を行うことができます。
SNSとAWSLambda
SNSは、プッシュ通知、SMSの送信などに使用されます。SNSでプッシュ通知が発生すると、AWSラムダをトリガーできます。トリガーを受信したときに、AWSLambdaから電話番号にSMSを送信することもできます。
スケジュールされたイベントとAWSLambda
スケジュールされたイベントは、cronジョブに使用できます。AWS Lambdaをトリガーして、定期的な時間パターンでタスクを実行できます。
CloudTrailとAWSLambda
CloudTrailは、アカウントのログを監視するのに役立ちます。AWS Lambdaを使用して、CloudTrailログをさらに処理できます。
KinesisとAWSLambda
Kinesisは、ウェブサイトのクリック、ログ、ソーシャルメディアフィードからのリアルタイムトラッキングデータをキャプチャ/保存するために使用され、AWSLambdaへのトリガーはこのログに対して追加の処理を実行できます。
CloudFrontとLambda @ Edge
CloudFrontは、ウェブサイトをホストできるコンテンツ配信ネットワークであり、Lambda @ Edgeを使用して、ビューアリクエスト、オリジンリクエスト、オリジンレスポンス、ビューアレスポンスからのヘッダーを処理できます。ヘッダーの変更には、Cookieデータの変更、URLの書き換え、ユーザーに送信される応答を変更するためのABテスト、セキュリティ目的でのヘッダー情報の追加などのタスクが含まれます。