top of page
Foto do escritorRan Isenberg

Implantar na AWS com GitHub Actions e AWS CDK



Este blog explica como você pode usar o AWS CDK para implantar na sua conta da AWS usando o pipeline de CI/CD do GitHub Actions.

Sinta-se à vontade para usar os trechos de código como quiser.

Clique aqui e aqui para ver um modelo de serviço GitHub AWS Serverless totalmente funcional que usa o mesmo snippet.


Atualização janeiro de 2024

Este arquivo CI/CD completo foi revisado e atualizado com versões mais recentes e vários ambientes: implantações em contas de desenvolvimento, preparação e produção:


 

TL;DR Vídeo

Esta postagem do blog está disponível como um vídeo.



 

Revisando as etapas do trabalho


Vamos rever as etapas do pipeline de CI/CD:

  1. Configuração do ambiente

  2. Configuração da conta AWS

  3. Executar linters e testes unitários

  4. Implantar pilha

  5. Executar testes E2E

  6. Destruir pilha (somente para pilha de desenvolvimento)


Configuração do ambiente


Configuração do Python e do Node


Este snippet configurará o Python 3.9 e o Node v16 no executor de CI/CD.


Configurar AWS CDK

É recomendável usar a versão mais recente do pip e do AWS CDK.

Na linha 4, você deve instalar suas dependências do Python com pip, pipenv ou poetry, dependendo da sua arma preferida para gerenciar dependências do Python.

Essas dependências incluem dependências de desenvolvimento (pytest, linters, etc.) e dependências de tempo de execução de serviço.



Configurar segredos da AWS


Você deve configurar os segredos do repositório do GitHub para que este snippet funcione.

Em Configurações/Segredos/Ações, adicione 'AWS_SECRET_KEY' e 'AWS_ACCESS_KEY'.

Esses segredos são usados em uma função do IAM predefinida que você criou para seu processo de CI/CD.


Este é um exemplo simples; no entanto, por motivos de segurança, é melhor usar uma solução SSO (fora do escopo deste guia).



A configuração do yaml:

Na linha 7, escolha a região da AWS de sua preferência.



Linters e testes unitários

Logo antes da implantação, é recomendável executar linters como:

  1. pilão/floco8

  2. verificações de pré-confirmação

  3. yapf/preto

  4. Verificações de complexidade de código (radônio/xenon)

Veja o exemplo e a configuração do linters no meu modelo do GitHub aqui e o makefile que executa os comandos do linters aqui .

Quando os linters terminarem, execute testes de unidade como uma primeira porta lógica de serviço.


Tempo de Implantação


Na linha 3, você deve definir o caminho correto para o arquivo 'app.py' do seu CDK.

Geralmente coloco todos os arquivos do projeto CDK em uma pasta 'cdk' em vez do caminho raiz do projeto.


Testes E2E

Após a conclusão da implantação, você deve executar seus testes E2E e certificar-se de que seu serviço esteja sendo executado corretamente na AWS. Você pode usar pytest para criar solicitações de API REST ou outros gatilhos para testar seu serviço implantado.


Destruir pilha

Esta etapa é relevante apenas para pilhas locais ou solicitações de pull nas quais você deseja destruir a pilha no final.

Assim como na fase de implantação, certifique-se de definir o caminho correto para o arquivo 'app.py' do CDK.


O fluxo completo



bottom of page