DEV Community

Bruno Caxias
Bruno Caxias

Posted on

Levantando uma ASP.NET Web API em AWS ECS

Introdução

Este artigo tem como objetivo ensinar como é possível levantar uma imagem Docker de uma Web API em ASP.NET para AWS ECS utilizando o GitLab Container Registry e o AWS Academy.

Antes de Começarmos

Para poder utilizar o ECS da AWS, antes deve-se ter um registro de uma imagem Docker do seu projeto. Nesse caso, será utilizado como exemplo um registro no repositório do GitLab, mas também é possível utilizar outros registros como o do próprio Docker (DockerHub) ou o registro do ECR da AWS. Além disso, deve-se ter um cadastro na plataforma da AWS para uso das ferramentas. No caso deste artigo, será utilizado uma conta de estudante com acesso limitado a alguns módulos. Outro ponto a se considerar é a conexão da API com o banco de dados. No exemplo fornecido, a API está conectada a um banco levantado no próprio AWS por RDS, por meio de uma string de conexão no próprio código fonte.

O Que é o ECS?

De acordo com a documentação oficial da Amazon, o ECS é um serviço totalmente gerenciado de orquestração de contêineres que ajuda a implantar, gerenciar e dimensionar facilmente aplicações conteinerizadas. Sendo assim, esse serviço se encaixa perfeitamente para as necessidades desse artigo.

Salvando a imagem Docker em um Registry

Para esse exemplo será utilizado o Container Registry do GitLab para salvar e disponibilizar a imagem do Docker contendo o projeto.

  1. Crie um repositório com o projeto que deseja dockerizar no GitLab.

  2. Ao criar o repositório, vá até Deploy -> Container Registry na barra lateral.

Container Registry

  1. Utilize os comandos mostrados na tela principal para realizar a publicação da imagem do Docker:

docker login registry.gitlab.com
docker build -t [url do registro do projeto] .
docker push [url do registro do projeto]

Os comandos de build podem variar contendo outras tags dependendo do projeto, então é importante prestar atenção a esses cuidados.

Levantando o ECS em AWS

Iniciando o Lab

Para começar o levantamento do ECS, primeiro deve-se acessar o AWS Lab para ter acesso aos serviços.

Módulos

Clique em Start Lab, assim que o símbolo de AWS ficar verde clique nele.

Start Lab

Criando o ECS

Após isso, na aba de pesquisa coloca-se ECS para encontrar o serviço.

Pesquisa ECS

Clicando um ECS a seguinte tela deve aparecer.

Tela ECS

Crie um cluster para o serviço seguindo os passos, nesse caso será criado um cluster AWS Fargate (Sem servidor):

  • Insira um nome para o cluster
  • Selecione AWS Fargate

Config ECS

Criando tarefas para rodar no Cluster

  • Acesse Definições da tarefa na barra lateral.

Definições da tarefa

  • Clique em Criar nova definição de tarefa.

  • Defina um nome para a tarefa.

Nome para tarefa

  • Configure os requisitos de infraestrutura, nesse caso será mantido o AWS Fargate no tipo de inicialização, o sistema operacional deve ser o sistema no qual o seu Docker irá rodar, o tamanho da tarefa deve ser definido a partir dos requisitos da sua Web API (Para APIs com muita computação é aconselhável alterar os valores).

Config Infra Tarefa

Em funções da tarefa é interessante que em Função de execução de tarefas seja selecionado um perfil com as permissões necessárias para as ações da API, ou no caso de contas de estudante (como a utilizada), seja selecionada uma opção permitida. Nesse caso, será utilizado o perfil LabRole.

Função de execução de tarefas

  • Agora será o momento de configurar o container para que rode no cluster.
    • Comece colocando um nome para o contêiner, o link para a imagem do Docker no repositório, mantenha a opção de Contêiner Essencial como Sim, caso as imagens do repositório sejam privadas é necessário a configuração de um Secrets Manager no AWS para autenticação e acesso a imagem no repositório.

Detalhes do contêiner

Caso não saiba, para conseguir o link para a imagem no repositório você deve ir em Deploy -> Container Registry após ter publicado a imagem e clicar no botão de copiar ao lado do nome da imagem.

Gitlab docker image link

  • Em mapeamento de porta coloque a porta em que a API estará respondendo, no exemplo será a porta 8080. Caso queira o protocolo da aplicação pode ser alterado também (por exemplo HTTP2 para HTTPS).

Mapeamento de porta

No caso do exemplo o resto das opções podem ser mantidas como padrão.

Inserindo a tarefa no Cluster

  • Acesse o Cluster e clique em Criar na aba de Tarefa.

Aba de Tarefa

  • Em Ambiente selecione a opção Tipo de Inicialização e mantenha em Fargate.

Ambiente

  • Em Configuração de Implantação selecione Serviço. No caso da Web API, selecione a família da tarefa criada para o cluster, atribua um nome, mantenha o tipo de serviço no padrão e coloque quantas tarefas irão ser inicializadas.

Configuração de Implantação

Após isso, para esse exemplo pode-se manter o resto em padrão e clicar em Criar.

Acessar a API Web por IP Público

Depois de criado o serviço no cluster basta acessar o cluster e na aba services selecionar o serviço criado.

Na tela do serviço clique em Tarefas e clique na Tarefa do serviço.

Tarefa do serviço

Ao clicar na tarefa, na aba de Configuração será possível ver uma aba com o IP Público, por meio desse IP será possível acessar a API externamente.

IP Público

Lembre-se de colocar a porta que deve ser acessada, assim como os caminhos próprios da API na URL para verificar funcionalidade.

URL API

Conclusão

Dessa forma, por meio desse artigo temos ao fim uma ASP.NET Web API Dockerizada rodando em ECS AWS. Essa publicação teve em mente detalhar e exemplificar melhor o processo de criação desse serviço utilizando imagens dos módulos. Por fim, é importante incentivar a leitura da documentação oficial do AWS assim como a busca por outros fóruns capazes de sanar dúvidas e questões relacionadas a passos específicos não elaborados suficientemente aqui.

Top comments (0)