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实例列入白名单吗?
答案 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来访问它,我们可以从与该集群关联的安全组中对其进行修改。 希望对您有帮助!