【问题标题】:sharing variables across two aws lambda functions在两个 aws lambda 函数之间共享变量
【发布时间】:2016-08-19 20:28:30
【问题描述】:

我有两个 AWS lambda 函数 - lambdaA 和 lambdaB。

http 客户端调用 API Gateway 端点 A,该端点 A 调用 lambdaA 生成 uuid 并返回给客户端。

然后,客户端调用 API Gateway 端点 B,该端点 B 调用 lambdaB 并将 lambdaA 生成的 uuid 传递给 lambdaB。 lambdaB 如何验证 uuid 是由 lambdaA 生成的。

我可以考虑使用缓存 - 弹性缓存或 db - dynamodb。但我不喜欢弹性缓存,因为它运行服务器,而 dynamodb 对于我的简单用例来说可能有点太重了。

还有其他更简单的方法来使用 AWS lambda 缓存数据吗?

【问题讨论】:

  • 不,没有更简单的方法。我的建议是 ElastiCache 或 DynamoDB。
  • DynamoDB 对于这种类型的东西实际上是相当轻量级的。但是,如果两个 lambda 函数并行执行,听起来您可能会遇到竞争条件问题,其中函数 B 正在检查函数 A 尚未生成的数据。
  • 为什么不是 S3 对象? ElastiCache 和 DynamoDB 对于您的要求似乎有点过分了。
  • 我认为 s3 会太慢。会尝试。我决定使用 DynamoDB。在我的用例中不存在竞争条件问题。
  • 借助 DynamoDB,您可以使用条件写入来解决任何竞争条件问题。使用 S3 解决竞争条件会更加困难。 S3 通常也会更慢,因为您每次都必须读取整个文件内容,而不是从 DynamoDB 读取单个字段值。

标签: amazon-web-services caching aws-lambda


【解决方案1】:

建议使用 DynamoDB 和 Elasticache。 另外,请阅读 Kenneth Falck 的以下文章:

Amazon AWS Lambda data caching solutions compared

How HipChat Stores And Indexes Billions Of Messages Using ElasticSearch And Redis

【讨论】: