Funcionalidade aws - BrunodosSantosVaz/big-bang GitHub Wiki

Alvo AWS S3 + CloudFront (Beta)

Funcionalidade BB-F-059 · requisito RF-BB-059 · versão documentada 3.0.1.

Warning

ESTÁGIO BETA / NÃO TESTADO EM CONTA AWS REAL Este adaptador foi implementado e coberto por testes de unidade estruturais, mas não foi testado em uma conta AWS real. Relate testes, sucessos e melhorias na issue de validação: #316 — AWS (beta): relatos de teste e melhorias do alvo S3 + CloudFront. NUNCA compartilhe chaves, segredos ou tokens reais em relatos.

Finalidade

Entregar sistemas estáticos no Amazon S3 com distribuição e invalidação de cache no Amazon CloudFront via autenticação OIDC (role-to-assume), sem chaves fixas.

Atores

Pessoa responsável pelo projeto, IA com posse confirmada e automações da esteira de CI/CD autorizadas.

Pré-condições

Configuração de entrega com perfil = "deploy" e alvo = "aws". Variáveis AWS_REGION, AWS_S3_BUCKET, AWS_CLOUDFRONT_DISTRIBUTION_ID e segredo AWS_ROLE_ARN configurados no GitHub. Role AWS provisionada com OIDC para o repositório GitHub e política de permissões mínimas anexada.

Fluxo principal

  1. A esteira autentica com a AWS via GitHub Actions OIDC (aws-actions/configure-aws-credentials) utilizando a role temporária AWS_ROLE_ARN e a região AWS_REGION.
  2. Publicação: sincroniza o diretório ou pacote estático no bucket s3://${AWS_S3_BUCKET} (aws s3 sync --delete).
  3. Invalidação: dispara aws cloudfront create-invalidation para os caminhos da distribuição ${AWS_CLOUDFRONT_DISTRIBUTION_ID}.
  4. Saúde: consulta a URL configurada (deploy.url_<ambiente> + deploy.caminho_saude) até receber resposta HTTP 200.
  5. Rollback: recupera os arquivos estáticos da Release da versão indicada e reexecuta a sincronização e a invalidação no CloudFront (sem migração de banco).

Validações

  • Operação rejeita nomes de variáveis e segredos reservados.
  • Proíbe chaves estáticas de acesso (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY).
  • Emite aviso explícito de estágio Beta e link para a issue #316 em todas as operações e na geração do pipeline.

Alternativas e erros

Variáveis obrigatórias ausentes (AWS_REGION, AWS_S3_BUCKET, AWS_CLOUDFRONT_DISTRIBUTION_ID), falha de autenticação OIDC ou erro de API da AWS interrompem a execução com código diferente de zero. O adaptador não provisiona recursos nem cria infraestrutura de modo implícito.

Permissões

Separação estrita por ambiente e permissões mínimas:

  • OIDC: sts:AssumeRoleWithWebIdentity com roles distintas por ambiente, restritas via repo:<OWNER>/<REPO>:environment:<AMBIENTE> (staging e producao).
  • S3: s3:ListBucket no bucket e s3:PutObject, s3:DeleteObject nos objetos (necessários para aws s3 sync --delete).
  • CloudFront: cloudfront:CreateInvalidation restrito à distribuição correspondente.
  • Não concede acesso de administração, permissões não utilizadas (s3:GetObject, cloudfront:GetInvalidation) nem ações curinga (*).

Resultados

Resultado esperado: Entregar sites estáticos no AWS S3 e CloudFront via autenticação OIDC e permissões mínimas em estágio Beta. O retorno e os arquivos afetados são conferidos pelos cenários rastreados abaixo; falha impede considerar a operação concluída.

Referência da implementação

  • Script do alvo: .bigbang/esteira/perfis/deploy/alvos/aws/scripts/alvo.sh
  • Contrato: .bigbang/esteira/perfis/deploy/alvos/aws/alvo.toml
  • Modelo de política IAM: .bigbang/esteira/perfis/deploy/alvos/aws/modelos/iam-policy.json
  • Modelo de confiança OIDC: .bigbang/esteira/perfis/deploy/alvos/aws/modelos/trust-policy.json
⚠️ **GitHub.com Fallback** ⚠️