web-dev-qa-db-ja.com

AWSLambdaに単一の値を保存するためのベストプラクティス

値を生成して返すLambdaがあります。この値は期限切れになる可能性があります。したがって、戻る前に値の有効性を確認する必要があります。生成にはかなりの費用がかかるので(別のサービスから取得)、なんとかして値を保存したいと思います。

これらの2つの値(タイムスタンプと対応する値)を保存するためのベストプラクティスは何ですか?

  • DynamoDBですが、2つの値にデータベースサービスを使用すると、多くのオーバーヘッドが発生するようです。これ以上のアイテムはありません。同じエントリが更新されるだけです。
  • S3について考えましたが、これはS3-Bucketを作成し、この2つの値に対してのみ情報を含む1つのオブジェクトを格納することも意味します(ただし、おそらく最も「無駄のない」方法ですか?)
  • 環境変数を更新するためにLambdas構成を更新したいと思います(ただし、これが可能であっても、おそらくベストプラクティスではありませんか?!Lambdaランタイムとの不整合についてもわかりません...)

ここでのベストプラクティスは何ですか?パフォーマンスの面で行く方法は何ですか?

11
cvoigt

DynamoDBを使用します。「データベースの実行」にオーバーヘッドはありません。これはフルマネージドサービスです。ストレージとプロビジョニングされた容量に対してのみ料金を支払います。あなたのユースケースは 無料使用枠 に収まるようです。

または、キャッシュ設定でAPI Gatewayを使用して、タイムアウトが経過しない限りLambda関数を呼び出さないようにすることもできます。

6
John Rotenstein

あなたは考えることができます AWSパラメータストア

AWS Systems Managerパラメータストアは、設定データ管理とシークレット管理のための安全な階層ストレージを提供します。パスワード、データベース文字列、ライセンスコードなどのデータをパラメータ値として保存できます。値はプレーンテキストまたは暗号化されたデータとして保存できます。その後、パラメータの作成時に指定した一意の名前を使用して値を参照できます。高度にスケーラブルで、利用可能で、耐久性のあるParameter Storeは、AWSクラウドに支えられています。パラメータストアは追加料金なしで提供されます。

4
Stu

このような場合は、RedisやMemcachedなどの高速なインメモリデータストアを使用します。

そして幸いなことに、AmazonElastiCacheがあります。

これはRedisとMemcachedで管理されていますが、ユースケースで使用する必要はありません。Redisを独自のEC2で簡単に使用することも、Amazonデータセンター内のインスタンスもサポートするComposeなどの外部サービスを使用することもできます。

使い方はたくさんありますが、特にこのような単純なケースでは、確かにRedisを使用します。

0
rsp

値と日付で環境変数を設定するだけです。次に、ラムダが実行されるたびに日付を確認します。

https://docs.aws.Amazon.com/lambda/latest/dg/API_UpdateFunctionConfiguration.html

0
Warner