2016-03-15 9 views
5

W jaki sposób można sprawić, aby lokalny serwer programistyczny Django działał w sieci AWS za pomocą tunelowania SSH?Użyj tunelu SSH, aby serwer Django sądził, że działa w AWS?

Mój scenariusz, używam lokalnego serwera Django, tj. python manage.py runserver, a Redis jako backend pamięci podręcznej (Elasticache). Gdy moja aplikacja działa w środowisku AWS, ma dostęp do Elasticache, ale lokalnie nie będzie to (i to dobrze). Jeśli z jakiegoś powodu chcę przetestować swoje lokalne środowisko za pomocą Elasticache, muszę jakoś wykorzystać tunelowanie SSH, aby AWS sądził, że działa w sieci VPC.

Próbowałem uzyskać to działa, używając poniżej. Potwierdziłem, że mogę łączyć się lokalnie za pomocą tunelowania SSH z Redis Desktop Manager, więc w 100% wiem, że AWS obsługuje to, mój problem polega na tym, że teraz robię to samo z Django.

To co próbowałem:

> python manage.py runserver 8000 
> ssh -i mykey.pem [email protected] -L 6379:localhost:6379 

dostaję komunikat "Error 60 łączącą do" wiadomość, kiedy odwiedzam http://127.0.0.1:8000/.

Co ja tu robię źle?

Uwagi:

  • [email protected] nie jest serwerem Redis, tylko kolejny instancji EC2 na AWS, która ma dostęp Elasticache że chcę użyć jako tunelu.
  • Dostęp do ma odpowiednie uprawnienia.
  • Instancja ec2 ma wszystkie odpowiednie uprawnienia i porty dostępu.
  • Testowane tunelowanie SSH z Redis Desktop Manager i to działa dla tego oprogramowania.
  • Elasticache i instancje EC2 znajdują się w tym samym regionie i mogą się ze sobą łączyć.
+1

Dlaczego starasz się połączyć do produkcji np Redis? Czy nie możesz zamiast tego uruchomić lokalnej instancji na swoim komputerze? Jeśli chodzi o twoje pytanie, prawdopodobnie nie chcesz używać '6379: localhost: 6379', ale zamiast czegoś takiego jak' 6379: redis-servers.ip.address: 6379', ale to tylko zgadnij. Użyj 'ssh -vv' do debugowania problemów z tunelowaniem, to wydrukuje całą masę rzeczy na stderr. – koniiiik

+0

Wierzę, że memcached na AWS działałoby tylko w sieci AWS. Próbowałem bez szczęścia połączyć się z moim lokalnym środowiskiem. BTW Nie zapomnij otworzyć portów Elasticache w twoich grupach bezpieczeństwa EC2. Również uruchamiam moje aplikacje Django przez AWS Elastc Beanstalk. – WayBehind

+0

@koniiiik Nie rozumiesz, nie próbuję połączyć się bezpośrednio z Redis, ale chcę użyć tunelowania SSH (do dowolnej instancji EC2), aby wyglądało na to, że moje lokalne środowisko działa w VPC. – Prometheus

Odpowiedz

3
ssh -i mykey.pem [email protected] -L 6379:localhost:6379 

To przekazania żądania z komputera lokalnego (na: 6379), aby localhost:6379 na przykład EC2. To nie jest to, co chcesz (chyba że Redis działa lokalnie na przykład EC2)

należy użyć Elasticache IP zamiast

ssh -i mykey.pem [email protected] -L 6379:<elasticache-ip>:6379 
+0

Dobrze, rozumiem, że wyglądało na to, że działa. Dziękuję Ci. – Prometheus

Powiązane problemy