Lambda の機能 - AWS Lambda

Lambda の機能

Lambda では、関数の管理と呼び出しを行うためのマネジメントコンソールと APIを提供しています。また、必要に応じて言語間やフレームワーク間の切り替えを簡単にできるように、標準の機能セットをサポートするランタイムが提供されています。関数に加えて、バージョンやエイリアス、レイヤー、カスタムランタイムを作成することもできます。

Scaling

Lambda は、コードを実行するインフラストラクチャを管理し、受信リクエストに応じて自動的にスケーリングします。関数の呼び出しが速くて関数の単一のインスタンスではイベントを処理できない場合、Lambda は追加のインスタンスを実行することでスケールアップします。トラフィックが低下すると、非アクティブなインスタンスはフリーズまたは停止されます。支払いは、関数でイベントを初期化または処理している時間に対してのみ発生します。


        関数は、開いているリクエストの数に基づいて自動的にスケールします。

詳細については、「Lambda 関数のスケーリング」を参照してください。

同時実行制御

同時実行数の設定を使用して、本番稼働用アプリケーションの可用性と応答性を高めます。関数が過度の同時実行数を使用するのを防ぎ、アカウントの使用可能な同時実行数の一部を関数に予約するには、予約された同時実行数を使用します。同時実行数のリザーブは、使用可能な同時実行のプールをサブセットに分割します。同時実行数のリザーブがある関数は、専用プールからの同時実行のみを使用します。


        2 つの関数に割り当てられた予約済み同時実行数。

レイテンシーの変動なしに関数をスケーリングできるようにするには、プロビジョニングされた同時実行数を使用します。初期化に時間がかかる関数や、すべての呼び出しできわめて低いレイテンシーを必要とする関数の場合、プロビジョニングされた同時実行数により、関数のインスタンスを事前に初期化し、常に実行状態にしておくことができます。Lambda はApplication Auto Scaling と統合されており、使用率に基づいてプロビジョニングされた同時実行数のオートスケーリングをサポートします。


        Application Auto Scaling でプロビジョニングされた同時実行数のオートスケーリング。

詳細については、「Lambda 関数の同時実行数の管理」を参照してください。

非同期呼び出し

関数を呼び出す際は、同期的に呼び出すか非同期的に呼び出すかを選択できます。同期呼び出しでは、イベントを処理する関数を待ってレスポンスを返します。非同期呼び出しでは、Lambda はイベントをキューに入れて処理し、すぐにレスポンスを返します。


        Lambda は、非同期呼び出しイベントを関数に送信する前にキューに入れます。

非同期呼び出しの場合、関数がエラーを返すか、スロットリングされると Lambda は再試行の処理を行います。この動作をカスタマイズするため、関数、バージョン、またはエイリアスのエラー処理設定を定義できます。また、処理に失敗したイベントをデッドレターキューに送信したり、任意の呼び出しのレコードを送信先に送信したりするように Lambda を設定することもできます。

詳細については、「非同期呼び出し」を参照してください。

イベントソースマッピング

イベントソースマッピングを作成することで、ストリームまたはキューからの項目を処理できます。イベントソースマッピングは、Amazon Simple Queue Service (Amazon SQS) キュー、Amazon Kinesis ストリーム、または Amazon DynamoDB ストリームから項目を読み取り、バッチとして関数に送信するための Lambda のリソースです。関数が処理する各イベントには、数百または数千の項目を含めることができます。


        Kinesis ストリームからレコードを読み取るイベントソースマッピング。

イベントソースマッピングでは、未処理項目がローカルでキューに保存されており、関数がエラーを返すかスロットリングされた場合には処理が再試行されます。イベントソースマッピングを設定することで、バッチ処理の動作とエラー処理をカスタマイズできます。あるいは、処理に失敗した項目のレコードを送信先に伝達させることも可能です。

詳細については、「AWS Lambda イベントソースマッピング」を参照してください。

Destinations

送信先は、関数の呼び出しレコードを受け取る AWS リソースです。非同期呼び出しの場合、呼び出しレコードをキュー、トピック、関数、またはイベントバスに送信するように Lambda を設定できます。成功した呼び出しと処理に失敗したイベントに別々の送信先を設定できます。呼び出しレコードには、イベント、関数のレスポンス、レコードが送信された理由に関する詳細が含まれます。


        Lambda は、結果に応じて、呼び出しレコードをキューまたはイベントバスの送信先に送信します。

ストリームから読み取るイベントソースマッピングの場合、処理に失敗したバッチのレコードをキューまたはトピックに送信するように Lambda を設定できます。イベントソースマッピングの失敗レコードには、バッチに関するメタデータが含まれており、ストリームの項目を指しています。

詳細については、「非同期呼び出しの送信先の設定」、および「Amazon DynamoDB で AWS Lambda を使用する」と「Amazon Kinesis で AWS Lambda を使用する」でエラー処理のセクションを参照してください。

関数ブループリント

Lambda コンソールで関数を作成する場合、最初から作成を開始する、ブループリントを使用するか、コンテナイメージを使用するか、AWS Serverless Application Repository からアプリケーションをデプロイするかを選択できます。ブループリントからは、AWS のサービスや一般的なサードパーティーのアプリケーションでの Lambda の使用方法を示すサンプルコードが提供されます。ブループリントには、Node.js および Python ランタイム用のサンプルコードおよび関数設定プリセットが含まれています。

ブループリントは、Amazon Software License の下で使用するために提供されています。これらは、Lambda コンソールでのみ使用できます。

テストおよびデプロイのツール

Lambda では、コードをそのまま、またはコンテナイメージとしてデプロイできます。エコシステムの中の豊富なツールを使用して、AWS や Docker コマンドラインインターフェイス (CLI) などの一般的なコミュニティツールにより、Lambda 関数の作成、ビルド、デプロイを行うことができます。

Docker CLI の設定については、Docker ドキュメントウェブサイトの「Docker の入手」を参照してください。AWS での Docker の使用方法の概要については、Amazon Elastic Container Reg ユーザーガイドユーザーガイドの「AWS CLI を使用した Amazon ECR の開始方法」を参照してください。

アプリケーションテンプレート

Lambda コンソールでは、継続的デリバリーパイプラインを使用してアプリケーションを作成できます。Lambda コンソールのアプリケーションテンプレートには、1 つ以上の関数のコード、関数とそれをサポートする AWS リソースを定義するためのアプリケーションテンプレート、AWS CodePipeline パイプラインを定義するためのインフラストラクチャテンプレートが含まれています。パイプラインには、含まれている Git リポジトリに変更をプッシュするたびに実行されるビルドとデプロイのステージがあります。

アプリケーションテンプレートは、MIT No Attribution ライセンスの下で使用するために提供されています。これらは、Lambda コンソールでのみ使用できます。

詳細については、「Lambda コンソールでの継続的デリバリーによるアプリケーションの作成」を参照してください。