Didacticiel : Spécification des instances de bases de données à arrêter à l’aide de balises - Amazon Relational Database Service

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.

Didacticiel : Spécification des instances de bases 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 s’exécutent pendant la nuit, alors que d’autres peuvent être arrêtées pendant la nuit et redémarrées le lendemain.

Le didacticiel suivant montre comment affecter une balise aux instances de base de données qu’il convient d’arrêter pendant la nuit. Le didacticiel montre comment un script peut détecter quelles instances de base de données possèdent la balise, puis comment arrêter les instances de base de données balisé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 les API de balisage fonctionnent avec les ARN, ce qui permet à RDS de fonctionner en toute transparence entre les régions AWS, les comptes AWS et différents types de ressources qui pourraient avoir des noms courts identiques. Vous pouvez spécifier l'ARN au lieu de l'ID de l'instance de base de données dans les commandes CLI qui fonctionnent sur des instances de base de données.

Spécifier les instances de bases de données à arrêter
  1. Déterminez l'ARN d'une instance de base de données que vous voulez désigner comme pouvant être arrêtée.

    Dans l’exemple suivant, remplacez le nom de vos propres instances de base de donnée par dev-test-db-instance. Dans les commandes suivantes qui utilisent des paramètres d'ARN, remplacez l'ARN de votre propre instance de base de données. L'ARN inclut l'ID de votre propre compte AWS et le nom de la région AWS où se trouve votre instance de base de données.

    $ 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. 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-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \ --tags Key=stoppable
  3. Confirmez que la balise est présente dans l'instance de base de données.

    Les commandes suivantes récupèrent les informations sur la balise pour l’instance de base de données au format JSON et en texte brut séparé par des tabulations.

    $ 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. 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 passe la liste en revue et vérifie que chaque instance de base de données est balisé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 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", ...

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 optimiser 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 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
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’instance de base de données pendant les périodes de faible utilisation prévues.