質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

5799閲覧

LambdaをAPIGatewayから非同期で呼び出したい

og24715

総合スコア832

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/06/13 02:10

###前提・実現したいこと
タイトルのとおりです。
調べてみるとLambdaをAPIGatewayから呼び出すと常にinvocationType:RequestResponseとなって同期呼び出しになると書かれている記事が多いですが、どれも1年前に書かれたものです。

AWS LambdaをWebから非同期で呼ぼうとした話 - Qiita

python - How to invoke Lambda function with Event Invocation Type via API Gateway? - Stack Overflow

しかし今APIGateway, Lambdaの公式ドキュメントのどちらを見ても同期呼び出しになると書かれていません。

X-Amz-Invocation-Type: Event | RequestReponse | DryRun ヘッダーを追加して、アクションをリクエストとレスポンスとして、またはテスト実行として、それぞれ非同期に呼び出すこともできます。

AWS Lambda 関数の API GatewayAPI を作成する - Amazon API Gateway

同期呼び出し – Amazon API Gateway は、呼び出しタイプとして RequestResponse を指定することにより、Lambda 関数を呼び出してリアルタイムでレスポンスを取得できます

Amazon API Gateway での AWS Lambda の使用 (オンデマンド HTTPS 経由) - AWS Lambda


Amazon API Gateway は、呼び出しタイプとして RequestResponse を指定することにより、Lambda 関数を呼び出してリアルタイムでレスポンスを取得できます

というのはEventを指定すれば非同期呼び出しになると解釈できるのですがそもそもその解釈が間違っているんでしょうか。
もし、前述のように常に同期呼び出しになるのであれば、「RequestResponse を指定することにより」ではなく、「RequestResponse を指定され」の記述のほうが誤解を招かず正しいと思いました。
日本語って難しいですね。

###試したこと

  • APIGatewayにてメソッドリクエストでリクエストヘッダーにX-Amz-Invocation-Typeを追加してEventを指定してリクエスト

同期呼び出しになる

  • APIGatewayにてメソッドリクエストでリクエストヘッダーにinvocationTypeを追加してEventを指定してリクエスト

同期呼び出しになる

  • LambdaをAWS CLIから--invocation-typeオプションを追加してEventを指定して呼び出す

非同期呼び出しになる????

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドキュメントを読んで、Management Console を触ってみただけですが、

メソッドリクエストでリクエストヘッダーにinvocationTypeを追加して

さらに、「統合リクエスト」の「HTTP ヘッダー」で X-Amz-Invocation-Type に invocationType の値をマッピングするのではないでしょうか。
「マッピング元」に「'Event'」と、静的に設定できるのかもしれません。

投稿2017/06/15 03:33

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

og24715

2017/06/15 04:05

回答ありがとうございます。 実は昨日解決いたしました。 補足をするとコンソールにて統合タイプでLambda関数を選択すると統合リクエストにてヘッダーのマッピングが出来ないので、AWSサービスを選択する必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問