Um Guia para Automatizar a Implantação de Infraestrutura AWS

Quando se trata de gerenciar infraestrutura na nuvem, a AWS fornece várias ferramentas poderosas que ajudam a automatizar a criação e o gerenciamento de recursos.

Uma das maneiras mais eficazes de lidar com implantações é através do AWS CloudFormation. Ele permite que você defina sua infraestrutura de forma declarativa, facilitando a automação do provisionamento de serviços da AWS, incluindo Elastic Beanstalk, aplicações sem servidor, instâncias EC2, grupos de segurança, balanceadores de carga e mais.

Neste guia, vamos explorar como usar o AWS CloudFormation para implantar infraestrutura programaticamente. Também abordaremos como implantar recursos manualmente por meio do Console de Gerenciamento da AWS e como integrar serviços como Elastic Beanstalk, funções sem servidor, EC2, IAM e outros recursos da AWS em seu fluxo de trabalho automatizado.

Usando o AWS CloudFormation para Infraestrutura como Código

O AWS CloudFormation permite que você defina sua infraestrutura usando código. O CloudFormation fornece uma estrutura unificada para automatizar e versionar sua infraestrutura configurando Elastic Beanstalk, instâncias EC2, VPCs, funções IAM, funções Lambda ou aplicações sem servidor.

Os modelos do CloudFormation são escritos em formato YAML ou JSON e definem os recursos que você precisa provisionar. Com o CloudFormation, você pode automatizar tudo, desde aplicações simples até ambientes complexos com múltiplos serviços.

Principais recursos do CloudFormation

  • Configuração declarativa. Descreva o estado desejado da sua infraestrutura e o CloudFormation garante que o estado atual corresponda a ele.
  • Gerenciamento de recursos. Provisiona e gerencia automaticamente recursos da AWS, como instâncias EC2, bancos de dados RDS, VPCs, funções Lambda, funções IAM e muito mais.
  • Atualizações declarativas de pilha. Se precisar modificar sua infraestrutura, basta atualizar o modelo do CloudFormation e ele ajustará seus recursos para o novo estado desejado.

Passos para usar o CloudFormation em Várias Implantações AWS

Implantação do Elastic Beanstalk com o CloudFormation

1. Escreva um Modelo do CloudFormation

Crie um modelo do CloudFormation em YAML ou JSON para definir sua aplicação e ambiente do Elastic Beanstalk. Este modelo pode incluir recursos como instâncias EC2, grupos de segurança, políticas de dimensionamento e até a própria aplicação do Elastic Beanstalk.

Exemplo de Modelo do CloudFormation (Elastic Beanstalk):

YAML

 

2. Implante a Pilha do CloudFormation

Use a CLI da AWS ou o Console de Gerenciamento da AWS para implantar a pilha do CloudFormation. Uma vez implantada, o CloudFormation criará automaticamente todos os recursos definidos no modelo.

Implante via CLI da AWS:

YAML

 

Implantação sem servidor com AWS Lambda, API Gateway e DynamoDB

O CloudFormation também é ótimo para implantar aplicativos serverless. Com serviços como AWS Lambda, API Gateway, DynamoDB e S3, você pode gerenciar facilmente cargas de trabalho serverless.

1. Crie um modelo CloudFormation Serverless

Este modelo incluirá uma função Lambda, um API Gateway para acessar a função e uma tabela DynamoDB.

Exemplo de Modelo CloudFormation (Serverless):

YAML

 

2. Implante o Stack Serverless

Implante seu aplicativo serverless usando a CLI da AWS ou o Console de Gerenciamento da AWS.

YAML

 

Implantação VPC e EC2

O CloudFormation pode automatizar a criação de uma Rede Virtual Privada (VPC), sub-redes, grupos de segurança e instâncias EC2 para cargas de trabalho mais tradicionais.

1. Modelo CloudFormation para VPC e EC2

Este modelo define uma instância EC2 simples dentro de uma VPC, com um grupo de segurança permitindo tráfego HTTP.

Exemplo de Modelo CloudFormation (VPC e EC2):

YAML

 

2. Implante o Stack

YAML

 

Recursos Avançados do CloudFormation

O AWS CloudFormation oferece mais do que apenas provisionamento simples de recursos. Aqui estão alguns dos recursos avançados que tornam o CloudFormation uma ferramenta poderosa para automação de infraestrutura:

  • Conjuntos de Stacks. Crie e gerencie stacks em várias contas e regiões da AWS, permitindo a implantação consistente de infraestrutura em toda a sua organização.
  • Conjuntos de Alterações. Antes de aplicar alterações à sua pilha do CloudFormation, visualize as alterações com um conjunto de alterações para garantir o resultado desejado.
  • Resultados. Valores de saída do CloudFormation que você pode usar em outras pilhas ou aplicações. Por exemplo, mostrar a URL de um API Gateway ou o endereço IP de uma instância do EC2.
  • Parâmetros. Passe parâmetros para personalizar sua pilha sem modificar o próprio modelo, tornando-a reutilizável em diferentes ambientes.
  • Mapeamentos. Crie pares de chave-valor para mapear valores de configuração, como valores específicos da região da AWS, tipos de instância ou outros parâmetros específicos do ambiente.

Usando o CloudFormation com Serviços da AWS além do Elastic Beanstalk

O CloudFormation não se limita apenas a implantações no Elastic Beanstalk – é uma ferramenta flexível que pode ser usada com uma variedade de serviços da AWS, incluindo:

  • AWS Lambda. Automatize a implantação de funções sem servidor juntamente com acionadores como API Gateway, S3 ou eventos do DynamoDB.
  • Amazon S3. Use o CloudFormation para criar buckets do S3 e gerenciar sua configuração.
  • AWS IAM. Automatize a criação de funções e políticas do IAM para controlar o acesso aos seus recursos.
  • Amazon RDS. Defina bancos de dados RDS (MySQL, PostgreSQL, etc.) com todas as configurações associadas, como configurações de VPC, sub-redes e grupos de segurança.
  • Amazon SQS, SNS. Gerencie filas e tópicos para a arquitetura de sua aplicação usando o CloudFormation.
  • Amazon ECS e EKS. Automatize a criação e implantação de aplicações em contêineres com serviços como ECS e EKS.

Implantação Manual de Infraestrutura pelo Console de Gerenciamento da AWS

Embora o CloudFormation automatize o processo, às vezes é necessária intervenção manual. O Console de Gerenciamento da AWS permite implantar recursos manualmente.

1. Aplicação Elastic Beanstalk

  • Acesse o Console do Elastic Beanstalk.
  • Clique em Criar Aplicação, siga as etapas para definir o nome da aplicação e a plataforma (por exemplo, Docker, Node.js) e, em seguida, configure manualmente o ambiente, a escalabilidade e as opções de segurança.

2. Aplicações Serverless (Lambda + API Gateway)

  • Acesse o Console do Lambda para criar e implantar funções.
  • Use o Console do API Gateway para criar APIs para suas funções do Lambda.

3. Instâncias EC2

  • Inicie manualmente instâncias EC2 a partir do Console do EC2 e configure-as com o tipo de instância, grupos de segurança e pares de chaves escolhidos.

Conclusão

O AWS CloudFormation fornece uma maneira consistente e repetível de gerenciar infraestrutura para aplicações Elastic Beanstalk, arquiteturas serverless e aplicações baseadas em EC2. Com recursos avançados como Conjuntos de Pilhas, Conjuntos de Alterações e Parâmetros, o CloudFormation pode dimensionar para atender às necessidades de ambientes complexos.

Para qualquer pessoa que gerencia ambientes AWS grandes ou dinâmicos, o CloudFormation é uma ferramenta essencial para garantir consistência, segurança e automação em todas as suas implantações AWS.

Source:
https://dzone.com/articles/automate-aws-infrastructure-deployment