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. Altre istanze database 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 interrotte durante la notte. Il tutorial mostra come uno script può rilevare le istanze database che hanno il tag e quindi interromperle. 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 APIs i tag funzionano con ARNs, che consentono a RDS di funzionare senza problemi tra AWS regioni, AWS account e diversi tipi di risorse che potrebbero 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.

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

    $ 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. Interrompi 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 interrotte. 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.