Lambda の概念 - AWS Lambda

Lambda の概念

Lambda が関数のインスタンスを実行してイベントを処理します。関数にイベントを送信するために、Lambda API を使用してイベントを呼び出すか、AWS のサービスまたはリソースを設定して呼び出すことができます。

Function

関数とは、Lambda でコードを実行するために呼び出すことができるリソースです。関数には、他の処理から渡された、もしくは他の AWS のサービスから送信されたイベントを、処理するためのコードが記述されています。

詳細については、「AWS Lambda 関数の設定」を参照してください。

Trigger

トリガーは、Lambda 関数を呼び出すリソースまたは設定です。トリガーの例としては、関数を呼び出すように設定できる AWS のサービスやイベントソースマッピングなどがあります。イベントソースマッピングは、ストリームまたはキューからアイテムを読み取り、関数を呼び出す Lambda のリソースです。詳細については、「AWS Lambda 関数を呼び出す」および「他のサービスで AWS Lambda を使用する」を参照してください。

Event

イベントは、処理する Lambda 関数のデータを含む JSON 形式のドキュメントです。イベントは、ランタイムによりオブジェクトに変換された上で、関数のコードに渡されます。関数を呼び出すときは、イベントの構造とコンテンツを決定します。

例 カスタムイベント - 気象データ

{ "TemperatureK": 281, "WindKmh": -3, "HumidityPct": 0.55, "PressureHPa": 1020 }

AWS のサービスで関数を呼び出す場合、そのイベントのシェイプはサービスによって定義されます。

例 サービスイベント — Amazon SNS 通知

{ "Records": [ { "Sns": { "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", ...

AWS サービスからのイベントの詳細については、「他のサービスで AWS Lambda を使用する」を参照してください。

実行環境

実行環境は、Lambda 関数のための、安全で分離されたランタイム環境を提供します。関数の実行に必要なプロセスとリソースが、実行環境により管理されます。実行環境からは、関数と、その関数に関連付けられた任意の拡張機能のために、ライフサイクルのサポートが提供されます。

詳細については、「AWS Lambda 実行環境」を参照してください。

デプロイパッケージ

Lambda 関数コードをデプロイするには、デプロイパッケージを使用します。Lambda では、次の 2 種類のデプロイパッケージがサポートされます。

  • 関数コードとその依存関係を含む .zip ファイルアーカイブ。Lambda は、関数のためのオペレーティングシステムとランタイムを提供します。

  • Open Container Initiative (OCI) の仕様に準拠したコンテナーイメージ。関数のコードと依存関係をイメージに追加します。また、オペレーティングシステムと Lambda ランタイムを含める必要があります。

詳細については、「Lambda デプロイパッケージ」を参照してください。

Runtime

ランタイムでは、実行環境で実行される言語固有の環境が提供されます。ランタイムは、呼び出しイベント、コンテキスト情報、およびレスポンスを Lambda と関数の間で中継します。Lambda が提供するランタイムを使用することも、独自に構築することもできます。コードを .zip ファイルアーカイブとしてパッケージ化する場合は、プログラミング言語に適合したランタイムを使用するように、その関数を設定する必要があります。コンテナイメージの場合は、イメージをビルドするときにランタイムをインクルードします。

詳細については、「Lambda ランタイム」を参照してください。

Layer

Lambda レイヤーは、追加のコードまたはデータを含むことができる .zip ファイルアーカイブです。レイヤーには、ライブラリ、 カスタムランタイム 、データ、または設定ファイルを含めることができます。

レイヤーにより、Lambda 関数で使用するライブラリとその他の依存関係をパッケージ化する便利な方法が利用できます。レイヤーを使用することで、アップロードされたデプロイメントアーカイブのサイズを削減し、コードをデプロイするスピードを速めることができます。レイヤーを使用すると、コードの共有と責任の分離を促進し、ビジネスロジックの記述をより迅速に繰り返すことができます。

各関数につき最大 5 つのレイヤーを含めることができます。レイヤーは、標準の Lambda デプロイサイズクォータに対してカウントされます。関数にレイヤーを含むと、実行環境においてコンテンツが /opt ディレクトリに抽出されます。

デフォルトでは、作成したレイヤーは AWS アカウントに対してプライベートになります。レイヤーを他のアカウントと共有するか、またはパブリックにするか選ぶことができます。別のアカウントによって公開されたレイヤーを関数が消費する場合、関数は削除後にレイヤーバージョンを引き続き使用することができます。または、レイヤーへのアクセス権限が呼び出されます。しかし、削除されたレイヤーバージョンを使用して新しい関数を作成したり、関数を更新することはできません。

コンテナイメージとしてデプロイされた関数はレイヤーを使用しません。代わりに、コンテナイメージをビルドする際、必要なランタイム、ライブラリ、およびその他の依存関係を、そのイメージ内にパッケージ化します。

詳細については、「Lambda レイヤーの作成と共有」を参照してください。

Extension

Lambda 拡張機能を使用すると、関数を拡張できます。例えば、拡張機能を使用して、任意のモニタリングツール、オブザーバビリティツール、セキュリティツール、およびガバナンスツールに関数を統合できます。AWS Lambda パートナーが提供する幅広いツールセットから選択することも、独自の Lambda 拡張機能を作成することもできます。

内部拡張機能はランタイムプロセスで実行され、ランタイムと同じライフサイクルを共有します。外部拡張機能は、実行環境で別のプロセスとして実行されます。外部拡張機能は、関数が呼び出される前に初期化されます。また、関数のランタイムと並行して実行され、関数の呼び出しが完了した後も引き続き実行されます。

詳細については、「Lambda 拡張機能の使用」を参照してください。

Concurrency

同時実行数とは、ある時点で関数が処理しているリクエストの数を指します。関数が呼び出されると、Lambda はその関数のインスタンスをプロビジョニングしてイベントを処理します。関数コードの実行が完了すると、別のリクエストを処理できます。リクエストの処理中に関数が再度呼び出されると、別のインスタンスがプロビジョンされるため、関数の同時実行数が増加します。

同時実行数は、AWS リージョンレベルのクォータの対象となります。個々の関数を設定して、同時実行数を制限したり、特定の同時実行数を達成できるようにしたりすることもできます。詳細については、「Lambda 関数の同時実行数の管理」を参照してください。

Qualifier

関数を呼び出したり表示したりするときに、バージョンまたはエイリアスを指定するための修飾子を含めることができます。バージョンは、数値修飾子を持つ関数のコードと設定の変更不可能なスナップショットです。例えば、 。my-function:1エイリアスは、バージョンを指すポインタです。このポインタでは、別のバージョンにマップしたり、2 つのバージョン間でトラフィックを分割したりするための更新が可能です。例えば、 。my-function:BLUEバージョンとエイリアスを一緒に使用して、クライアントが関数を呼び出すための安定したインターフェイスを提供することができます。

詳細については、「Lambda 関数のバージョン」を参照してください。

Destination

送信先は、Lambda が非同期呼び出しからイベントを送信できる AWS リソースです。処理に失敗したイベントの送信先を設定できます。一部のサービスでは、正常に処理されたイベントの宛先もサポートします。

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