在AWS Lambda中存储单个值的最佳实践

时间:2018-02-05 20:17:49

标签: amazon-web-services amazon-s3 aws-lambda amazon-dynamodb serverless

我有一个正在生成并返回值的Lambda。此值可能会过期。因此我需要在返回之前检查值的有效性。 由于生成非常昂贵(取自其他服务),我想以某种方式存储该值。

存储这两个值(时间戳和相应值)的最佳做法是什么?

  • DynamoDB,但是为2个值使用数据库服务似乎需要很多开销。永远不会有更多的物品;相同的条目只会更新。
  • 我想到了S3,但这也意味着创建一个S3-Bucket并存储一个包含该信息的对象,仅用于这2个值(但可能最多的是#34;瘦"方式?)
  • 很想更新Lambdas配置以更新环境变量(但即使这是可能的,它可能没有最佳实践?!也不确定与Lambda运行时的不一致...)

这里最好的做法是什么?什么是性能方面?

4 个答案:

答案 0 :(得分:8)

使用DynamoDB。"运行数据库"没有开销。 - 这是一个完全托管的服务。您只需为存储和配置容量付费。听起来您的用例适合Free Usage Tier

或者,您可以将 API网关与缓存设置一起使用,这样即使超时已经过了,它也不会调用Lambda函数。

答案 1 :(得分:4)

您可以考虑AWS Parameter Store

  

AWS Systems Manager参数存储提供安全的分层结构   用于配置数据管理和秘密管理的存储。您   可以存储密码,数据库字符串和许可证代码等数据   作为参数值。您可以将值存储为纯文本或加密   数据。然后,您可以使用您的唯一名称来引用值   在创建参数时指定。高度可扩展,可用,   且持久,Parameter Store由AWS Cloud支持。参数   商店免费提供。

答案 2 :(得分:0)

对于这样的情况,我会使用一些快速的内存数据存储,如Redis或Memcached:

幸运的是有Amazon ElastiCache:

管理Redis和Memcached,但您不需要将它用于您的用例 - 您可以在自己的EC2上轻松使用Redis,或者您可以使用像Compose这样的外部服务来支持实例亚马逊数据中心:

很多方法可以使用它,但我肯定会使用Redis,特别是对于像这样的简单案例。

答案 3 :(得分:-1)

只需为环境变量设置一个值和一个日期即可。 然后在每次执行lambda时检查日期。

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