Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriel : Spécifiez les instances de base de données à arrêter à l'aide de balises
Ce didacticiel part du principe que vous disposez de plusieurs instances de base de données dans un environnement de développement ou de test. Vous devez conserver ces instances de base de données pendant plusieurs jours. Certaines instances de base de données exécutent des tests pendant la nuit, tandis que d'autres peuvent être arrêtées pendant la nuit et redémarrées le lendemain.
Le didacticiel suivant montre comment attribuer une balise aux instances de base de données susceptibles de s'arrêter du jour au lendemain. Le didacticiel montre comment un script peut détecter quelles instances de base de données possèdent la balise, puis arrêter les instances de base de données étiquetées. Dans cet exemple, la partie valeur de la paire clé-valeur n'a pas d'importance. La présence de la balise stoppable
signifie que l'instance de base de données possède cette propriété définie par l'utilisateur.
Dans le didacticiel suivant, les commandes et APIs le balisage fonctionnent avecARNs, ce qui permet de RDS travailler de manière fluide entre AWS les régions, les AWS comptes et les différents types de ressources susceptibles de porter des noms abrégés identiques. Vous pouvez spécifier l'ID d'instance de base de données ARN au lieu de l'ID dans CLI les commandes qui fonctionnent sur les instances de base de données.
Spécifier les instances de bases de données à arrêter
-
Déterminez l'instance ARN de base de données que vous souhaitez désigner comme arrêtable.
Dans l'exemple suivant, remplacez le nom de vos propres instances de base de données par
dev-test-db-instance
. Dans les commandes suivantes qui utilisent ARN des paramètres, remplacez votre propre instance ARN de base de données. ARNCela inclut votre propre identifiant de AWS compte et le nom de la AWS région dans laquelle se trouve votre instance de base de données.$
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
-
Ajoutez la balise
stoppable
à cette instance de base de données.Vous choisissez le nom de cette balise. Étant donné que cet exemple traite la balise comme un attribut présent ou absent, il omet la partie
Value=
du paramètre--tags
. Cette approche signifie que vous pouvez éviter de concevoir une convention de dénomination qui encode toutes les informations pertinentes dans les noms. Dans une telle convention, vous pouvez encoder des informations dans le nom de l'instance de base de données ou les noms d'autres ressources.$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
\ --tags Key=stoppable -
Confirmez que la balise est présente dans l'instance de base de données.
Les commandes suivantes récupèrent les informations de balise pour l'instance de base de données JSON au format et en texte brut séparé par des tabulations.
$
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
-
Arrêtez toutes les instances de base de données désignées comme
stoppable
.L'exemple suivant crée un fichier texte répertoriant toutes vos instances de base de données. La commande shell parcourt la liste et vérifie si chaque instance de base de données est étiquetée avec l'attribut approprié et exécute la commande
aws rds stop-db-instance
pour chaque instance de base de données.$
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", ...
Vous pouvez exécuter un script comme le précédent à la fin de chaque journée pour vous assurer que les instances de base de données non essentielles sont arrêtées. Vous pouvez également planifier une tâche à l'aide d'un utilitaire tel que cron
pour effectuer une telle vérification chaque nuit. Par exemple, vous pouvez le faire si certaines instances de base de données restaient en cours d'exécution par erreur. Dans ce cas, vous pouvez affiner la commande qui prépare la liste des instances de base de données à vérifier.
La commande suivante crée une liste de vos instances de base de données, mais uniquement celles au statut available
. Le script peut ignorer les instances de base de données qui sont déjà arrêtées, car elles auront des valeurs de statut différentes telles que stopped
ou 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
Astuce
Vous pouvez utiliser l'attribution de balises et la recherche d'instances de base de données grâce à ces balises pour réduire les coûts par d'autres moyens. Par exemple, prenez ce scénario avec des instances de base de données utilisées pour le développement et les tests. Dans ce cas, vous pouvez désigner certaines instances de base de données à supprimer à la fin de chaque journée. Vous pouvez également les désigner pour que leurs instances de base de données soient remplacées par de petites classes d'instances de base de données pendant les périodes de faible utilisation prévues.