AWS Lambda
開発者ガイド

他のサービスで AWS Lambda を使用する

AWS Lambda は、関数を呼び出すための AWS の他のサービスと統合されています。リソースライフサイクルイベントに応答して関数を呼び出す、受信 HTTP リクエストに応答する、キューからイベントを使用する、スケジュールに従って実行するためのトリガーを設定できます。

Lambda と統合する各サービスでは、データが JSON の関数にイベントとして送信されます。イベントドキュメントの構造はイベントタイプごとに異なり、関数をトリガーしたリソースまたはリクエストに関するデータが含まれています。Lambda ランタイムは、イベントをオブジェクトに変換し、それを関数に渡します。

以下の例では、/lambda?query=1234ABCD への GET リクエストを表す Application Load Balancer からのテストイベントを表しています。

例 Application Load Balancer のイベント

{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-279XGJDqGZ5rsrHC2Fjr/49e9d65c45c6791a" } }, "httpMethod": "GET", "path": "/lambda", "queryStringParameters": { "query": "1234ABCD" }, "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding": "gzip", "accept-language": "en-US,en;q=0.9", "connection": "keep-alive", "host": "lambda-alb-123578498.us-east-2.elb.amazonaws.com", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "x-amzn-trace-id": "Root=1-5c536348-3d683b8b04734faae651f476", "x-forwarded-for": "72.12.164.125", "x-forwarded-port": "80", "x-forwarded-proto": "http", "x-imforwards": "20" }, "body": "", "isBase64Encoded": false }

注記

Lambda ランタイムは、イベントドキュメントをオブジェクトに変換し、それを関数ハンドラに渡します。コンパイル済み言語では、Lambda は、ライブラリのイベントタイプの定義を提供します。詳細については、以下のトピックを参照してください。

キューまたはデータストリームを生成するサービスの場合は、Lambda でイベントソースマッピングを作成し、他のサービスにアクセスするためのアクセス許可を実行ロールで Lambda に付与します。Lambda は、他のサービスのデータを読み込み、イベントを作成して、関数を呼び出します。

Lambda がイベントを読み取るサービス

その他のサービスでは、関数を直接呼び出します。関数のリソースベースのポリシーで他のサービスのアクセス許可を付与してから、イベントを生成し、関数を呼び出すように他のサービスを設定します。サービスに応じて、同期呼び出しまたは非同期呼び出しになります。同期呼び出しの場合、その他のサービスは、関数のレスポンスを待機するため、エラーの再試行を行う場合があります。

非同期呼び出しの場合、Lambda は、関数に渡す前にイベントをキューに入れます。イベントがキューに入ると、成功のレスポンスがもう一方のサービスに送信されるため、その後何が起こるのかは分かりません。エラーが発生した場合は、Lambda によって再試行が行われるため、設定したデッドレターキューに失敗したイベントが送信される場合があります。

各サービスの詳細と、関数のテストに使用できるイベントの例については、この章のトピックを参照してください。