Passer au contenu

Comment puis-je résoudre les erreurs qui s’affichent lorsque je crée ou mets à jour des ressources de base de données RDS dans CloudFormation ?

Lecture de 7 minute(s)
0

Je souhaite résoudre les erreurs qui s’affichent lorsque je crée ou mets à jour une ressource Amazon Relational Database Service (Amazon RDS) dans AWS CloudFormation.

Brève description

Une erreur peut s’afficher lorsque vous créez ou mettez à jour une pile CloudFormation pour une ressource Amazon RDS. Ces ressources peuvent inclure l’instance de base de données, le cluster de bases de données ou le groupe de paramètres de base de données. L’erreur se produit lorsque la ressource Amazon RDS ne prend pas en charge les mises à jour. Elle peut également se produire lorsque vous avez spécifié des propriétés non valides pour la ressource Amazon RDS.

Solution

Erreur : « Cannot upgrade aurora-postgresql (or any RDS version) from 13.## to 14.## (Service: Rds, Status Code: 400) »

Cette erreur peut se produire lorsque vous effectuez une mise à niveau mineure ou majeure du moteur de base de données RDS.
Avant de mettre à niveau la version du moteur, RDS effectue des contrôles préalables afin de vérifier que la mise à niveau est possible. L’erreur se produit lorsqu’un de ces contrôles préalables échoue.

Consultez les liens suivants pour connaître les mises à niveau de version prises en charge par AWS pour votre type d’Amazon RDS :

Erreur : « The current DB instance parameter group is custom. You must explicitly specify a new DB instance parameter group, either default or custom, for the engine version upgrade. »

Cette erreur peut s’afficher lorsque vous utilisez AWS CloudFormation pour effectuer une mise à niveau majeure de la version de l’instance de base de données RDS. Le gestionnaire de ressources renvoie ce message d’erreur lorsque l’une des conditions suivantes est remplie :

Pour résoudre cette erreur, procédez comme suit :

  1. Mettez à jour la définition de la ressource d’instance de base de données dans le modèle de la pile pour utiliser le groupe de paramètres de base de données par défaut pris en charge par la version actuelle du moteur. Mettez à jour la pile avec le modèle modifié.
  2. Mettez à jour la définition de la ressource d’instance de base de données pour utiliser la version du moteur mise à niveau et le groupe de paramètres de base de données par défaut pris en charge par la version.
  3. Mettez à jour la définition de votre ressource d’instance de base de données afin d’utiliser le groupe de paramètres de base de données personnalisé requis avec la version mise à niveau du moteur.

Erreur causée par une dérive dans CloudFormation lors de la mise à niveau manuelle

Cette erreur peut s’afficher lorsqu’une instance de base de données RDS ou une version de cluster est mise à niveau manuellement (c’est-à-dire lorsque vous effectuez une mise à niveau hors bande). Lorsqu’une ressource créée par CloudFormation est modifiée manuellement, CloudFormation ne suit pas les modifications apportées aux ressources. Il en résulte une dérive sur la pile.

Pour vous assurer que la ressource réelle est synchronisée avec la pile CloudFormation, procédez comme suit :

  1. Modifiez le modèle de pile associé à la pile dérivée. Ajoutez un attribut DeletionPolicy avec la valeur Retain à la ressource de cluster pour l’instance ou le cluster de base de données RDS. Mettez ensuite à jour la pile avec le modèle modifié. Cela permet de conserver la ressource réelle pendant que vous supprimez la ressource de la pile.
  2. Supprimez la ressource dérivée du modèle de pile, puis mettez à jour la pile.
  3. Réimportez la ressource dans la pile.
    Remarque : pour éviter toute dérive, vérifiez que le modèle de pile que vous utilisez pour importer la ressource RDS reflète la configuration actuelle de la ressource de base de données RDS.
  4. Effectuez une opération de détection de dérive sur la pile pour vérifier que la dérive est résolue.

Erreur : « Cannot change master user password while doing a major version upgrade. (Service: Rds, Status Code) »

Cette erreur se produit lorsque le mot de passe de la base de données RDS a été modifié.

Remarque : vous ne pouvez pas effectuer une rotation de mot de passe en même temps qu’une mise à niveau majeure de version.

Pour résoudre cette erreur, procédez comme suit :

  1. Effectuez une mise à jour de la pile avec le modèle existant. Cette mise à jour utilise le nouveau mot de passe issu de la rotation ainsi que la version actuelle du moteur. Une fois la mise à jour de la pile terminée, les informations d’identification de la base de données sont réinitialisées avec le nouveau mot de passe.
  2. Effectuez une mise à jour de la pile pour mettre à niveau le moteur vers la version majeure cible.

Erreur : « DB Instance already exists » ou conflit de nommage lors de la mise à jour de EngineVersion avec d’autres propriétés

Lorsque vous modifiez EngineVersion sur une ressource AWS::RDS::DBInstance dont le DBInstanceIdentifier est défini explicitement, une erreur de conflit de nommage peut se produire.
La mise à jour de EngineVersion seule s’effectue sur place. En revanche, si la même mise à jour modifie également une propriété qui nécessite un remplacement, telle que DBSubnetGroupName, KmsKeyId ou DBClusterIdentifier, CloudFormation remplace l’instance. Lors du remplacement, CloudFormation crée la nouvelle instance avant de supprimer l’ancienne, de sorte que l’identifiant défini explicitement provoque un conflit de nommage.

Remarque : lorsque vous spécifiez un DBInstanceIdentifier, vous ne pouvez pas effectuer de mise à jour nécessitant le remplacement, à moins de lui attribuer également un nouveau nom.

Pour résoudre l’erreur, effectuez l’une des actions suivantes :

  • Modifiez uniquement EngineVersion lors d’une première mise à jour, puis appliquez séparément la propriété qui entraîne le remplacement de l’instance.
  • Spécifiez un nouveau DBInstanceIdentifier lors de la même mise à jour pour éviter le conflit de nommage.
  • Supprimez le DBInstanceIdentifier défini explicitement afin que CloudFormation génère un nom unique.

Pour identifier la propriété qui déclenche le remplacement, consultez la valeur Update requires associée à chaque propriété modifiée dans la référence AWS::RDS::DBInstance. Toute propriété portant la mention Replacement entraîne le remplacement de l’instance.

Important : le remplacement supprime l’instance d’origine. Effectuez un instantané avant d’exécuter une mise à jour de la pile qui remplace l’instance.

Informations connexes

describe-engine-default-parameters

AWS OFFICIELA mis à jour il y a un mois