¿Cómo puedo resolver el error «One or more of your origins or origin groups do not exist» en AWS CloudFormation?

3 minutos de lectura
0

Cuando intento crear o actualizar una pila de AWS CloudFormation que contiene una distribución de Amazon CloudFront, obtengo el siguiente error: «One or more of your origins or origin groups do not exist».

Breve descripción

Este error se produce cuando la propiedad TargetOriginId de CacheBehavior o DefaultCacheBehavior no coincide con un origen de CloudFront o un ID de grupo de orígenes. Este ID es una cadena definida por el usuario que identifica de forma unívoca un origen o grupo de orígenes. Debe definir el grupo de origen en la plantilla y administrar sus recursos a través de CloudFormation.

Consejo: Es una de las prácticas recomendadas evitar realizar cambios en los recursos de la pila fuera de CloudFormation. Esto puede crear un desajuste entre la plantilla de su pila y el estado actual de sus recursos de pila. Cuando actualice o elimine la pila, el desajuste puede provocar errores.

Resolución

1.    Confirme que TargetOriginId coincide con el ID de uno de los orígenes o grupos de orígenes definidos. Introduzca el ID de origen correcto como parámetro para DefaultCacheBehavior o CacheBehavior.

En los siguientes fragmentos de ejemplo de plantillas JSON y YAML, DefaultCacheBehavior define y consume una distribución de CloudFront con un único origen. Además, el origen utiliza una identidad de acceso de origen (OAI) para la autenticación. En los ejemplos, el ID de origen se establece en my-s3-origin.

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

Nota: Sustituya my-s3-origin por su ID de origen, my-s3-bucket.s3.amazonaws.com por su nombre de dominio y /my-content por su ruta de origen.

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.    Compruebe su distribución de CloudFront y verifique que su pila de CloudFormation se ha creado o actualizado.


Información relacionada

Uso de varios orígenes con distribuciones de CloudFront

Creating a stack on the AWS CloudFormation console

AWS CloudFormation best practices

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años