Meu ⏳ in cert:#AWSCertified
Praticante da nuvem: 23d
Arquiteto de soluções Associado: 39d
Desenvolvedor associado: 23d#AzureCertified
Fundamentos: 14d
Arquiteto de soluções especialista: WIPParece difícil? Isto é.
MAS é apenas 100d da sua vida! Não esqueça!# 100DaysOfCode– Johan Rin (@johanrin) 25 de junho de 2020
Mais de 100 dias!
Isso também me fez perceber duas coisas:
- Não houve desafio # 100DaysOfCloud
- Agora temos conteúdo suficiente para criar esse desafio
Então, imediatamente entrei em contato com Alex Kallaway, o criador do # 100DaysOfCode, para perguntar se era possível criar o # 100DaysOfCloud com base em seu desafio.
E alguns dias depois, o desafio # 100DaysOfCloud era oficial!
Após a enquete, entrei em contato @ ka11away, o criador de # 100DaysOfCode, e adivinha?
o # 100DaysOfCloud O desafio agora é oficial 🎉🎉🎉
Se você é corajoso o suficiente para comprometer 100 dias com a nuvem, então é seu desafio!
1/3
– Johan Rin (@johanrin) 26 de junho de 2020
Mas algo estava faltando.
Se você já usou a hashtag # 100DaysOfCode, sabe que seus tweets serão retuitados pelo menos três vezes pelos bots do Twitter.
Como não havia bots para o novo desafio # 100DaysOfCode, decidi resolver esse problema!
Nesta postagem, veremos como implantei meu bot no Twitter e por que optei por implantá-lo no AWS Fargate.
Vamos começar!
Pré-requisitos
Se você deseja acompanhar e executar os comandos abaixo, certifique-se de:
Por que o AWS Fargate?
Se você verificar meu código, verá que:
- O código é escrito em Python e usa o pacote tweepy
- O bot está sempre em execução (usando um
while
ciclo) - Existe um
Dockerfile
para construir minha imagem
Não vou explicar todo o código porque está além do escopo deste post. Mas mencionei todas as fontes que usei no repositório GitHub.
Minha ideia foi implantar a imagem do Docker em um contêiner na nuvem com as seguintes restrições:
- Eu não quero gastar muito dinheiro
- Não quero gerenciar e operar servidores
Como tenho créditos na AWS, a primeira restrição foi fácil – vá com a AWS.
Quanto à restrição número 2, eu sabia pelo Curso de desenvolvedor certificado da AWS – associado, que poderíamos implantar contêineres sem servidor com o AWS Fargate.

Dependendo da sua região, os preços dos serviços da AWS podem variar. Geralmente é apenas uma questão de alguns centavos, mas eu planejava administrar meu bot por pelo menos um ano! Então, cada centavo importava.
Para ver os preços do AWS Fargate e minimizar seu custo, você pode verifique a documentação da AWS. Descobri que a região mais barata perto de mim era a Irlanda, então decidi implantar meu bot na AWS Fargate lá!
Como implantei meu bot?
Agora que expliquei por que usei o AWS Fargate, vamos ver como implantei meu bot.
Há duas grandes etapas para implantar uma imagem do Docker no AWS Fargate:
- Envie a imagem do Docker para o Amazon Elastic Container Registry (ECR)
- Implantar a imagem do Docker no Fargate
Vamos explicar cada etapa em detalhes.
Envie a imagem do Docker para o Amazon Elastic Container Registry (ECR)
- No diretório raiz, construa sua imagem a partir do
Dockerfile
.
docker build . -t 100-days-of-cloud-bot
- Autentique seu Docker no Amazon ECR.
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Marque sua imagem no repositório Amazon ECR.
docker tag 100-days-of-cloud-bot aws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot
- Envie sua imagem para o Amazon ECR.
docker push aws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot
Implantar a imagem do Docker no Amazon Fargate

- Clique Configurar no contêiner personalizado, conclua com as seguintes configurações e selecione Atualizar.

Propriedade | Valor |
---|---|
Nome do contêiner | container-100-dias-da-nuvem-bot |
Imagem | aws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot |
Limites de memória (MiB) | Limite suave | 512 |
Mapeamentos de porta | Porto de contêiner: 80 Protocolo: tcp |
Unidades de CPU | 256 |
Variáveis ambientais (Credenciais de autenticação da API do Twitter) | CONSUMER_KEY | Valor Chave do consumidor CONSUMER_SECRET | Valor consumidor secreto ACCESS_TOKEN Valor access_token ACCESS_TOKEN_SECRET Valor access_token_secret |
- Clique Editar no Definição de tarefa seção, complete com as seguintes configurações e selecione Salve .

Propriedade | Valor |
---|---|
Nome da definição da tarefa | task-definition-100-days-of-cloud-bot |
Memória de tarefas | 0,5 GB (512) |
CPU da tarefa | 0,25 vCPU (256) |
- Clique Próximo.
- Clique Editar no Defina seu serviço seção, complete com as seguintes configurações e selecione Salve .

Propriedade | Valor |
---|---|
Nome do Serviço | service-100-days-of-cloud-bot |
Número de tarefas desejadas | 1 |
Tipo de balanceador de carga | Nenhum |
Não precisamos de um balanceador de carga aqui devido ao limite de taxa da API do Twitter. Mesmo se dimensionarmos nossos contêineres, a API do Twitter nos enviará uma mensagem de erro 420 porque o bot está sendo limitado pela taxa para fazer muitas solicitações.
- Clique Próximo.
- Edite seu Nome do cluster com cluster-100-dias-de-nuvem-bot.

- Clique Próximo.
- Revise sua configuração e clique em Crio.

É isso aí, o contêiner é implantado no AWS Fargate!
Conclusão
Você implantou seu bot do Twitter no AWS Fargate com apenas quatro etapas! 🎉🎉🎉
O AWS Fargate é fácil de usar, permitindo implantar contêineres sem gerenciar e operar servidores.
Esse caso de uso foi simples, mas podemos fazer muito mais como adicionar um balanceador de carga ou definir mais tarefas. Eu recomendo que você verifique a documentação para mais detalhes.
Como este post foi sobre o desafio # 100DaysOfCloud, devo mencionar que temos Servidor de discórdia, sinta-se à vontade para participar da comunidade e do desafio! Temos pessoas incríveis de todo o mundo prontas para ajudá-lo a começar com a nuvem.
É isso para mim, espero que você tenha aprendido alguma coisa!
Se você gostou deste artigo, recomendo que você leia também os meus últimos posts no meu blog:
Minha jornada
Ei, eu sou Johan. Sou arquiteto técnico vivendo e trabalhando em Paris. Adoro aprender coisas novas, enfrentar desafios e escrever blogs.
