2016-12-12 6 views
2

私の使用例は、AWSラムダフロントをA​​PIゲートウェイで終了させるようなケースです。AWSラムダを呼び出してAPIゲートウェイに非同期的に応答を返します

私の要件は、ラムダが呼び出されると、200 OK応答を呼び出し元に転送するAPIゲートウェイに戻す必要があるということです。 そして、ラムダはペイロードの実際の処理を開始する必要があります。

これは、API Gateway呼び出しサービスが10秒以内に応答を待つため、タイムアウトするためです。だから私は処理を開始する前に応答を出したいと思う。

これは可能ですか?

+0

我々は前にこの質問を持っていたようだが、私は適切な重複した質問を見つけることができませんでした。 –

答えて

2

はい、単に2つのラムダ関数を作成します。最初のラムダ関数は、APIゲートウェイによって呼び出され、2番目のラムダ関数を呼び出すだけですぐに正常に戻り、APIゲートウェイがHTTP 200でクライアントに応答できるようになります。 2番目のラムダ関数は、それを完了する必要がある限り長くかかります。

+0

また、キュー(SQS)を使用することもできます。 APIゲートウェイを直接SQSキューに接続するか、ラムダ機能を使用することができます。いずれにせよ、あなたが好むペースでメッセージを処理することができます。 – Bram

+0

はい2ラムダアプローチは間違いなく実行できます。しかし、我々は単一のラムダでそれを持つことができます –

1

APIゲートウェイの "Lambda Function"統合型では、単一のラムダ関数ではこれを行うことができません。そのインターフェイスは特に同期するように設計されています。回避策は、Lambda関数の統合型を使用する場合は、ゲートウェイによって呼び出される同期Lambda関数に対して、Lambda APIを介して2番目の非同期Lambda関数を呼び出します。

はしかし、非同期呼び出しはラムダ関数統合するのではなく、AWSサービスプロキシ統合を使用して、回避策ことなく可能です。

APIがバックエンドのラムダ関数への同期呼び出しのみを行う場合は、ラムダ関数の統合型を使用する必要があります。 [...]

APIでラムダ関数の非同期呼び出しが行われる場合は、この節で説明するAWSサービスプロキシ統合タイプを使用する必要があります。この命令は、同期ラムダ関数呼び出しの要求にも適用されます。非同期呼び出しの場合、X-Amz-Invocation-Type:Eventヘッダーを統合要求に明示的に追加する必要があります。

http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html

+0

このヘッダーをどのように追加しますか?それを「HTTPヘッダー」の下に追加する必要がありますか?インテグレーション要求で? ヘッダーマッピングのみを追加できますが、ハードコードされたヘッダー値は追加できないようです。おかげさまで – vangap

+0

これで、ヘッダーの値は一重引用符で囲みますが、二重引用符は使用できません。それが私が苦労していた場所です。そのような悪いUX。 – vangap

+1

@vangap ''STATIC_VALUE''。 * "STATIC_VALUEは文字列リテラルであり、一重引用符で囲む必要があります。" * http:// docs。aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html –

0

ラムダ関数に非同期呼び出しを設定する方法で、ここで答えを確認してください。これによりクライアントにすぐに200が返されますが、Lambdaはそれ自身で非同期に処理します。

https://stackoverflow.com/a/40982649/5679071

関連する問題