2016-03-15 12 views
5

Come si può pensare che il proprio server di sviluppo Django locale stia funzionando all'interno della propria rete AWS utilizzando il tunneling SSH?Usa il tunnel SSH per far sì che il server Django pensi che sia in esecuzione all'interno di AWS?

mio scenario, sono in esecuzione un server locale Django cioè python manage.py runserver e Redis come cache di backend (Elasticache). Quando la mia app viene eseguita nell'ambiente AWS ha accesso a Elasticache, ma, localmente non sarà (e questa è una buona cosa). Se per qualche ragione voglio testare il mio ambiente locale con Elasticache ho bisogno di usare in qualche modo il tunnelling SSH per far sì che AWS pensi che stia girando all'interno della rete VPC.

Ho provato a farlo funzionare utilizzando di seguito. Ho confermato che posso connettermi localmente usando il tunneling SSH con Redis Desktop Manager così al 100% so che AWS lo supporta, il mio problema ora sta facendo la stessa cosa con Django.

Questo è quello che ho provato:

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

ottengo il messaggio "Errore 60 che collega a" messaggio quando visito http://127.0.0.1:8000/.

Cosa sto facendo male qui?

Note:

  • [email protected] non è il server Redis, solo un altro istanza EC2 su AWS che ha accesso Elasticache che voglio usare come un tunnel .
  • Il mykey.pem ha accesso e l'autorizzazione corretta.
  • L'istanza di ec2 ha tutte le autorizzazioni e le porte corrette per l'accesso.
  • Tunnel SSH testato con Redis Desktop Manager e questo funziona per il software .
  • Elasticache e le istanze EC2 si trovano tutte nella stessa regione e possono connettersi l'una con l'altra.
+1

Perché stai cercando di connettersi a una produzione un'istanza Redis? Non puoi semplicemente eseguire un'istanza locale sulla tua macchina? Per quanto riguarda la tua domanda, probabilmente non vuoi usare '6379: localhost: 6379', ma invece qualcosa come' 6379: redis-servers.ip.address: 6379', ma questa è solo un'ipotesi. Usa 'ssh -vv' per eseguire il debug dei problemi di tunneling, stamperà un sacco di cose su stderr. – koniiiik

+0

Credo che memcached su AWS funzionerebbe solo all'interno della rete AWS. Ho provato senza fortuna a connettermi dal mio ambiente locale. BTW Non dimenticarti di aprire le porte Elasticache nei tuoi gruppi di sicurezza EC2. Inoltre eseguo le mie app Django tramite AWS Elastc Beanstalk. – WayBehind

+0

@koniiiik Hai frainteso, non sto cercando di connetterti direttamente a Redis ma voglio usare il tunneling SSH (a qualsiasi istanza EC2) per far sembrare che il mio ambiente locale stia girando all'interno del VPC. – Prometheus

risposta

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

Questo inoltrerà le richieste da computer locale (il: 6379) a localhost:6379 sul istanza EC2. Questo non è ciò che si vuole (a meno che non si è Redis in esecuzione localmente sul istanza EC2)

Si dovrebbe usare la IP Elasticache invece

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

Ho capito, sembrava funzionare. Grazie. – Prometheus

Problemi correlati