从AWS Lambda连接Cassandra

时间:2018-04-12 11:17:55

标签: amazon-web-services cassandra aws-lambda serverless-framework

我们正在检查将我们的某个应用程序迁移到Amazon Web Services(AWS)的可行性。我们决定使用AWS API Gateway公开服务,并使用AWS Lambda(java)进行后端数据处理。 lambda函数必须从我们的数据库中获取大量数据。 目前使用Cassandra进行数据存储,已在EC2实例中设置,并且没有公共IP。

有人建议使用私有IP(10.0.x.x)从AWS Lambda访问Cassandra(EC2)吗?

将AWS Lambda用于大型应用程序是否正确?

1 个答案:

答案 0 :(得分:1)

由于您的Cassandra实例使用的是私有IP,因此您需要将AWS lambda网络配置为使用VPC。它可能是您运行Cassandra的VPC,或者是您为lambdas创建的VPC,以及您与您的cassandra VPC进行VPC对等。需要注意的一点是documentation

  • 当您的lambda在VPC中运行时,默认情况下它没有互联网访问权限,您需要为此配置 NAT
  • 由于 ENI 的配置而导致额外延迟(您只需在冷启动时支付罚款)
  • 您需要确保您的lambda拥有管理ENI的正确权限,您应该使用此角色: AWSLambdaVPCAccessExecutionRole

您使用API​​ / AWS lambda的计划至少有3个潜在问题需要仔细考虑:

  • 费用即可。每个请求成本的API网关高于每个请求成本的AWS lambda。确保您熟悉费用。
  • 冷启动。当AWS启动基础容器以执行您的lambda时,您需要支付冷启动延迟(由于管理ENI,使用VPC时会更糟)。如果同时执行lambda,则会有多个底层容器。他们每个人都会在第一次冷启动。 AWS倾向于保持底层容器为热启动做好准备,持续几分钟(用户报告5到40分钟)。你可以尝试通过ping你的aws lambda来保持你的容器温暖,显然如果你有多个容器并行,它就会变得棘手。
  • Cassandra会话。您可能希望每次调用lambda时都避免创建和销毁Cassandra会话(代价高昂)。我还没有尝试过,但是有报道称会议在一个温暖的容器中保持活着状态,你可能想要查看SO answer

说完这一切,目前使用AWS lambda的最大限制是并发执行和冷启动延迟。对于数据处理,这通常很好。对于面向用户的使用,慢速冷启动的百分比可能会影响您的用户体验。