Criar um bucket versionado
O caso mais comum de provisionamento, do módulo à primeira escrita, com versionamento e ciclo de vida já decididos.
Quase todo pedido de armazenamento é o mesmo pedido: um bucket privado, com versionamento, criptografado, com expiração de versão antiga. O módulo já decide tudo isso: o que a composição precisa dizer é o nome e para que serve.
Antes de começar
Sessão em dev assumida e o repositório de infraestrutura da equipe clonado.
Ver Preparar a máquina local.
Os passos
Declarar o módulo
Três variáveis, e a versão fixada. Módulo sem versão fixada muda debaixo de você no dia em que o módulo publicar.
module "relatorios" {source = "panlabs/bucket/aws"version = "3.1.0"nome = "relatorios"proposito = "saída do job semanal de relatório"retencao = 90}Ver o plano
plané livre nos três ambientes. Leia a contagem antes de qualquer coisa: um bucket novo cria entre seis e oito recursos, e um número muito diferente disso significa que a composição está pegando mais do que você pediu.terraform plan -out plano.binAplicar
Em
dev, direto. Emstagingeprod, pela esteira: oapplylocal é recusado pelo papel.terraform apply plano.bin
Verificação
O bucket existe, está privado, e o versionamento está ligado. Os três em um comando:
panlabs infra conferir bucket relatorios
# nome relatorios-dev
# acesso privado (bloqueio de acesso público: 4/4)
# versionamento habilitado
# criptografia kms · chave gerenciada pelo módulo
# ciclo de vida versão antiga expira em 90 dias
bloqueio de acesso público: 4/4 é a linha que vale conferir. As quatro
configurações são independentes, e três de quatro é a forma mais comum de um
bucket "privado" não ser.
Variações
Chave própria. Passe chave_arn e o módulo para de criar a chave; o output
passa a dizer gerenciada_por = "equipe", e apagar o bucket deixa de apagar a
chave.
Sem expiração. retencao = 0 desliga a regra de ciclo de vida. Precisa de
justificativa no pull request, porque bucket versionado sem expiração cresce
para sempre e o custo aparece três trimestres depois.
nome recebe o sufixo do ambiente automaticamente. Escrever relatorios-dev
produz relatorios-dev-dev, e o erro só aparece depois do apply, porque nome
de bucket é imutável.