他のサービスで AWS Lambda を使用する
AWS Lambda は、他の AWS のサービスと統合して、関数の呼び出しやその他のアクションを実行します。一般的なユースケースをいくつか示します。
-
Amazon Simple Storage Service (Amazon S3) などのリソースライフサイクルイベントに応答して関数を呼び出します。詳細については、Amazon S3 での AWS Lambda の使用 を参照してください。
-
着信 HTTP リクエストに応答します。詳細については、チュートリアル: API Gateway で Lambda を使用する を参照してください。
-
キューからイベントを消費します。詳細については、Amazon SQS での Lambda の使用 を参照してください。
-
スケジュールに従って関数を実行します。詳細については、Amazon EventBridge (CloudWatch Events) でAWS Lambdaを使用する を参照してください。
Lambda で使用しているサービスに応じて、呼び出しは、通常、次の 2 つの方法のいずれかで動作します。イベントが呼び出しをトリガーするか、Lambda がキューまたはデータストリームをポーリングし、キューまたはデータストリーム内のアクティビティに応答して関数を呼び出します。Lambda は、関数の呼び出しを伴わない方法で Amazon Elastic File System および AWS X-Ray と統合します。
詳細については、イベント駆動型の呼び出し および Lambda ポーリング を参照してください。または、次のセクションで目的のサービスを参照して、そのサービスを Lambda とともに使用する場合の情報へのリンクを見つけます。
Lambda 関数を使用し、AWS Software Development Kits (SDK) の 1 つを使用する他の AWS のサービス とプログラム的に対話することもできます。たとえば、Lambda 関数を使用して Amazon S3 バケットを作成したり、関数内で API 呼び出しを使用してデータを DynamoDB テーブルに書き込んだりできます。AWS SDK についての詳細は、「AWSで構築するツール
サービスの一覧と詳細情報へのリンク
次の表で目的のサービスを検索し、使用すべき呼び出し方法を決定します。サービス名のリンクから、サービス間の統合の設定方法に関する情報を検索します。これらのトピックには、関数のテストに使用できるイベントの例も含まれています。
ヒント
この表のエントリは、サービス名のアルファベット順に示されています (「Amazon」または「AWS」プレフィックスを除きます)。ブラウザの検索機能を使用して、リスト内のサービスを検索することもできます。
サービス | 呼び出し方法 |
---|---|
イベント駆動型、同期呼び出し |
|
Lambda ポーリング |
|
Lambda ポーリング |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
Lambda ポーリング |
|
特殊な統合 |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
Lambda ポーリング |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
Lambda ポーリング |
|
イベント駆動型;、非同期呼び出し |
|
イベント駆動型;、非同期呼び出し |
|
Lambda ポーリング |
|
Amazon Simple Storage Service (Amazon S3) |
イベント駆動型;、非同期呼び出し |
イベント駆動型、同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
イベント駆動型、同期呼び出し |
|
特殊な統合 |
イベント駆動型の呼び出し
一部のサービスは、Lambda 関数を呼び出すことができるイベントを生成します。これらの種類のアーキテクチャの設計の詳細については、Serverless Land の「イベント駆動型アーキテクチャ
イベント駆動型アーキテクチャを実装する場合、関数のリソースベースポリシーで、イベントを生成するサービスに関数呼び出しのアクセス許可を付与します。次に、関数を呼び出すイベントを生成するようにサービスを構成します。
イベントは JSON 形式で構造化されたデータです。JSON 構造は、それを生成するサービスとイベントタイプによって異なりますが、すべて関数がイベントを処理するために必要なデータを含んでいます。
Lambda は、イベントドキュメントをオブジェクトに変換して関数ハンドラに渡します。コンパイル済み言語では、Lambda はライブラリのイベントタイプの定義を提供します。詳細については、使用する言語での関数構築に関するトピックを参照してください (「C# による Lambda 関数の構築」、「Go による Lambda 関数の構築」、「Java による Lambda 関数の構築」または「PowerShell による Lambda 関数の構築」) 。
サービスに応じて、イベント駆動型呼び出しは同期または非同期になります。
-
同期呼び出しの場合、イベントを生成するサービスは、関数からのレスポンスを待機します。そのサービスは、関数がレスポンスで返す必要があるデータを定義します。サービスはエラー戦略を制御します (エラー発生時に再試行するかどうかなど)。詳細については、同期呼び出し を参照してください。
-
非同期呼び出しの場合、Lambda は関数に渡す前に、イベントをキューに入れます。Lambda はイベントをキューに入れると、イベントを生成したサービスにすぐに成功レスポンスを送信します。関数がイベントを処理した後、Lambda はイベント生成サービスにレスポンスを返しません。詳細については、非同期呼び出し を参照してください。
同期的に呼び出された関数と非同期的に呼び出された関数のエラー処理を Lambda が管理する方法の詳細については、「エラー処理と AWS Lambda での自動再試行」を参照してください。
Lambda ポーリング
キューまたはデータストリームを生成するサービスの場合、Lambda でイベントソースマッピングをセットアップして、Lambda がキューまたはデータストリームをポーリングするようにします。
Lambda ポーリングアーキテクチャを実装する場合、関数の実行ロール内の他のサービスに Lambda アクセス許可を付与します。Lambda は他のサービスからデータを読み取り、イベントを作成して関数を呼び出します。