Tutorial: Uso de tags para especificar quais clusters de bancos de dados Aurora interromper
Suponha que você esteja criando vários clusters de banco de dados Aurora em um ambiente de desenvolvimento ou teste. Você precisa manter todos esses clusters por vários dias. Alguns dos clusters realizam testes durante a noite. Outros clusters podem ser interrompidos durante a noite e recomeçar no dia seguinte. O exemplo a seguir mostra como atribuir uma tag aos clusters que são adequados para parar durante a noite. Em seguida, o exemplo mostra como um script pode detectar quais clusters têm essa tag e, em seguida, parar esses clusters. Neste exemplo, a parte de valor do par chave-valor não importa. A presença da tag stoppable
significa que o cluster tem essa propriedade definida pelo usuário.
Para especificar quais clusters de bancos de dados Aurora devem ser interrompidas
-
Primeiro, determine o ARN de um cluster que você queira designar como passível de ser interrompida.
Os comandos e as APIs para marcação funcionam com ARNs. Dessa forma, eles podem funcionar perfeitamente em regiões da AWS, contas da AWS e diferentes tipos de recursos que podem ter nomes curtos idênticos. Você pode especificar o ARN em vez do ID do cluster nos comandos CLI que se operam em clusters. Substitua o nome do seu próprio cluster por
dev-test-cluster
. Nos comandos subsequentes que usam parâmetros ARN, substitua o ARN do seu próprio cluster. O ARN inclui seu próprio ID de conta da AWS e o nome da região da AWS onde seu cluster está localizado.$
aws rds describe-db-clusters --db-cluster-identifierdev-test-cluster
\ --query "*[].{DBClusterArn:DBClusterArn}" --output textarn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
-
Adicione a tag
stoppable
a esse cluster.Selecione o nome dessa tag. Essa abordagem significa que você pode evitar a criação de uma convenção de nomenclatura que codifique todas as informações relevantes nos nomes. Nessa convenção, você pode codificar informações no nome da instância de banco de dados ou nos nomes de outros recursos. Como esse exemplo trata a tag como um atributo presente ou ausente, ele omite a parte
Value=
do parâmetro--tags
.$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
\ --tags Key=stoppable -
Confirme se a etiqueta está presente no cluster.
Esses comandos recuperam as informações de tag para o cluster no formato JSON e em texto separado por tabulação simples.
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
--output textTAGLIST stoppable
-
Para interromper todos os clusters designados como
stoppable
, prepare uma lista de todos os clusters. Percorra a lista e verifique se cada cluster está marcado com o atributo relevante.Este exemplo do Linux usa scripts de shell para salvar a lista de ARNs de cluster em um arquivo temporário e, em seguida, executar comandos CLI para cada cluster.
$
aws rds describe-db-clusters --query "*[].[DBClusterArn]" --output text >/tmp/cluster_arns.lst$
for arn in $(cat /tmp/cluster_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep 'TAGLIST\tstoppable')" if [[ ! -z "$match" ]] then echo "Cluster $arn is tagged as stoppable. Stopping it now." # Note that you can specify the full ARN value as the parameter instead of the short ID 'dev-test-cluster'. aws rds stop-db-cluster --db-cluster-identifier $arn fi doneCluster arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster is tagged as stoppable. Stopping it now. { "DBCluster": { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-1e", "us-east-1c", "us-east-1d" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "dev-test-cluster", ...
Você pode executar um script como este no final de cada dia para garantir que os clusters não essenciais sejam interrompidas. Você também pode agendar um trabalho com um utilitário, como cron
, para realizar essa verificação todas as noites. Por exemplo, você pode fazer isso caso alguns clusters sejam deixados em execução por engano. Nesse caso, você pode ajustar o comando que prepara a lista de clusters para conferir.
O comando a seguir produz uma lista de seus clusters, mas apenas os que estão no estado available
. O script pode ignorar clusters que já estão parados, porque eles terão valores de status diferentes, como stopped
ou stopping
.
$
aws rds describe-db-clusters \ --query '*[].{DBClusterArn:DBClusterArn,Status:Status}|[?Status == `available`]|[].{DBClusterArn:DBClusterArn}' \ --output textarn:aws:rds:us-east-1:123456789:cluster:cluster-2447 arn:aws:rds:us-east-1:123456789:cluster:cluster-3395 arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster arn:aws:rds:us-east-1:123456789:cluster:pg2-cluster
dica
Você pode usar a atribuição de tags e encontrar clusters com elas a fim de reduzir custos de outras maneiras. Por exemplo, considere o cenário com clusters de banco de dados do Aurora utilizados para desenvolvimento e testes. Aqui, você pode designar que alguns clusters sejam excluídos no final de cada dia ou que apenas as instâncias de banco de dados do leitor sejam excluídas. Ou você pode designar que alguns tenham as instâncias de banco de dados alteradas para classes de instância de banco de dados pequenas durante os períodos de baixa utilização esperada.