スキップしてコンテンツを表示

API Gateway API から、Lambda 関数を非同期で呼び出す方法を教えてください。

所要時間1分
0

Amazon API Gateway API 用の AWS Lambda 関数を非同期で呼び出そうとしています。関数を同期的に呼び出すことは避けたいです。

解決策

REST API

Lambda の非プロキシ統合では、Lambda はデフォルトでバックエンド関数を同期的に呼び出します。バックエンド関数を非同期で呼び出すには、Lambda の呼び出しタイプEvent に設定します。

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. [API] を選択し、該当する REST API を選択します。
  3. [リソース][GET] を選択してから、[統合リクエスト] を選択します。
  4. [統合タイプ][Lambda 関数] を選択します。
  5. [URL リクエストヘッダーのパラメータ] を展開し、[リクエストヘッダーのパラメータを追加] を選択します。
  6. [名前]X-Amz-Invocation-Type と入力します。
  7. [マッピング元]Event と入力します。
  8. REST API を再度デプロイします

非同期または同期のオプションを指定して Lambda 関数を呼び出すには、InvocationType ヘッダーを追加します。

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. [API] を選択し、該当する REST API を選択します。
  3. [リソース][GET] を選択し、[メソッドリクエスト] を選択します。
  4. [リクエストバリデーター][編集] アイコンをクリックします。
  5. ドロップダウンリストを展開し、[クエリ文字列パラメータとヘッダーの検証] を選択します。
  6. [保存] アイコンをクリックします。
  7. [HTTP リクエストヘッダー] を展開し、[ヘッダーを追加] を選択します。
  8. [名前]InvocationType と入力し、[必須] を選択します。
  9. [統合リクエスト][URL リクエストヘッダーのパラメータ] を展開し、[リクエストヘッダーのパラメータを追加] を選択します。
  10. [名前]X-Amz-Invocation-Type と入力します。
  11. [マッピング元]method.request.header.InvocationType と入力します。
  12. REST API を再度デプロイします

API リクエストにおいて、クライアントは、非同期呼び出しの場合は InvocationType: Event ヘッダーか、同期呼び出しの場合は InvocationType: RequestResponse ヘッダーを含めることができます。

HTTP API

HTTP API は、Lambda のプロキシ統合のみをサポートします。HTTP API の API Gateway 統合では、X-Amz-Invocation-Type ヘッダーを設定できません。代わりに、2 つの Lambda 関数を使用し、そのうちの 1 つをプロキシとして使用してください。ある Lambda 関数を別の関数から呼び出す場合は、Invoke API を使用し、1 番目の Lambda 関数で InvocationTypeEvent に設定します。

設定例

HTTP API が Lambda1 を同期的に呼び出した後、Lambda1Lambda2 を非同期的に呼び出します。

AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ