Wie behebe ich den Fehler „One or more of your origins or origin groups do not exist“ in CloudFormation?

Lesedauer: 3 Minute
0

Wenn ich versuche, mit AWS CloudFormation eine AWS::CloudFront::Distribution-Ressource zu aktualisieren, erhalte ich die folgende Fehlermeldung: „One or more of your origins or origin groups do not exist.“

Lösung

Die TargetOriginId von CacheBehavior oder DefaultCacheBehavior muss mit einer ID aus der Eigenschaft Origin oder OriginGroups in der Ressource AWS::CloudFront::Distribution übereinstimmen. Wenn die IDs nicht übereinstimmen, erhalten Sie die Fehlermeldung origins or origin groups do not exist.

Dieser Fehler tritt auf, wenn Sie die TargetOriginId eines Ursprungs festlegen, der nicht existiert oder den Sie außerhalb von CloudFormation erstellt haben. Bei einem Aktualisierungsvorgang löscht CloudFormation alle Ursprünge und Ursprungsgruppen in der Distribution, die Sie außerhalb von CloudFormation erstellt haben. Wenn Sie den Ursprung oder die Ursprungsgruppe verwenden, wenn CloudFormation versucht, sie zu löschen, erhalten Sie eine Fehlermeldung.

Hinweis: Es hat sich bewährt, Stack-Ressourcen außerhalb von CloudFormation nicht zu ändern. Änderungen außerhalb von CloudFormation können zu einer Diskrepanz zwischen der Vorlage Ihres Stacks und dem aktuellen Status Ihrer Stack-Ressourcen führen.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Öffnen Sie die Ressource AWS::CloudFront::Distribution in der CloudFormation-Vorlage.
  2. Stellen Sie sicher, dass jede TargetOriginId mit der ID einer der Ursprünge oder Ursprungsgruppen übereinstimmt, die in den Eigenschaften Origins oder OriginGroups definiert sind. Wenn die ID nicht übereinstimmt, geben Sie die richtige Ursprungs-ID als Parameter für DefaultCacheBehavior oder CacheBehavior ein.
    In den folgenden Beispiel-JSON- und YAML-Vorlagenfragmenten definiert und verwendet DefaultCacheBehavior eine CloudFront-Distribution mit einem einzigen Ursprung. Außerdem verwendet der Ursprung eine Ursprungszugriffsidentität (OAI) für die Authentifizierung, und der Ursprung ist Amazon Simple Storage Service (Amazon S3).
    JSON-Beispiel:
    {
      "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"
              }
            }
          }
        }
      }
    }
    YAML-Beispiel:
    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}
    Hinweis: Ersetzen Sie im vorausgehenden Beispiel my-s3-origin durch Ihre Ursprungs-ID, my-s3-bucket.s3.amazonaws.com durch Ihren Domainnamen und /my-content durch Ihren Ursprungspfad.
  3. Testen Sie die CloudFront-Distribution, um sicherzustellen, dass der CloudFormation-Stack erstellt oder aktualisiert wurde.

Ähnliche Informationen

Verwendung verschiedener Ursprünge mit CloudFront-Distributionen

Erstellen eines Stacks über die CloudFormation-Konsole

Bewährte Methoden für AWS CloudFormation

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat