
Nesse artigo vou demonstar a utilização da ferramenta AWS Copilot CLI para a criação de uma forma simplificada uma aplicação conteinerizada executando no ECS. Com o AWS Copilot CLI também é possível gerenciar toda a infraestrutura da aplicação como por exemplo a Infraestrutura como Código, Armazenamento e os segredos armazenados além da pipeline da aplicação tudo via linha de comando.
Para mais informações sobre o AWS Copilot CLI acessar esse link.
Pré Requisitos
Abaixo os pré requisitos para seguir com esse tutorial:
- Ter uma conta AWS
- AWS Copilot CLI instalado no seu computador
- Ter um usuário IAM configurado na sua máquina
Instalação
Para efetuar a instalação do AWS Copilot deve ser executado os seguintes comandos abaixo:
sudo curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/releases/latest/download/copilot-linux \
&& sudo chmod +x /usr/local/bin/copilot \
&& copilot --help
Deve ser apresentado uma tela similar a abaixo:

No meu caso eu utilizei um computador executando linux. Para outros sistemas operacionais consultar esse link.
Configuração usuário AWS IAM
Como pré requisito para utilização do AWS Copilot CLI é necessário a configuração de usuário IAM no seu computador. Para fazer essa configuração pode seguir esse artigo.
Para esse teste vou usar a policy AdministratorAccess. Caso utilize
um profile diferente do default no arquivo .aws/credentials será
necessário exportar a variável de ambiente AWS_PROFILE ou inserir
essa variável no arquivo .bashrc ou .zshrc. No meu caso vou exportar a
variável executando o comando abaixo:
export AWS_PROFILE="blog"
Para verificar o conteúdo da variável executar o comando abaixo:
echo $AWS_PROFILE
Deploy da Aplicação
Para testar o AWS copilot CLI vamos fazer o deploy da aplicação que está nesse repositório. Primeiro passo que necessitamos fazer é o git clone desse repositório usando o comando abaixo:
git clone https://github.com/aws-samples/amazon-ecs-cli-sample-app.git example
Depois vamos acessar a pasta example e vamos executar o comando copilot init será apresentado a tela abaixo:

Você deve inserir o nome da aplicação. No meu caso será teste-app-blog.
Na próxima tela será solicitado a escolha do tipo de workload da sua aplicação. Para essa demonstração iremos utilizar a opção Load Balanced Web Service mas existem outras opções conforme abaixo:

Agora você deve escolher um nome para seu serviço. No meu caso será teste-app-blog-svc conforme abaixo:

Agora será solicitado a localização do arquivo Dockerfile ou a localização de uma imagem da aplicação. Vamos utilizar o arquivo Dockerfile que está na raiz do repositório.

Nesse próximo passo será criado todas as roles de infraestrutura necessárias para o funcionamento da nossa aplicação. Após essa criação será perguntado se você gostaria de fazer deploy da sua aplicação conforme imagem abaixo:

Na próxima tela será solicitado a criação de um environment. Esse environment terá o nome de dev conforme imagem abaixo:

Na próxima tela será criado toda a parte de infraestrutura como por exemplo repositório do ECR, um bucket S3, toda parte de network e o seu cluster ECS.

Na próxima tela o AWS copilot CLI irá fazer o build da imagem da nossa aplicação e fazer o push para o repositório ECR criado anteriormente conforme abaixo:

Na próxima tela a aplicação será configurada dentro do cluster ECS, será feito o deploy e será disponibilizado a URL da nossa aplicação conforme image abaixo:

Acessando a URL da aplicação deve retornar uma página similar a abaixo:

Interagindo com AWS Copilot CLI
Com a aplicação já deployada no seu cluster ECS podemos usar o AWS Copilot CLI para consultar informações da nossa aplicação. Abaixo segue alguns exemplos:
copilot svc status

copilot svc ls

copilot app show

Existem muitas outras opções que você pode utilizar com o AWS copilot CLI.
Deletando sua aplicação
Agora vamos deletar a aplicação criada usando o comando abaixo:
copilot app delete
Será solicitado uma confirmação e depois será feito processo de exclusão de todos os recursos criados pelo AWS copilot CLI conforme imagem abaixo:

Conclusão
O Objetivo desse artigo foi demonstrar a utilização da ferramenta AWS Copilot CLI implementando toda a infraestrutura e uma aplicação de teste.