Funcionalidade aws - BrunodosSantosVaz/big-bang GitHub Wiki
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.
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.
Pessoa responsável pelo projeto, IA com posse confirmada e automações da esteira de CI/CD autorizadas.
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.
- A esteira autentica com a AWS via GitHub Actions OIDC (
aws-actions/configure-aws-credentials) utilizando a role temporáriaAWS_ROLE_ARNe a regiãoAWS_REGION. - Publicação: sincroniza o diretório ou pacote estático no bucket
s3://${AWS_S3_BUCKET}(aws s3 sync --delete). - Invalidação: dispara
aws cloudfront create-invalidationpara os caminhos da distribuição${AWS_CLOUDFRONT_DISTRIBUTION_ID}. - Saúde: consulta a URL configurada (
deploy.url_<ambiente>+deploy.caminho_saude) até receber resposta HTTP 200. - 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).
- 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.
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.
Separação estrita por ambiente e permissões mínimas:
- OIDC:
sts:AssumeRoleWithWebIdentitycom roles distintas por ambiente, restritas viarepo:<OWNER>/<REPO>:environment:<AMBIENTE>(stagingeproducao). - S3:
s3:ListBucketno bucket es3:PutObject,s3:DeleteObjectnos objetos (necessários paraaws s3 sync --delete). - CloudFront:
cloudfront:CreateInvalidationrestrito à distribuição correspondente. - Não concede acesso de administração, permissões não utilizadas (
s3:GetObject,cloudfront:GetInvalidation) nem ações curinga (*).
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.
- 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