AWS:为什么Elasticache和RDS需要VPC,而Elasticsearch和DynamoDb则不需要

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS:为什么Elasticache和RDS需要VPC,而Elasticsearch和DynamoDb则不需要相关的知识,希望对你有一定的参考价值。

目前,构建使用DynamoDb和Elasticsearch的无服务器应用程序非常简单

使用无服务器,你只需在serverless.yml中声明一切,你就可以了

当您需要使用RDS或Elasticache时会出现问题(快速),因为您在使用VPC时会遇到各种各样的麻烦......然后就会失去无服务器范例(开发人员应该只专注于代码)

最快的解决方案是使用第三方解决方案(如RedisLabs或ClearDb)

我的问题是:为什么RDS和Elasticache需要VPC模式?为什么它们不像第三方服务那样直接使用?

编辑:如评论中所述,您可以将DynamoDB和Elasticsearch置于VPC之后。

那么问题就变成了:如何从lambda函数中有效地访问它们(RDS,elasticache,dynamodb,elasticsearch)?

您需要配置lambda函数的VPC以访问所有其他VPC,如https://docs.aws.amazon.com/lambda/latest/dg/vpc.html中所述

此外,考虑到lamba还需要访问互联网上的第三方服务(例如:sendgrid,onesignal,...)所以我认为你仍然需要在某处使用NAT

答案

这里的区别是资源实际运行的位置。 Elasticsearch和DynamoDB都是在您的AWS账户外部运行的托管服务。 RDS和Elasticache不同 - 它们会启动到您的AWS账户,因此需要告知AWS您要在哪里运行它们。

顺便说一句,RDS不需要VPC。您可以选择在EC2-Classic或EC2-VPC中运行它。这些是在AWS上运行计算的唯一选项(无论是在VPC中,还是在VPC中),因此您实际上并未受到限制。你只是被问到你喜欢哪个。

访问VPC中的私有资源(如RDS数据库)的解决方案是将Lambda函数配置为在该VPC中运行。现在Lambda函数基本上位于VPC内部,因此受到VPC网络配置的限制。要使Lambda功能到达外部网站,它需要一条通往公共互联网的路径。通常,在VPC中执行此操作的方法是配置IGW和某种形式的NAT(自行滚动或来自AWS的托管NAT)。这是所有正常的VPC行为,并非特定于Lambda。

另一答案

我在这个主题上找到的最好的文章:http://blog.brianz.bz/post/accessing-vpc-resources-with-lambda/

它解释了几乎所有关于来自lambda的VPC访问(来自什么是VPC,为什么需要它,如何从lamdba访问以及从无服务器进行配置)

以上是关于AWS:为什么Elasticache和RDS需要VPC,而Elasticsearch和DynamoDb则不需要的主要内容,如果未能解决你的问题,请参考以下文章

基于python实现将AWS-ElastiCache-的Reserved_Cache_Nodes-预留节点及费用的信息统计

AWS ElastiCache 集群和 AWS ElastiCache 复制组有啥区别?

如何知道我是不是需要使用 AWS Elasticache 和 AWS Elastic Load Balancing?

AWS Elasticache - Redis VS MemcacheD

在 AWS 上使用 ElastiCache 和 ElasticBeanstalk 配置 Redis

AWS Lambda:Redis ElastiCache 连接超时错误