Wie behebe ich den Fehler „Eine oder mehrere Ihrer Ursprünge oder Ursprungsgruppen existieren nicht“ in AWS CloudFormation?

Lesedauer: 2 Minute
0

Wenn ich versuche, einen AWS CloudFormation-Stack zu erstellen oder zu aktualisieren, der eine Amazon CloudFront-Distribution enthält, erhalte ich die folgende Fehlermeldung: „Eine oder mehrere eurer Ursprünge oder Herkunftsgruppen existieren nicht.“

Kurzbeschreibung

Dieser Fehler tritt auf, wenn die Eigenschaft targetOriginID von cacheBehavior oder defaultCacheBehavior nicht mit einer CloudFront-origin oder origin group ID. Diese ID ist eine benutzerdefinierte Zeichenfolge, die einen Ursprung oder eine Ursprungsgruppe eindeutig identifiziert. Sie müssen die Ursprungsgruppe in der Vorlage definieren und Ihre Ressourcen über CloudFormation verwalten.

Tipp: Es ist eine bewährte Methode, Änderungen an Stack-Ressourcen außerhalb von CloudFormation zu vermeiden. Dies kann zu einer Diskrepanz zwischen der Vorlage Ihres Stacks und dem aktuellen Status Ihrer Stack-Ressourcen führen. Wenn Sie den Stapel aktualisieren oder löschen, kann die Nichtübereinstimmung zu Fehlern führen.

Behebung

1.    Vergewissern Sie sich, dass die TargetOriginId mit der ID eines der definierten Ursprünge oder Ursprungsgruppen übereinstimmt. Geben Sie die richtige Origin-ID als Parameter für DefaultCacheBehavior oder CacheBehavior.

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) zur Authentifizierung. In den Beispielen ist die Origin-ID auf my-s3-origin gesetzt.

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"
          }
        }
      }
    }
  }
}

Hinweis: Ersetzen Sie my-s3-origin durch Ihre Origin-ID, my-s3-bucket.s3.amazonaws.com durch Ihren Domainnamen und /my-content durch Ihren Ursprungspfad.

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}

2.    Testen Sie Ihre CloudFront-Distribution, um sicherzustellen, dass Ihr CloudFormation-Stack erstellt oder aktualisiert wurde.


Weitere Informationen

Verwendung verschiedener Ursprünge mit CloudFront-Distributionen

Einen Stack auf der AWS CloudFormation-Konsole erstellen

Bewährte Methoden für AWS CloudFormation

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren