Pular para o conteúdo principal

Variáveis de Ambiente com Serverless e GitHub Secrets

Por Eduardo Ferraz

Atualizado em: 15/03/2024

🤔 Por que fazer?

Para que possamos manter a segurança de nossos projetos guardando chaves secretas e outros dados sensíveis da forma adequada, não deixando estes públicos no GitHub e evitando 'hard-coding'.

💡 O que precisamos?

  • Conhecimento em programação backend
  • Repositório do GitHub separado para backend (Repositórios de exemplo ao final do Manual)

⚙️ Como fazer?

Arquivo .env (Local)

Para utilizar as variáveis de ambiente de forma local, basta criar um arquivo .env em seu repositório local. Esse arquivo não deve ser commitado para o GitHub e ele já está listado no arquivo .gitignore em nosso Template de React Next.

O formato do arquivo .env é bem simples:

VARIAVEL_DE_AMBIENTE=valorQualquer
OUTRA_VARIAVEL=1234
MAIS_UMA_VARIAVEL=qualquerCoisa

GitHub Secrets (Remoto)

No seu repositório, acesse Settings > Secrets and Variables > Actions

Caso o serverless já esteja configurado como esperado, haverá 2 variáveis de ambiente já definidas em Repository Secrets:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

Não vamos mexer nessas. Só precisamos adicionar todas as outras variáveis de ambiente utilizadas em nosso código (as mesmas que utilizamos no .env localmente).

Agora que definimos as variáveis de ambiente Local ou RemotO, podemos utilizá-las em nosso repositório! Em especial nesse manual, vamos utilizá-las para passar à AWS essas variáveis utilizadas pelo Lambda, tudo por meio do framework Serverless

Arquivo pipeline-serverless.yml

No seu repositório, cria a estrutura de pastas (se não houver) da seguinte forma:

.github > workflows > pipeline-serverless.yml

No arquivo pipeline-serverless.yml , configure as variáveis de ambiente que serão extraídas dos Secrets, como no exemplo do Sistema Redes:

pipeline_redes

Arquivo serverless.ts

No seu repositório, configure o arquivo serverless.ts como no exemplo do Sistema Redes:

serverless_redes_1

serverless_redes_2

Lambda

Uma forma de avaliar se as variáves de ambiente foram acessadas pela AWS é verificar uma função do AWS Lambda dentre as várias criadas para o seu Sistema e conferir se as variáveis de ambiente foram acessadas após o deploy (elas não devem ser undefined):

lambda_redes

🤝 Dicas úteis:

Caso você precise de referências de projetos que utilizem o que foi explicado no presente manual, faça estudo dos repositórios Vidrocar Backend e Sistema Redes Backend

Passos semelhantes foram utilizados em outro contexto para fazer o deploy frontend na vercel do cliente, como descrito em nosso Outro Manual