Sto giocando con Amazon ECS (un reimballaggio di Docker) e sto scoprendo che esiste una funzionalità Docker che ECS non sembra fornire. Vale a dire, vorrei avere più contenitori in esecuzione in un'istanza e avere richieste che arrivano all'indirizzo IP 1 mappano al contenitore 1 e richieste che arrivano all'indirizzo IP 2 mappano al contenitore 2, ecc.
In Docker, l'associazione di un contenitore a un indirizzo IP specifico viene eseguita tramite:
docker run -p myHostIPAddr:80:8080 imageName command
Tuttavia, in Amazon ECS, non sembra esserci un modo per farlo.
Ho impostato un'istanza EC2 con più indirizzi IP elastici. Quando si configura un contenitore come parte della definizione di un'attività, è possibile mappare le porte host alle porte contenitore. Tuttavia, a differenza di Docker, ECS non fornisce un modo per specificare l'indirizzo IP dell'host come parte della mappatura.
Un'ulteriore svolta è che vorrei che le richieste in uscita dal contenitore N avessero l'indirizzo IP esterno del contenitore N.
C'è un modo per fare tutto quanto sopra?
Ho esaminato la documentazione della CLI di AWS e l'SDK di AWS per Java. Vedo che la CLI può restituire un array networkBindings contenente elementi come questo:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
e Java SDK ha una classe denominata NetworkBinding che rappresenta le stesse informazioni. Tuttavia, queste informazioni sembrano essere solo di output, in risposta a una richiesta. Non riesco a trovare un modo per fornire queste informazioni vincolanti a ECS.
Il motivo per cui voglio fare questo è che voglio impostare macchine virtuali completamente diverse per diversi collegi elettorali, utilizzando contenitori diversi potenzialmente sulla stessa istanza EC2. Ogni VM avrebbe il proprio server Web (inclusi certificati SSL distinti), nonché il proprio servizio FTP e SSH.
Grazie.
aws ecs describe-container-instances
non sembra aiutare. Sembrano davvero voler spingerti a usare un ELB, che per il nostro caso è un po 'stupido.