Come posso risolvere l'errore "One or more of your origins or origin groups do not exist" (Una o più delle tue origini o gruppi di origine non esistono) in AWS CloudFormation?

3 minuti di lettura
0

Quando provo a usare AWS CloudFormation per aggiornare una risorsa AWS::CloudFront::Distribution, ricevo l'errore seguente: "One or more of your origins or origin groups do not exist" (Una o più delle tue origini o gruppi di origine non esistono).

Risoluzione

Il valore TargetOriginId di CacheBehavior o DefaultCacheBehavior deve corrispondere a un ID della proprietà Origin o OriginGroups nella risorsa AWS::CloudFront::Distribution. Se gli ID non corrispondono, verrà visualizzato l'errore di origini o gruppi di origine inesistenti.

Questo errore si verifica quando imposti il valore TargetOriginId di un'origine che non esiste o che hai creato esternamente aCloudFormation. Durante un'operazione di aggiornamento, CloudFormation elimina tutte le origini e i gruppi di origine nella distribuzione che hai creato all'esterno di CloudFormation. Se stai usando l'origine o il gruppo di origine quando CloudFormation tenta l'eliminazione, riceverai l'errore.

Nota: è consigliabile non modificare le risorse dello stack esternamente a CloudFormation. Le modifiche all'esterno di CloudFormation possono creare una discrepanza tra il modello dello stack e lo stato corrente delle risorse dello stack.

Per risolvere questo problema, completa i passaggi seguenti:

  1. Apri la risorsa AWS::CloudFront::Distribution nel modello CloudFormation.
  2. Assicurati che ogni valore TargetOriginId corrisponda all'ID di una delle origini o dei gruppi di origine definiti nelle proprietà Origins o OriginGroups. Se l'ID non corrisponde, inserisci l'ID di origine corretto come parametro per DefaultCacheBehavior o CacheBehavior.
    Nei frammenti seguenti di modelli JSON e YAML di esempio, DefaultCacheBehavior definisce e utilizza una distribuzione CloudFront con un'unica origine. Inoltre, l'origine utilizza un'identità di accesso origine (OAI) per l'autenticazione e l'origine è Amazon Simple Storage Service (Amazon S3).
    Esempio 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"
              }
            }
          }
        }
      }
    }
    Esempio 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}
    Nota: negli esempi precedenti, sostituisci my-s3-origin con il tuo ID di origine, my-s3-bucket.s3.amazonaws.com con il tuo nome di dominio e /my-content con il tuo percorso di origine.
  3. Prova la tua distribuzione CloudFront per verificare che lo stack CloudFormation sia stato creato o aggiornato.

Informazioni correlate

Use various origins with CloudFront distributions

Create a stack from the CloudFormation console

AWS CloudFormation best practices

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa