2017-11-22 12 views
1

私は、api gatewayおよびs3と統合されたサーバーレスのPythonラムダ関数(lambda1)を使用しています。ユーザーがapiゲートウェイ上でGET /namesを押すと、ラムダはS3のCSVファイルを読み込んで応答を返します。 CSVファイルが大きいので、ラムダは応答にかなりの時間を要します。だからListをpythonに追加してCSVファイルをメモリにキャッシュして応答時間を短縮しました。新しいCSVファイルをアップロードすると、新しいCSVからの新しい応答が返されることが期待されますが、キャッシュのために(ラムダは高速度のために非常に頻繁にシャットダウンしません)ラムダまたはs3またはapiゲートウェイを使用したAWSサーバーレスリセットキャッシュ

私も別のラムダを持っています(lambda2)は、同じs3バケットにアップロードされた新しいCSVファイルがあるときに呼び出され、監査のためにCSVファイルを処理します。

キャッシュをリセットする3つのアイデアがあります。しかし、キャッシュをリセットする正しい方法またはより良い方法を知りたがっていました。 lambda1で

  • リセットキャッシュはlambda2からハンドラを呼び出す買うlambda1ため

    1. S3通知イベントは
    2. は、キャッシュをリセットし、lambda2
  • 答えて

    0

    なしからエンドポイントを呼び出すためのAPIゲートウェイにエンドポイントを持っていますリストされた3つのアプローチのうち、AWSがトラフィックのためにラムダ用に複数のコンテナを作成する場合は、動作します。その場合、すべてのアプローチが最終的にコンテナの1つだけをトリガーし、そのコンテナのみが更新されたキャッシュを取得しますが、残っているものはまだ古くなります。

    代わりに、あなたのラムダにlastModifiedタイムスタンプをキャッシュし、リクエストを処理する前にS3ファイルのタイムスタンプをチェックしてください。キャッシュされたタイムスタンプと同じでない場合は、新しいファイルがアップロードされたことを意味し、最新のCSVでキャッシュを更新できます。

    この方法では、レスポンスタイムが少し上がりますが(タイムスタンプをチェックする余分な時間のため)、常に少なくとも最新のコンテンツが配信されます。

    関連する問題