O que pode tornar isso complicado de entender é que, na verdade, existem três portas a serem consideradas aqui:
- A porta externa do Application Load Balancer (ALB) - o ouvinte
- A 'porta do host' da (s) instância (s) do EC2 em execução no cluster do ECS
- A "porta do contêiner" do aplicativo em execução no seu contêiner
A mágica acontece quando você especifica uma 'porta do host' de 0, essa é uma instrução para o ECS iniciar o contêiner com uma porta efêmera aleatória exposta na instância do host do EC2 ECS. Permitindo (por exemplo) que você execute duas instâncias do mesmo contêiner na mesma instância do EC2. Você realmente não precisa entender qual porta está em uso (exceto para talvez diagnósticos), já que o ECS / ALB cuida do mapeamento dinamicamente - exceto que você precisa garantir que o grupo de segurança de suas instâncias do ECS permita que todos os intervalos de portas efêmeros sejam o ALB - caso contrário, o tráfego não passará do ALB para o aplicativo.
A porta do contêiner interno do 4200 pode ser a mesma para cada instância do contêiner, porque é visível apenas dentro do próprio contêiner.
Em seguida, para que seu aplicativo use a porta 80 - por isso, é uma experiência perfeita para seus usuários - é a porta listener ALB que deve ser a porta 80, pois é o ALB ao qual os usuários se conectarão. href="http://yourapplication.com/"> link é um CNAME para o nome DNS do ALB.
Mais detalhes sobre como configurar isso podem ser encontrados aqui:
Como faço para configurar o mapeamento dinâmico de portas para o Amazon ECS?
E aqui:
Mapeamento dinâmico de portas no ECS com o Application Load Balancer
Por fim, embora sua meta seja exportar a porta 80, sugiro usar o HTTPS em 443 no balanceador de carga, pois você pode obter um certificado para o ALB gratuitamente na AWS. Quaisquer serviços expostos hoje devem usar TLS (SSL) sempre que possível.
Claro, se você deseja que seus usuários ainda acessem via HTTP e os redirecionem - felizmente, desde o mês passado, agora é possível usar a ação de redirecionamento no ALB para fazer isso nativamente no ALB, anexando uma regra de redirecionamento a uma porta 80 ouvinte. Mais detalhes aqui: