【问题标题】:AWS Lambda in VPC accessing RDS with DynamoDB as CacheVPC 中的 AWS Lambda 使用 DynamoDB 作为缓存访问 RDS
【发布时间】:2018-06-20 04:00:08
【问题描述】:

我想问一下这个设计中可能存在的错误:

我在访问 RDS 的 VPC 中有 AWS Lambda。由于冷启动,它非常慢(很大一部分是因为访问 RDS,因为 lambda 必须创建 ENI)

现在,如果我在访问 RDS 之前展示 DynamoDB 会怎样?如果dynamodb中没有记录,我会在下一步访问RDS。

这会提高系统的整体性能吗?

谢谢

【问题讨论】:

  • 我更喜欢使用 AWS Elasticache Redis 或 Memcached 而不是 Dynamodb。
  • 我一开始也是这么想的。但是AWS Elasticache也会有VPC冷启动+创建ENI的惩罚
  • AWS Elasticcache 甚至没有被驱动,因此配置将发生在它需要创建 ENI 的地方。您可以使用 CloudWatch 让您的 Lambda 保持热状态,以避免冷启动,而且不会花费太多。
  • 啊好吧.. 但是从 RDS 和 Elasticache 创建 ENI 的行为是相似的吧?而且我的 lambda 中有 100 多个函数(每个函数都用于 REST API)。 ping 所有功能是个好主意吗?
  • 不要ping所有功能。专注于会影响性能感觉的应用程序区域。

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-rds amazon-vpc


【解决方案1】:

如果您的 AWS Lambda 函数附加到 Amazon VPC,那么无论访问 Amazon RDS、Amazon DynamoDB 还是亚马逊 ElastiCache。它们都需要连接到 VPC,即使只是为了获得 Internet 访问权限。

如果您仅使用 DynamoDB(没有 Amazon RDS),您可以选择将 Lambda 函数附加到 VPC,这样可以减少预热时间。

见:How to manage Lambda VPC cold starts and deal with that killer latency

【讨论】:

  • 嗯,如果我在 lambda 中同时使用两者会怎样?第一个是DynamoDB,如果有记录,则返回,如果没有记录,我将使用RDS。如果DynamoDB中有记录,是否还会受到长时间冷启动的影响?
  • 是的。要访问 DynamoDB,Lambda 函数(连接到 VPC)需要访问 VPC 中的 ENI,才能通过 Internet 网关到达 DynamoDB 终端节点。从预热的角度来看没有任何好处,因为问题不在于 RDS 数据库,而在于 ENI 本身。
  • 感谢您的澄清!所以我想我们必须处理这个问题,直到 AWS(希望)以某种方式解决这个问题。
猜你喜欢
  • 2019-09-18
  • 2022-12-05
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2019-07-19
  • 2020-09-28
相关资源
最近更新 更多