使用SSH隧道让Django服务器认为它在AWS内部运行?

Pro*_*eus 5 python django ssh amazon-web-services redis

你怎么能让你的本地Django开发服务器认为它使用SSH隧道在你的AWS网络中运行?

我的场景,我正在运行本地Django服务器,即python manage.py runserverRedis作为缓存后端(Elasticache).当我的应用程序在AWS环境中运行时,它可以访问Elasticache,但是,本地它不会(这是一件好事).如果由于某种原因我想用Elasticache测试我的本地环境,我需要以某种方式使用SSH隧道使AWS认为它在VPC网络内运行.

我试过通过使用下面的方法来实现这一点.我已经确认我可以使用SSH隧道连接本地连接Redis桌面管理器,因此100%我知道AWS支持这一点,我的问题现在与Django做同样的事情.

这就是我尝试过的:

> python manage.py runserver 8000
> ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379
Run Code Online (Sandbox Code Playgroud)

我访问时收到消息"错误60连接到"消息http://127.0.0.1:8000/.

我在这里做错了什么?

笔记:

  • ec2-user@myRandomEC2.com 不是Redis服务器,只是AWS上的另一个EC2实例,它可以访问我想用作隧道的Elasticache.
  • mykey.pem访问和正确的权限.
  • ec2实例具有所有正确的权限和访问端口.
  • 使用Redis Desktop Manager测试SSH隧道,这适用于该软件.
  • Elasticache和EC2实例都在同一区域,可以相互连接.

Ked*_*dar 3

ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379
Run Code Online (Sandbox Code Playgroud)

这会将请求从本地计算机(位于 :6379)转发到localhost:6379EC2 实例。这不是您想要的(除非您在 EC2 实例上本地运行 Redis)

您应该使用 Elasticache IP

ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:<elasticache-ip>:6379
Run Code Online (Sandbox Code Playgroud)