Mais de 100 dias!

Isso também me fez perceber duas coisas:

  1. Não houve desafio # 100DaysOfCloud
  2. 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!

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:

  1. Eu não quero gastar muito dinheiro
  2. 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.

No curso AWS Certified Developer – Associate 2020

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:

  1. Envie a imagem do Docker para o Amazon Elastic Container Registry (ECR)
  2. 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.

PropriedadeValor
Nome do contêinercontainer-100-dias-da-nuvem-bot
Imagemaws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot
Limites de memória (MiB)Limite suave | 512
Mapeamentos de portaPorto de contêiner: 80
Protocolo: tcp
Unidades de CPU256
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 .

PropriedadeValor
Nome da definição da tarefatask-definition-100-days-of-cloud-bot
Memória de tarefas0,5 GB (512)
CPU da tarefa0,25 vCPU (256)

  • Clique Próximo.
  • Clique Editar no Defina seu serviço seção, complete com as seguintes configurações e selecione Salve .

PropriedadeValor
Nome do Serviçoservice-100-days-of-cloud-bot
Número de tarefas desejadas1
Tipo de balanceador de cargaNenhum

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.