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 : Utilisation de balises pour spécifier les clusters de bases de données Aurora à arrêter
Supposons que vous créez un certain nombre de clusters de base de données Aurora dans un environnement de développement ou de test. Vous devez conserver tous ces clusters pendant plusieurs jours. Certains clusters exécutent des tests pendant la nuit. D'autres clusters peuvent être arrêtés pendant la nuit et redémarrés le lendemain. L'exemple suivant montre comment affecter une balise aux clusters qu'il convient d'arrêter pendant la nuit. Ensuite, l'exemple montre comment un script peut détecter les clusters qui possèdent cette balise, puis comment arrêter ces clusters. 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 le cluster possède cette propriété définie par l'utilisateur.
Spécifier les clusters de bases de données Aurora à arrêter
-
Déterminez ARN le cluster que vous souhaitez désigner comme arrêtable.
Les commandes et APIs pour le balisage fonctionnent avecARNs. Ils peuvent ainsi fonctionner de manière fluide entre AWS les régions, les AWS comptes et les différents types de ressources dont les noms abrégés peuvent être identiques. Vous pouvez spécifier l'ID de cluster ARN au lieu de l'ID de cluster dans CLI les commandes qui opèrent sur les clusters. Remplacez le nom de votre propre cluster par
dev-test-cluster
. Dans les commandes suivantes qui utilisent ARN des paramètres, remplacez celui ARN de votre propre cluster. ARNCela inclut votre propre identifiant de AWS compte et le nom de la AWS région où se trouve votre cluster.$
aws rds describe-db-clusters --db-cluster-identifierdev-test-cluster
\ --query "*[].{DBClusterArn:DBClusterArn}" --output textarn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
-
Ajoutez la balise
stoppable
à ce cluster.Vous choisissez le nom de cette balise. 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. Étant donné que cet exemple traite la balise comme un attribut présent ou absent, il omet la partie
Value=
du paramètre--tags
.$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
\ --tags Key=stoppable -
Confirmez que la balise est présente dans le cluster.
Ces commandes récupèrent les informations de balise du cluster 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:123456789:cluster:dev-test-cluster
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
--output textTAGLIST stoppable
-
Pour arrêter tous les clusters désignés comme
stoppable
, préparez une liste de tous vos clusters. Passez la liste en revue et vérifiez que chaque cluster est balisé avec l'attribut approprié.Cet exemple Linux utilise des scripts shell pour enregistrer la liste des clusters ARNs dans un fichier temporaire, puis exécuter des CLI commandes pour chaque cluster.
$
aws rds describe-db-clusters --query "*[].[DBClusterArn]" --output text >/tmp/cluster_arns.lst$
for arn in $(cat /tmp/cluster_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep 'TAGLIST\tstoppable')" if [[ ! -z "$match" ]] then echo "Cluster $arn is tagged as stoppable. Stopping it now." # Note that you can specify the full ARN value as the parameter instead of the short ID 'dev-test-cluster'. aws rds stop-db-cluster --db-cluster-identifier $arn fi doneCluster arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster is tagged as stoppable. Stopping it now. { "DBCluster": { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-1e", "us-east-1c", "us-east-1d" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "dev-test-cluster", ...
Vous pouvez exécuter un script comme celui-ci à la fin de chaque journée pour vous assurer que les clusters non essentiels sont arrêtés. 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 certains clusters 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 clusters à vérifier.
La commande suivante crée une liste de vos clusters, mais uniquement ceux au statut available
. Le script peut ignorer les clusters qui sont déjà arrêtés, car ils auront des valeurs de statut différentes telles que stopped
ou stopping
.
$
aws rds describe-db-clusters \ --query '*[].{DBClusterArn:DBClusterArn,Status:Status}|[?Status == `available`]|[].{DBClusterArn:DBClusterArn}' \ --output textarn:aws:rds:us-east-1:123456789:cluster:cluster-2447 arn:aws:rds:us-east-1:123456789:cluster:cluster-3395 arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster arn:aws:rds:us-east-1:123456789:cluster:pg2-cluster
Astuce
Vous pouvez utiliser l'attribution de balises et la recherche de clusters qui ont ces balises pour réduire les coûts par d'autres moyens. Par exemple, prenez ce scénario avec des clusters de base de données Aurora utilisés pour le développement et les tests. Ici, vous pouvez désigner certains clusters à supprimer à la fin de chaque journée, ou pour lesquels il faut uniquement supprimer leurs instances de base de données du lecteur. Vous pouvez également désigner celles pour lesquelles leurs instances de base de données sont remplacées par de petites classes d'instances de base de données pendant les périodes de faible utilisation prévues.