5

私は現在、サーバーレス フレームワークで AWS Lambda を使用して Web API を構築しています。

私のラムダ関数では、それぞれが Redis (elasticache) と RDB (Aurora、RDS) または DynamoDB に接続して、データを取得したり、新しいデータを書き込んだりします。そして、すべてのラムダ関数が VPC で実行されています。

ラムダ関数が最初に実行されるか、最後の実行からしばらくしてから実行される場合を除いて、すべて正常に機能します。ラムダ関数の実行にかなり長い時間 (1 ~ 3 秒) かかるか、場合によってはゲートウェイ タイムアウト エラー (約30 秒)、私のラムダ関数は 60 秒のタイムアウトに設定されていますが。

hereに記載されているように、新しいコンテナーの初期化には 1 ~ 3 秒かかると想定しています。ただし、1 ~ 3 秒またはゲートウェイのタイムアウトは本番環境での使用には理想的ではないため、この時間を短縮する方法があるかどうか疑問に思います。

4

1 に答える 1

5

あなたは2つの問題に行きました:

  1. 1 ~ 3 秒の遅延。これは、Lambda を使用する場合に想定され、十分に文書化されています。コメントで @Nick が述べたように、コンテナーがスリープ状態にならないようにする唯一の方法は、コンテナーを使用することです。Lambda のスケジュールされたイベントを使用して、レート式を使用して 1 分ごとに関数を実行できますrate(1 minute)。実際のリクエストとこれらの ping リクエストのいずれかを区別するのに役立つパラメータを関数に追加すると、すぐに ping リクエストに戻ることができ、問題を回避できます。より多くの費用がかかりますが、どちらかといえば月額ペニーを話しているでしょう. Lambda には寛大な無料利用枠があります。

  2. 30 秒の遅延は異常です。私は間違いなく CloudWatch ログを確認します。関数が正常に動作しているときにログが表示され、30 秒のタイムアウトが表示されたときにログが表示されない場合、問題は Lambda ではなく API Gateway にあると考えられます。ログが表示される場合は、トラブルシューティングに役立つ可能性があります。確認するもう 1 つの場所は、AWS ステータス ページです。Lambda 関数がタイムアウトして応答が断続的になるのをときどき見たことがありますが、Amazon 側に問題があり、Amazon がそれに取り組んでいることを理解するためだけに、頭を悩ませています。

これは、Lambda コンテナの再利用に関する追加情報を含むブログ投稿です。少し古いですが、まだいくつかの良い情報があります。

于 2016-06-06T22:42:31.940 に答える