Gram z Amazon ECS (przepakowywanie Dockera) i stwierdzam, że istnieje jedna funkcja Dockera, której ECS nie wydaje się zapewniać. Mianowicie, chciałbym, aby w jednej instancji działało wiele kontenerów, a żądania przychodzące do adresu IP 1 były mapowane do kontenera 1, a żądania przychodzące do adresu IP 2 mapowały do kontenera 2 itd.
W Docker powiązanie kontenera z określonym adresem IP odbywa się poprzez:
docker run -p myHostIPAddr:80:8080 imageName command
Jednak w Amazon ECS wydaje się, że nie ma na to sposobu.
Skonfigurowałem instancję EC2 z wieloma elastycznymi adresami IP. Podczas konfigurowania kontenera jako części definicji zadania można mapować porty hosta na porty kontenera. Jednak w przeciwieństwie do Dockera, ECS nie zapewnia sposobu określenia adresu IP hosta jako części mapowania.
Dodatkowym zwrotem jest to, że chciałbym, aby żądania wychodzące z kontenera N miały zewnętrzny adres IP kontenera N.
Czy istnieje sposób na wykonanie powyższych czynności?
Przejrzałem dokumentację AWS CLI, a także AWS SDK dla Java. Widzę, że CLI może zwrócić tablicę networkBindings zawierającą takie elementy:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
a Java SDK ma klasę o nazwie NetworkBinding, która reprezentuje te same informacje. Jednak wydaje się, że te informacje są tylko danymi wyjściowymi w odpowiedzi na żądanie. Nie mogę znaleźć sposobu na przekazanie tych wiążących informacji do ECS.
Powodem, dla którego chcę to zrobić, jest to, że chcę skonfigurować całkowicie różne maszyny wirtualne dla różnych okręgów, używając różnych kontenerów potencjalnie w tej samej instancji EC2. Każda maszyna wirtualna miałaby swój własny serwer WWW (w tym odrębne certyfikaty SSL), a także własną usługę FTP i SSH.
Dzięki.
aws ecs describe-container-instances
nie wydaje się pomagać. Wydaje się, że naprawdę chcą zmusić cię do użycia ELB, co w naszym przypadku jest trochę głupie.