python - 使用 SSH 隧道让 Django 服务器认为它在 AWS 中运行?

标签 python django amazon-web-services ssh redis

如何使用 SSH 隧道让本地 Django 开发服务器认为它在您的 AWS 网络中运行?

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

我试图通过使用下面的方法让它工作。我已经确认我可以使用 SSH 隧道在本地连接 Redis Desktop Manager所以 100% 我知道 AWS 支持这个,我现在的问题是用 Django 做同样的事情。

这是我试过的:

> python manage.py runserver 8000
> ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379

当我访问 http://127.0.0.1:8000/ 时收到“错误 60 连接到”消息。

我在这里做错了什么?

注意事项:

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

最佳答案

ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:localhost:6379

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

您应该改用 Elasticache IP

ssh -i mykey.pem ec2-user@myRandomEC2.com -L 6379:<elasticache-ip>:6379

关于python - 使用 SSH 隧道让 Django 服务器认为它在 AWS 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018014/

相关文章:

javascript - 需要具有动态CSS样式

python - 如何忽略 Selenium 中的异常?

python - matplotlib 中的自定义绘图线型

amazon-web-services - Elasticache Redis 自动备份到 S3

amazon-web-services - 如何在 AWS Redshift 集群中查找数据库列表

amazon-web-services - AwsS3 客户端在初始化时抛出错误

python - 在 python 中更改变量的类型是好习惯吗?

python - 不保存某些字段的数据

python - 在 Django 提供的 IFrame 中显示 PDF 时,IE 8 崩溃

python - django-rest-framework-接受提交的外键字段的ID