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 quali istanze DB interrompere utilizzando i tag
Questo tutorial presuppone che tu abbia diverse istanze DB in un ambiente di sviluppo o di test. È necessario conservare queste istanze DB per diversi giorni. Alcune istanze DB eseguono i test durante la notte, mentre altre possono essere interrotte durante la notte e riavviate il giorno successivo.
Il seguente tutorial mostra come assegnare un tag alle istanze DB adatte a interrompersi durante la notte. Il tutorial mostra come uno script può rilevare quali istanze DB hanno il tag e quindi interrompere le istanze DB con tag. 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, funzionano i comandi e APIs i tagARNs, che consentono di RDS lavorare senza problemi tra AWS regioni, AWS account e diversi tipi di risorse che potrebbero avere nomi brevi identici. È possibile specificare l'ID dell'istanza DB ARN anziché l'ID dell'istanza DB nei CLI comandi che operano sulle istanze DB.
Per specificare le istanze database da interrompere
-
Determina ARN l'istanza DB che desideri designare come arrestabile.
Nell'esempio seguente, sostituite il nome delle vostre istanze DB con
dev-test-db-instance
. Nei comandi successivi che utilizzano ARN parametri, sostituisci ARN la tua istanza DB. ARNInclude 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-identifierdev-test-db-instance
\ --query "*[].{DBInstance:DBInstanceArn}" --output textarn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
-
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-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 sui tag per l'istanza DB in JSON formato e 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 DB designate come.
stoppable
L'esempio seguente crea un file di testo che elenca tutte le istanze DB. Il comando shell scorre l'elenco e controlla se ogni istanza DB è etichettata con l'attributo pertinente ed esegue il comando
aws rds stop-db-instance
per ogni istanza DB.$
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 giornata per assicurarti che le istanze DB 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 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.