Comment résoudre l'erreur « Échec interne » dans AWS CloudFormation ?

Dernière mise à jour : 23/06/2020

Je souhaite résoudre l'erreur « Échec interne » rencontrée dans AWS CloudFormation.

Brève description

Si vous créez ou mettez à jour votre pile AWS CloudFormation, vous pouvez rencontrer l'erreur « Échec interne » en cas d'échec d'une opération sur une ressource ou du déploiement de votre pile.

Une opération sur une ressource peut échouer dans les cas suivants :

  • Vos ressources ou propriétés sont définies sur des valeurs incorrectes. Pour résoudre ce problème, suivez les étapes de la section Déployer une pile de test pour rechercher les valeurs incorrectes de vos ressources ou propriétés.
  • Un flux de travail interne a échoué. Pour résoudre ce problème à l'aide d'AWS CloudTrail, suivez les étapes de la section Rechercher les opérations d'API ayant échoué dans vos journaux d'événements CloudTrail.

Enfin, le déploiement de votre pile peut échouer si vous transmettez des valeurs incorrectes à la section Outputs (Sorties) de votre modèle AWS CloudFormation. Pour résoudre cette erreur, suivez les étapes de la section Vérifier les valeurs de la section Outputs (Sorties) de votre modèle AWS CloudFormation.

Solution

Déployer une pile de test pour rechercher les valeurs incorrectes de vos ressources ou propriétés

Pour rechercher les valeurs incorrectes de vos propriétés ou attributs de ressource, déployez une pile de test à l'aide d'un modèle AWS CloudFormation incluant uniquement la ressource ayant échoué.

Si votre pile de test se déploie correctement, suivez les étapes de la section Rechercher les opérations d'API ayant échoué dans vos journaux d'événements CloudTrail.

Si le déploiement de votre pile de test échoue, continuez à éliminer les propriétés et attributs non requis jusqu'à ce que vous trouviez les valeurs incorrectes.

Dans l'exemple de scénario suivant, vous recevez l'erreur « Échec interne » lorsqu'AWS CloudFormation tente de créer une ressource AWS::Config::ConformancePack avec AWS Config. Une erreur est renvoyée, car la propriété DeliveryS3Bucket utilise une syntaxe incorrecte. La propriété DeliveryS3Bucket accepte uniquement un nom de compartiment comme valeur (par exemple, bucketname). Un chemin d'accès qui inclut le nom du compartiment n'est pas une valeur acceptable (par exemple, s3://bucketname).

AWSTemplateFormatVersion: 2010-09-09
Resources:
  CloudFormationCanaryPack:
    Type: AWS::Config::ConformancePack
    Properties:
      ConformancePackName: ConformancePackName
      DeliveryS3Bucket: s3://bucketname            # Incorrect value for DeliveryS3Bucket
      TemplateS3Uri: s3://bucketname/prefix

Rechercher les opérations d'API ayant échoué dans vos journaux d'événements CloudTrail

1.    Ouvrez la console CloudTrail.

2.    Dans le volet de navigation, sélectionnez Historique des événements.

3.    Pour Période, entrez un intervalle permettant d'isoler l'appel d'API ayant échoué, puis choisissez Appliquer.

Astuce : pour l'heure de Début, entrez l'heure à laquelle la ressource est arrivée à l'état CREATE_IN_PROGRESS ou UPDATE_IN_PROGRESS dans votre pile AWS CloudFormation. Pour l'heure de Fin, entrez l'heure à laquelle l'appel d'API a échoué.

4.    Pour identifier la cause racine de l'échec, consultez le message d'erreur correspondant à l'événement renvoyé.

Remarque : certains échecs d'opérations d'API nécessitent que vous mettiez à jour votre modèle AWS CloudFormation d'origine, puis que vous exécutiez un test de déploiement pour confirmer que l'erreur est résolue.

Vérifiez les valeurs de la section Outputs (Sorties) de votre modèle AWS CloudFormation

Dans votre modèle AWS CloudFormation, vérifiez que les valeurs de la section Outputs (Sorties) ne contiennent pas d'erreurs de syntaxe. Par exemple, supprimez les espaces de fin.

Si vous récupérez des attributs de ressource avec des références dynamiques, vous devez confirmer que les attributs sont disponibles pendant le déploiement de la pile. Pour simuler cela en dehors d'AWS CloudFormation, procédez comme suit :

1.    Effectuez un appel d'API Create* ou Update* vers le type de ressource avec l'attribut ayant échoué (à créer ou modifier).

2.    Effectuez un appel d'API Describe* pour récupérer les attributs actuels de la ressource pendant le processus de création ou de mise à jour de la pile.

L'exemple de scénario suivant illustre une erreur interne renvoyée par une pile lorsque l'attribut ReplicationInstancePrivateIpAddresses de la ressource AWS::DMS::ReplicationInstance est transmis à Outputs (Sorties).

Dans l'exemple suivant, l'attribut IP privé de l'instance est disponible uniquement une fois que la ressource ReplicationInstance est passée à l'état disponible. Si la ressource ReplicationInstance n'est pas à l'état disponible au moment où la pile exécute Outputs (Sorties), AWS CloudFormation ne peut pas récupérer l'attribut IP privé. Ensuite, le déploiement échoue.

AWSTemplateFormatVersion: 2010-09-09
Resources:
  BasicReplicationInstance:
    Type: AWS::DMS::ReplicationInstance
    Properties:
      ReplicationInstanceClass: dms.t2.small
Outputs:
  DmsInstanceIP:
    Value: !GetAtt BasicReplicationInstance.ReplicationInstancePrivateIpAddresses

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?