Comment puis-je résoudre l'erreur « One or more of your origins or origin groups do not exist » dans CloudFormation ?

Lecture de 3 minute(s)
0

Lorsque j'essaie d'utiliser AWS CloudFormation pour mettre à jour une ressource AWS::CloudFront::Distribution, l’erreur suivante s'affiche : « One or more of your origins or origin groups do not exist. »

Résolution

L’ID TargetOriginId de CacheBehavior ou DefaultCacheBehavior doit correspondre à un Id de la propriété Origine ou OriginGroups dans la ressource AWS::CloudFront::Distribution. Si les ID ne correspondent pas, l’erreur origins ou origin groups do not exist s'affiche.

Cette erreur se produit lorsque vous définissez le paramètre TargetOriginId d'une origine qui n'existe pas ou que vous avez créée en dehors de CloudFormation. Lors d'une opération de mise à jour, CloudFormation supprime toutes les origines et tous les groupes d'origine de la distribution que vous avez créée en dehors de CloudFormation. Si vous utilisez l'origine ou le groupe d'origine lorsque CloudFormation essaie de le supprimer, l'erreur s'affiche.

Remarque : Il est recommandé de ne pas modifier les ressources de la pile en dehors de CloudFormation. Les modifications apportées en dehors de CloudFormation peuvent créer une incompatibilité entre le modèle de votre pile et l'état actuel des ressources de votre pile.

Pour résoudre ce problème, procédez comme suit :

  1. Ouvrez la ressource AWS::CloudFront::Distribution dans le modèle CloudFormation.
  2. Assurez-vous que chaque TargetOriginId correspond à l'ID de l'une des origines ou groupes d'origine définis dans les propriétés Origines ou OriginGroups. Si l'ID ne correspond pas, saisissez l'ID d'origine correct en tant que paramètre pour DefaultCacheBehavior ou CacheBehavior.
    Dans les exemples d'extraits de modèle suivants, DefaultCacheBehavior définit et utilise une distribution CloudFront avec une origine unique. En outre, l'origine utilise une identité d'accès à l'origine (OAI) pour l'authentification, et l'origine est Amazon Simple Storage Service (Amazon S3).
    Exemple JSON :
    {
      "AWSTemplateFormatVersion": "2010-09-09T00:00:00.000Z",
      "Resources": {
        "cloudfrontdistribution": {
          "Type": "AWS::CloudFront::Distribution",
          "Properties": {
            "DistributionConfig": {
              "DefaultCacheBehavior": {
                "ViewerProtocolPolicy": "https-only",
                "DefaultTTL": 3600,
                "ForwardedValues": {
                  "Cookies": {
                    "Forward": "none"
                  },
                  "QueryString": true
                },
                "TargetOriginId": "my-s3-origin"
              },
              "Enabled": true,
              "Origins": [
                {
                  "DomainName": "my-s3-bucket.s3.amazonaws.com",
                  "Id": "my-s3-origin",
                  "S3OriginConfig": {
                    "OriginAccessIdentity": {
                      "Fn::Sub": "origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}"
                    }
                  },
                  "OriginPath": "/my-content"
                }
              ]
            }
          }
        },
        "CloudFrontOriginAccessIdentity": {
          "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
          "Properties": {
            "CloudFrontOriginAccessIdentityConfig": {
              "Comment": {
                "Ref": "AWS::StackName"
              }
            }
          }
        }
      }
    }
    Exemple YAML :
    AWSTemplateFormatVersion: 2010-09-09
    Resources:
      cloudfrontdistribution:
        Type: AWS::CloudFront::Distribution
        Properties:
          DistributionConfig:
            DefaultCacheBehavior:
              ViewerProtocolPolicy: https-only
              DefaultTTL: 3600
              ForwardedValues:
                Cookies:
                  Forward: none
                QueryString: true
              TargetOriginId: my-s3-origin
            Enabled: true
            Origins:
              - DomainName: 'my-s3-bucket.s3.amazonaws.com'
                Id: my-s3-origin
                S3OriginConfig:
                  OriginAccessIdentity: !Sub origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}
                OriginPath: /my-content
    
      CloudFrontOriginAccessIdentity:
        Type: AWS::CloudFront::CloudFrontOriginAccessIdentity
        Properties:
          CloudFrontOriginAccessIdentityConfig:
            Comment: !Sub ${AWS::StackName}
    Remarque : Dans les exemples précédents, remplacez my-s3-origin par votre ID d'origine, my-s3-bucket.s3.amazonaws.com par votre nom de domaine et /my-content par votre chemin d'origine.
  3. Testez votre distribution CloudFront pour vérifier que votre pile CloudFormation est créée ou mise à jour.

Informations connexes

Utiliser différentes origines avec les distributions CloudFront

Créer une pile à partir de la console CloudFormation

Bonnes pratiques d'AWS CloudFormation

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois