Lambda マネージドインスタンス
Lambda マネージドインスタンスを使用すると、インスタンスのライフサイクル、オペレーティングシステムおよび言語のランタイムのパッチ適用、ルーティング、負荷分散、スケーリングポリシーを管理することなく、Graviton4、ネットワーク最適化インスタンス、その他の特殊なコンピューティングオプションなど、現行世代の Amazon EC2 インスタンス上で Lambda 関数を実行できます。Lambda マネージドインスタンスでは、EC2 Savings Plans やリザーブドインスタンスなど、EC2 の料金の利点を活用できます。
サポートされているインスタンスタイプのリストについては、「AWS Lambda 料金
主な機能
Lambda マネージドインスタンスは次の機能を提供します。
-
適切なインスタンスを選択する – Graviton4 などの最新の CPU へのアクセス、設定可能なメモリと CPU の比率、高帯域幅ネットワークなど、パフォーマンスとコストの要件に基づいて適切なインスタンス
を選択します。 -
自動プロビジョニング – AWS は、適切なインスタンスを自動的にプロビジョニングし、関数実行環境を起動します。
-
動的スケーリング – インスタンスは、関数のトラフィックパターンに基づいて動的にスケーリングされます。
-
フルマネージドエクスペリエンス – AWS がインフラストラクチャの管理、スケーリング、パッチ適用、ルーティングを処理し、これまで使い慣れた広範なイベントソース統合を引き続き利用できます。
Lambda マネージドインスタンスを使用するタイミング
以下のユースケースでは、Lambda マネージドインスタンスを検討してください。
-
大量の予測可能なワークロード – 予期しないトラフィックスパイクのない定常状態のワークロードに最適です。Lambda マネージドインスタンスは、デフォルトでトラフィックが 5 分以内に 2 倍へ増加する状況に対応できるようにスケーリングを行います。
-
パフォーマンスが重要なアプリケーション – 最新の CPU へのアクセス、さまざまなメモリと CPU の比率、高いネットワークスループット
-
規制要件 – VPC とインスタンスの配置を制御できるきめ細かなガバナンスのニーズ
-
多種多様なアプリケーション – イベント駆動型アプリケーション、メディア/データ処理、ウェブアプリケーション、サーバーレスに移行するレガシーワークロード
仕組み
Lambda マネージドインスタンスは、関数を実行するための基盤としてキャパシティープロバイダーを使用します。
-
キャパシティープロバイダーを作成する – VPC 設定、オプションでインスタンス要件、スケーリング設定を指定して、関数が実行される場所を定義します。
-
関数を作成する – Lambda 関数を通常どおりに作成し、キャパシティープロバイダーにアタッチします。
-
関数バージョンを公開する – 関数バージョンは、公開されるとキャパシティープロバイダーインスタンスでアクティブになります
キャパシティープロバイダーで関数バージョンを発行すると、Lambda はユーザーのアカウントでマネージドインスタンスを起動します。AZ の耐障害性を確保するため、デフォルトで 3 つのインスタンスを起動し、3 つの実行環境を開始すると、関数バージョンが ACTIVE にマークされます。既に他の関数を実行している既存のキャパシティープロバイダーに関数をアタッチすると、使用可能なインスタンスに新しい関数の実行環境に対応する容量が既にある場合、Lambda は新しいインスタンスをスピンアップしない可能性があります。
同時実行モデル
Lambda マネージドインスタンスは、1 つの実行環境が複数の呼び出しを同時に処理できる複数同時呼び出しをサポートします。これは、Lambda (デフォルト) コンピューティングタイプとは異なり、1 つの実行環境が一度に最大 1 回だけ呼び出しを実行できる単一の同時実行モデルを提供します。複数同時実行は、基本的な EC2 インスタンスの使用率を向上させ、ウェブサービスやバッチジョブなどの IO 負荷の高いアプリケーションに特に役立ちます。この実行モデルの変更は、スレッドセーフ、状態管理、コンテキストの分離をランタイムに応じて異なる方法で処理する必要があることを意味します。
テナンシーと分離
Lambda (デフォルト) コンピューティングタイプはマルチテナントであり、Firecracker microVM テクノロジーを使用して、共有された Lambda フリートで実行されている実行環境を分離します。Lambda マネージドインスタンスはユーザーのアカウントで実行され、最新の EC2 ハードウェアと料金オプションを提供します。マネージドインスタンスは、Firecracker ではなく、EC2 Nitro インスタンスで実行されているコンテナを使用して分離を実現します。キャパシティープロバイダーは、Lambda 関数のセキュリティ境界として機能します。関数はインスタンス内のコンテナで実行されます。
マネージドインスタンスの概要
Lambda マネージドインスタンス関数は、ユーザーのアカウントの EC2 マネージドインスタンスで実行されます。これらのインスタンスは Lambda によって完全に管理されるため、標準の EC2 インスタンスと比較してアクセス許可が制限されます。アカウント内の Lambda マネージドインスタンスは、次の方法で識別できます。
-
EC2
DescribeInstances出力内のOperatorフィールドの存在 -
インスタンスの
aws:lambda:capacity-providerタグ
これらのインスタンスでは、手動による終了など、標準の EC2 オペレーションを直接実行することはできません。マネージドインスタンスを破棄するには、関連するキャパシティープロバイダーを削除します。その後、Lambda はキャパシティープロバイダーの削除プロセスの一環としてインスタンスを終了します。
料金
Lambda マネージドインスタンスは、EC2 ベースの料金を採用しており、EC2 インスタンスのコストに加えて 15% の管理手数料がかかります。この料金モデルは、EC2 Savings Plans、リザーブドインスタンス、および EC2 の使用量に適用されるその他の料金割引を対応しています。詳細については、料金ページを参照してください: https://aws.amazon.com/lambda/pricing/
重要: EC2 料金の割引は、基本的な EC2 コンピューティングにのみ適用され、管理料金には適用されません。
Lambda マネージドインスタンスと Lambda (デフォルト) コンピューティングタイプの違い
Lambda マネージドインスタンスは、Lambda がリクエストを処理する方法を Lambda (デフォルト) と比較して変更します。
主な相違点:
| Lambda (デフォルト) | Lambda マネージドインスタンス | |
|---|---|---|
| 同時実行モデル | 1 つの実行環境が一度に最大 1 回の呼び出しをサポートできる単一同時実行モデル | 1 つの実行環境が複数の呼び出しを同時に処理できる複数同時呼び出し。特に IO 負荷の高いアプリケーションではスループットが向上させる |
| テナンシーと分離 | マルチテナント。共有された Lambda フリートで実行されている実行環境間の分離を実現するために Firecracker microVM テクノロジーを使用している | ユーザーのアカウント内で実行され、EC2 Nitro を使用して実行環境の分離が提供されます。キャパシティープロバイダーはセキュリティ境界として機能し、関数はインスタンス内のコンテナで実行されます。 |
| 料金モデル | リクエストごとの期間料金 | オンデマンドインスタンスやリザーブドインスタンスなどの EC2 料金モデルを利用したインスタンスベースの料金、および Compute Savings Plans などの割引オプション |
| スケーリングの動作 | 着信呼び出しを処理するための空き実行環境がない場合にスケールします (コールドスタート)。トラフィックなしでゼロにスケールする | コールドスタートなしで、CPU リソース使用率のみに基づいて非同期的にスケールします。トラフィックなしで設定された最小限の実行環境にスケールする |
| 以下に最適: | バースト性のトラフィックがあり、一定のコールドスタート時間を許容できる関数、または持続的な負荷がなく、ゼロまでスケールダウンすることによる利点を享受できるアプリケーション | EC2 の柔軟性、料金プラン、ハードウェアオプションが必要な場合の大量の予測可能なトラフィック関数 |
次のステップ
-
「Lambda マネージドインスタンスのキャパシティプロバイダー」について説明する
-
「Lambda マネージドインスタンスのスケーリング」を理解する