Comment puis-je résoudre l'erreur « Existe déjà » que je reçois lorsque je redéploie mon code CDK après la suppression de la pile issue du déploiement initial ?

Lecture de 4 minute(s)
0

Je souhaite résoudre le message d'erreur « Déjà existant » que je reçois lorsque je redéploie le code de mon AWS Cloud Development Kit (AWS CDK).

Brève description

La plupart des ressources statiques de la bibliothèque AWS CDK Construct acceptent la propriété RemovalPolicy avec RETENIR comme valeur par défaut. Les ressources pour lesquelles la RemovalPolicy n'est pas définie deviennent des ressources orphelines et restent dans le compte une fois la pile supprimée. Cela se produit lorsque la pile passe à l’état DELETE_COMPLETE. Le comportement reste le même lorsque la définition de ressources similaires est supprimée du code lors d'une mise à jour de la pile correspondante. Si les ressources conservées portent un nom personnalisé, l'erreur « Existe déjà » apparaît lorsque vous redéployez le même code.

Pour résoudre cette erreur, effectuez les actions suivantes en fonction de votre cas d'utilisation :

  • Pour les ressources conservées involontairement, supprimez-les manuellement.
  • Pour les ressources conservées intentionnellement, remplacez le nom de la ressource dans le code AWS CDK par une valeur unique.
  • Une autre méthode pour les ressources conservées intentionnellement consiste à supprimer le nom de la ressource du code AWS CDK pour permettre à AWS CDK de générer automatiquement un nouveau nom.
  • Avant de supprimer une pile, vérifiez que la RemovalPolicy est définie sur DÉTRUIRE depuis la ressource.

Résolution

**Remarque :**Les étapes suivantes utilisent un exemple de ressource de compartiment Amazon Simple Storage Service (Amazon S3) représentée par la classe S3.bucket dans AWS CDK. La politique de suppression de cette ressource dans AWS CDK est définie sur RETENIR par défaut. Cette ressource est conservée dans le compte lorsque sa pile respective est supprimée ou lorsque la ressource est supprimée lors d'une mise à jour de la pile.

Exemple :

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 bucketName: ‘DOC-EXAMPLE-BUCKET1’,
 versioned: false,
 encryption: s3.BucketEncryption.S3_MANAGED
 });

Supprimer manuellement la ressource conservée

1.    Connectez-vous à la console de gestion AWS et accédez au service correspondant aux ressources que vous ne souhaitez pas conserver.

2.    Supprimez manuellement les ressources que vous ne souhaitez pas conserver.

**Remarque :**Pour cet exemple, supprimez le compartiment Amazon S3 pour supprimer la ressource s3.bucket.

3.    Redéployez le code AWS CDK :

cdk deploy

Changer le nom de la ressource conservée

1.    Accédez au code AWS CDK de la ressource dont vous souhaitez modifier le nom.

2.    Mettez à jour le nom de la ressource en lui attribuant une valeur unique qui n'entre pas en conflit avec le nom de la ressource conservée.

**Remarque :**Pour cet exemple, mettez à jour le paramètre bucketName pour modifier le nom de la ressource s3.Bucket.

Exemple :

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 bucketName: ‘EXAMPLE-NEW-NAME-S3-BUCKET’,
 versioned: false,
 encryption: s3.BucketEncryption.S3_MANAGED
 });

Supprimez le nom de la ressource pour permettre à AWS CDK de générer automatiquement un nom unique

1.    Supprimez le nom de la ressource d'AWS CDK.

**Remarque :**Dans cet exemple, la propriété bucketName est supprimée pour permettre à AWS CDK de générer automatiquement un nouveau nom.

Exemple :

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 versioned: false,
 encryption: s3.BucketEncryption.S3_MANAGED
 });

2.    Redéployez le code AWS CDK :

cdk deploy

Définissez la politique de suppression sur DÉTRUIRE

1.    Accédez au code AWS CDK des ressources que vous ne souhaitez pas conserver.

2.    Définissez la propriété removalPolicy sur DÉTRUIRE:

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 bucketName: ‘EXAMPLE-S3-BUCKET’,
 removalPolicy: RemovalPolicy.DESTROY
 });

3.    Exécutez cdk synth pour accéder au modèle AWS CloudFormation, puis vérifiez que les paramètres DeletionPolicy et UpdateReplacePolicy sont définis sur Supprimer:

cdk synth
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an