Conexão de aplicações do Amazon ECS à Internet - Amazon Elastic Container Service

Conexão de aplicações do Amazon ECS à Internet

A maioria das aplicações em contêineres tem pelo menos alguns componentes que precisam de acesso externo à Internet. Por exemplo, o back-end de uma aplicação móvel requer acesso externo às notificações push.

A Amazon Virtual Private Cloud tem dois métodos principais para facilitar a comunicação entre sua VPC e a Internet.

Sub-rede pública e gateway da Internet

Diagrama mostrando a arquitetura de uma sub-rede pública conectada a um gateway da Internet.

Ao usar uma sub-rede pública que tem uma rota para um gateway da Internet, a aplicação em contêiner pode ser executada em um host dentro de uma VPC em uma sub-rede pública. O host que executa o contêiner recebe um endereço IP público. Esse endereço IP público é roteável pela Internet. Para obter mais informações, consulte Gateways da Internet no Guia do usuário da Amazon VPC.

Essa arquitetura de rede facilita a comunicação direta entre o host que executa a aplicação e outros hosts na Internet. A comunicação é bidirecional. Isso significa que você não só pode estabelecer uma conexão de saída com qualquer outro host na Internet, mas outros hosts na Internet também podem tentar se conectar ao seu host. Portanto, você deve prestar muita atenção ao seu grupo de segurança e às regras de firewall. Isso garante que outros hosts na Internet não possam abrir nenhuma conexão que você não queira que seja aberta.

Por exemplo, se a aplicação for executada no Amazon EC2, certifique-se de que a porta 22 para acesso SSH não esteja aberta. Caso contrário, sua instância pode receber tentativas constantes de conexão SSH vindas de bots maliciosos na Internet. Esses bots vasculham endereços IP públicos. Depois de encontrarem uma porta SSH aberta, eles tentam atacar senhas com força bruta para acessar sua instância. Por causa disso, muitas organizações limitam o uso de sub-redes públicas e preferem ter a maioria, se não todos, de seus recursos dentro de sub-redes privadas.

Usar sub-redes públicas para redes é adequado em aplicações públicas que exigem grandes quantidades de largura de banda ou latência mínima. Os casos de uso aplicáveis incluem serviços de streaming de vídeo e jogos.

Essa abordagem de rede é compatível ao usar o Amazon ECS no Amazon EC2 e ao usar o Amazon EC2 no AWS Fargate.

  • Amazon EC2: você pode executar instâncias do EC2 em uma sub-rede pública. O Amazon ECS usa essas instâncias do EC2 como capacidade de cluster, e qualquer contêiner que esteja sendo executado nas instâncias pode usar o endereço IP público subjacente do host para redes de saída. Isso se aplica aos modos de rede host e bridge. No entanto, o modo de rede awsvpc não fornece endereços IP públicos às ENIs de tarefa. Portanto, eles não podem fazer uso direto de um gateway da Internet.

  • Fargate: ao criar o serviço do Amazon ECS, especifique sub-redes públicas para a configuração de rede do serviço e use a opção Atribuir endereço IP público. Cada tarefa do Fargate é conectada em rede na sub-rede pública e tem seu próprio endereço IP público para comunicação direta com a Internet.

Sub-rede privada e gateway NAT

Diagrama mostrando a arquitetura de uma sub-rede privada conectada a um gateway NAT.

Ao usar uma sub-rede privada e um gateway NAT, você pode executar a aplicação em contêineres em um host que esteja em uma sub-rede privada. Dessa forma, esse host tem um endereço IP privado que pode ser encaminhado dentro da VPC, mas não pode ser encaminhado pela Internet. Isso significa que outros hosts dentro da VPC podem se conectar ao host usando seu endereço IP privado, mas outros hosts na Internet não podem fazer nenhuma comunicação de entrada com o host.

Com uma sub-rede privada, você pode usar um gateway de conversão de endereços de rede (NAT) para permitir que um host dentro de uma sub-rede privada se conecte à Internet. Os hosts na Internet recebem uma conexão de entrada que parece vir do endereço IP público do gateway NAT que está dentro de uma sub-rede pública. O gateway NAT serve como uma ponte entre a Internet e a VPC privada. Essa configuração costuma ser preferida por motivos de segurança, pois significa que a VPC está protegida do acesso direto de invasores na Internet. Para obter mais informações, consulte Gateways NAT no Guia do usuário da Amazon VPC.

Essa abordagem baseada em rede privada é adequada para cenários em que você deseja proteger seus contêineres do acesso externo direto. Os cenários aplicáveis incluem sistemas de processamento de pagamentos ou contêineres que armazenam dados e senhas do usuário. Você será cobrado para criar e usar um gateway NAT em sua conta. Também se aplicam taxas de uso por hora do gateway NAT e de processamento de dados. Para fins de redundância, você deve ter um gateway NAT em cada zona de disponibilidade. Dessa forma, a perda de disponibilidade de uma única zona de disponibilidade não compromete a conectividade externa. Por isso, caso tenha uma workload pequena, talvez seja mais econômico usar sub-redes privadas e gateways NAT.

Essa abordagem de rede é compatível ao usar o Amazon ECS no Amazon EC2 e ao usá-lo no AWS Fargate.

  • Amazon EC2: você pode executar instâncias do EC2 em uma sub-rede privada. Os contêineres executados nesses hosts do EC2 usam a rede de hosts subjacentes, e as solicitações de saída passam pelo gateway NAT.

  • Fargate: ao criar o serviço do Amazon ECS, especifique sub-redes privadas para a configuração de rede do serviço e não use a opção Atribuir endereço IP público. Cada tarefa do Fargate é hospedada em uma sub-rede privada. Seu tráfego de saída é encaminhado por meio de qualquer gateway NAT que você tenha associado a essa sub-rede privada.