Tutorial: specificare le istanze database da interrompere utilizzando i tag - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: specificare le istanze database da interrompere utilizzando i tag

In questo tutorial si presuppone di avere più istanze database in un ambiente di sviluppo o di test. Sarà necessario mantenere queste istanze database per diversi giorni. Alcune istanze database eseguono i test di notte, mentre altre possono essere arrestate durante la notte e riavviate il giorno successivo.

Il tutorial seguente illustra come assegnare un tag alle istanze database che possono essere arrestate durante la notte. Il tutorial mostra come uno script può rilevare le istanze database che hanno il tag e quindi arrestarle. In questo esempio, la parte del valore della coppia chiave-valore non ha importanza. La presenza del tag stoppable indica che l'istanza database ha questa proprietà definita dall'utente.

Nel seguente tutorial, i comandi e le API per l’assegnazione dei tag utilizzano gli ARN, che consentono a RDS di funzionare perfettamente in Regioni AWS, account AWS e con tipi di risorse differenti che possono avere nomi brevi identici. Puoi specificare l'ARN anziché l'ID istanza database nei comandi della CLI che operano su istanze database.

Per specificare le istanze database da interrompere
  1. Innanzitutto, determina l'ARN di un'istanza database che desideri indicare come arrestabile.

    Nel seguente esempio, sostituisci il nome delle istanze database per dev-test-db-instance. Nei comandi successivi che utilizzano i parametri ARN, sostituisci l'ARN della tua istanza database. L'ARN include il tuo ID account AWS e il nome della regione AWS in cui si trova l'istanza database.

    $ aws rds describe-db-instances --db-instance-identifier dev-test-db-instance \ --query "*[].{DBInstance:DBInstanceArn}" --output text arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
  2. Quindi, aggiungi il tag stoppable a questa istanza database.

    Scegli il nome per il tag. Poiché questo esempio considera il tag come un attributo presente o assente, viene omessa la parte Value= del parametro --tags. Con questo approccio puoi evitare di definire una convenzione di denominazione che codifichi tutte le informazioni rilevanti nei nomi. Con la convenzione puoi codificare le informazioni nel nome dell'istanza database o nei nomi di altre risorse.

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \ --tags Key=stoppable
  3. Verifica che il tag sia presente nell'istanza database.

    I comandi seguenti recuperano le informazioni sul tag per l’istanza database in formato JSON e in testo semplice separato da tabulazioni.

    $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance { "TagList": [ { "Key": "stoppable", "Value": "" } ] } aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance --output text TAGLIST stoppable
  4. Arresta tutte le istanze database designate come stoppable.

    L’esempio seguente crea un file di testo che elenca tutte le istanze database. Il comando shell scorre l’elenco, individua ogni istanza database contrassegnata con l’attributo pertinente ed esegue il comando aws rds stop-db-instance per ogni istanza database rilevata.

    $ aws rds describe-db-instances --query "*[].[DBInstanceArn]" --output text >/tmp/db_instance_arns.lst $ for arn in $(cat /tmp/db_instance_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep stoppable)" if [[ ! -z "$match" ]] then echo "DB instance $arn is tagged as stoppable. Stopping it now." # Note that you need to get the DB instance identifier from the ARN. dbid=$(echo $arn | sed -e 's/.*://') aws rds stop-db-instance --db-instance-identifier $dbid fi done DB instance arn:arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance is tagged as stoppable. Stopping it now. { "DBInstance": { "DBInstanceIdentifier": "dev-test-db-instance", "DBInstanceClass": "db.t3.medium", ...

Puoi eseguire uno script come quello precedente alla fine di ogni giorno per assicurarti che le istanze database non essenziali vengano arrestate. Puoi inoltre pianificare un processo utilizzando un'utilità come cron per eseguire tale controllo ogni notte. Ad esempio, puoi eseguire questa operazione nel caso in cui alcune istanze database venissero lasciate in esecuzione per errore. Puoi quindi ottimizzare il comando che prepara l'elenco di istanze database da controllare.

Il comando seguente produce un elenco delle istanze database nello stato available. Lo script può ignorare le istanze database già arrestate, poiché avranno valori di stato diversi, ad esempio stopped o stopping.

$ aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output text arn:aws:rds:us-east-1:123456789102:db:db-instance-2447 arn:aws:rds:us-east-1:123456789102:db:db-instance-3395 arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance arn:aws:rds:us-east-1:123456789102:db:pg2-db-instance
Suggerimento

Puoi utilizzare l'assegnazione di tag e la ricerca di istanze database con i tag per ridurre i costi in altri modi. Supponi, ad esempio, questo scenario con le istanze database utilizzate per lo sviluppo e il test. In questo caso, potresti designare alcune istanze database da eliminare alla fine di ogni giornata. In alternativa, potresti designarle per modificare le istanze database in piccole classi di istanza database durante i periodi previsti di basso utilizzo.