1

mongodbデータセットジェネレータを使用してデータを生成するノードプロジェクトに取り組んでおり、AWSのAPIゲートウェイに公開しているAWSのLambdaにデータ生成サーバーコードを追加しました。Amazon Cloudfrontのタイムアウトエラー

だから今の問題は30秒後にCloudFront timeout the requestです。問題は、私がやっている計算を複数のAPIヒットに分解することができないということです。だからコミュニティの誰もがここで私を助けることができますか、私はタイムアウトを取得しない要求をヒットすることができますいくつかの代替案を教えてくれることができます。

+1

「CloudFrontを通じてリクエストを送信しない」以外に、簡単な修正はありません。 CloudFrontの30秒のタイムアウトは変更できません。どのような解決策を念頭に置いていますか。 –

+0

はい私は、タイムアウトの設定を変更することはできず、これらの要求はデータベース用のデータを生成することをドキュメントで確認しました。ユーザーは必要なデータの行数を渡し、ラムダで生成します。だからそれは完全にユーザーに依存し、彼は1行または1M行を渡すことができます。 –

答えて

2

私は最初、あなたが経験している問題の性質を誤解していたと思います。

だから今の問題は、CloudFrontのは、あなたが明示的があなたのAPIゲートウェイエンドポイントの前でCloudFrontのを設定していたことを、あなたはCloudFrontを言及するので、私は、仮定30秒

後に要求をタイムアウトということです。

APIゲートウェイ暗黙のうちには「AWSエッジネットワーク」(a.k.a. CloudFront)からのサービスを使用してサービスの一部を提供しているため、そうでなかったことは間違いありません。

API Gatewayの「隠された」CloudFrontディストリビューションは、標準のCloudFrontディストリビューションとは異なる動作をしていましたが、明らかにそれはここでは関係がないようです。

実際、API Gateway also has a 30 second response timeoutCan Be Increased?Noです。したがって、 "CloudFront"タイムアウトは、API Gatewayによって課されたタイムアウトと本質的に同じタイムアウトです。

これはもちろん、ラムダ関数のタイムアウトよりも優先されます。

単純で明白な回避策はありません。これは、APIゲートウェイの設計の範囲外の課題のようです。

私が個人的にAPIを強制するときに個人的に嫌う傾向があるオプションの1つは、ページネーションが必要です。私は本当にそれが嫌い...ちょうど私にデータを与え、私はそれを処理することができます...しかし、その実用的なアプリケーションがあります。リクエストが1000000行の場合は、行1から1000を返し、行1001から2000をフェッチするnext_urlを返します。

もう1つのオプションは、非同期呼び出しを使用して2番目のラムダ関数にリクエストを送信し、データを取得できる新しいURLにユーザーを送信するリダイレクトを返します。さて、この解決法は本当に恐ろしいと思うので、私と一緒に固執しますが、理論的に実行可能です。非同期関数はバックグラウンドで作業を行い、S3で応答を保存します。データがフェッチされるURLは、データが格納されるS3バケット内のキーをポーリングする3番目のラムダ関数です(たとえば、20秒間に1秒に1回)。ファイルが表示された場合は、その場所のURLにあらかじめ署名し、ブラウザに最後のリダイレクトを発行します。署名されたURLはLocationです。ファイルが表示されない場合は、ブラウザを再び自分自身にリダイレクトして、ファイルが表示されるかブラウザがリダイレクトループを疲れてしまうまでポーリングを続行します。

スケッチ?はい。実行可能?多分。良いアイデア?それは議論の余地がありますが、実際にはAPI Gatewayの基本的な設計パラメータの外にあるものを行うように見えるので、かなり複雑な回避策が必要です。API Gateway以外で実装する必要があります。

EC2上で動作する独自の「APIゲートウェイ」を作成し、Lamdba APIを介して直接Lambda関数を呼び出し、結果を呼び出し元に返すことができます.Lambdaはまだ作業とスケーリングを処理しますが、 30秒のタイムアウト。 Web応答を待つ時間は30秒です。

+1

このような深い答えとあなたの時間をありがとう。私は最後のアプローチに行き、AWSのECSとその働きを私の魅力のように使いました。助けてくれてありがとう。 –

関連する問題