从另一个区域连接到DocumentDB

时间:2019-01-10 07:31:51

标签: python amazon-web-services security firewall amazon-vpc

TL; DR

DocumentDB in another region <-------- ec2 instance in another region
                               access

因此,AWS已将MongoDB作为服务启动,并将其称为DocumentDB。 当前支持的区域是:
1.弗吉尼亚北部
2.俄亥俄州
3.俄勒冈州
4.爱尔兰

因此,根据他们的documentation,访问documentDB:

  

要与Amazon DocumentDB集群进行交互,您必须在创建Amazon DocumentDB集群的同一AWS区域中将Amazon Elastic Compute Cloud(Amazon EC2)实例启动到默认VPC中。

我做到了,它按预期工作。

问题是,我如何从另一个VPC,安全组和另一个区域上的另一个ec2实例访问它。

我尝试访问它,但这是一个例外:

pymongo.errors.ServerSelectionTimeoutError: .... 
[Errno 113] No route to host

注意:如果我在相同的区域和相同的安全组中启动ec2实例,则上述方法有效。

我可以使用防火墙设置将其他区域的ec2实例列入白名单吗?

3 个答案:

答案 0 :(得分:2)

AWS documentdb 故障排除指南 here 回答了这个确切的问题;

我使用 VPC Peering 解决了同样的问题(如文章中所述)

答案 1 :(得分:0)

您是否查看过AWS的vpc-peer-region-example文档?

似乎(doc)中提到的体系结构非常适合您。它显示了如何结合使用VPC对等和AWS PrivateLink将对私有服务的访问扩展到不同区域(和不同vpc)中的消费者。

答案 2 :(得分:0)

由于默认情况下为特定区域配置了 Document-DB集群 DB-instance ,因此只能从内部的ec2-instances中访问 VPC 。 或可以访问同一区域的PVC的本地计算机。

注意:只有启用了安全组才能访问您的计算机IP。

但是,我们可以使用端口转发技术(也称为 ssh隧道)来使来自任何区域的任何用户访问您的数据库,并且仍然需要 ec2-instance 堡垒实例可以启动并运行。

按照文档操作以使用Amazon Session Manager创建代理服务器 https://aws.amazon.com/premiumsupport/knowledge-center/systems-manager-ssh-vpc-resources/

在您的计算机上创建隧道

ssh -i  ec2-keypair-private.pem ec2-user-name@ec2-public-dns-name -N -L 27017:document-db-cluster-name:27017

使用Mongo Shell在本地登录您的计算机

mongo --ssl --host localhost:27017 --sslCAFile rds-combined-ca-bundle.pem --username username --password password

注意:您的Document-DB集群应该允许您使用的ec2-instance来访问它,我们可以从与该集群关联的安全组中对其进行修改。 希望对您有帮助!