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
-
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-identifierdev-test-db-instance\ --query "*[].{DBInstance:DBInstanceArn}" --output textarn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance -
Quindi, aggiungi il tag
stoppablea 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-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance\ --tags Key=stoppable -
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-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance--output textTAGLIST stoppable -
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-instanceper 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 doneDB 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 textarn: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.