Se você já precisou hospedar um aplicativo com o Docker na AWS, provavelmente já se deparou com esta pergunta: qual das centenas de opções de serviço devo usar? Bem, geralmente alguém recomendará que você use ECS, Elastic Beanstalk, EC2 ou até Lightsail.
No entanto, se você é um desenvolvedor com pouca experiência com a AWS (ou deseja apenas que seus aplicativos sejam executados), o App Runner pode ser a opção mais recomendada para você. Além de não exigir amplo conhecimento dos fundamentos da AWS (Security Groups, VPC, EBS, Load Balancer, etc.), também oferece alto acesso, dimensionamento automático, sem nenhum esforço. Esse serviço é novo no catálogo da AWS, desde que foi lançado em maio de 2021, e considero a maneira mais fácil e rápida de oferecer suporte a aplicativos Docker de maneira segura e sem interrupções.
No exemplo de hoje, iremos supor que deseja-se hospedar uma aplicação em Python + Flask no App Runner, usando seu devido Dockerfile.
Para isso, vamos criar um repositório ECR e gerar a imagem do Docker parar mandar para a AWS.
Feito isso, já teremos acesso ao mesmo. (Para vê-lo, utilize: “aws ecr list-images –repository-name pythonflask.py”)
Agora precisamos criar uma função no IAM que permita que o executor do aplicativo puxe nosso aplicativo do repositório ECR (OBSERVAÇÃO: essa etapa deve ser feita uma vez. Depois disso, você pode aproveitar a mesma função em todos os campos do aplicativo Executor que são criados . na mesma conta). Isso é chamado de relação de confiança e é para um serviço da AWS ter permissão para interagir com outro.
Para criar a role utilizando o json acima, basta usar no CLI: “aws iam create-role –role-name apprunner2ecr –path /service-role/ –assume-role-policy-document file://apprunner_role.json”
Após criado a role, utilize o seguinte comando para criar a policy: “aws iam attach-role-policy –policy-arn arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccess –role-name apprunner2ecr”
Com isso, basta colocar o app para rodar “aws apprunner create-service –cli-input-json file://apprunner.json”
Após o deploy, podemos testar nossa aplicação:
Eeeee sucesso!