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