Saltar al contenido

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

3 minutos de lectura
0

Cuando intento usar AWS CloudFormation para actualizar un recurso AWS::CloudFront::Distribution, recibo el siguiente error: "One or more of your origins or origin groups do not exist."

Resolución

El TargetOriginId de CacheBehavior o DefaultCacheBehavior debe coincidir con un Id de la propiedad Origin u OriginGroups en el recurso AWS::CloudFront::Distribution. Si los ID no coinciden, recibirás el error origins or origin groups do not exist.

Este error se produce cuando se establece el TargetOriginId de un origen que no existe o que se creó fuera de CloudFormation. En una operación de actualización, CloudFormation elimina todos los orígenes y grupos de origen de la distribución que creaste fuera de CloudFormation. Si estás utilizando el origen o el grupo de origen cuando CloudFormation intente eliminarlo, recibirás el error.

**Nota:**Se recomienda no modificar los recursos de la pila fuera de CloudFormation. Las modificaciones realizadas fuera de CloudFormation pueden crear una discrepancia entre la plantilla de la pila y el estado actual de los recursos de la pila.

Para resolver este problema, sigue los siguientes pasos:

  1. Abre el recurso de AWS::CloudFront::Distribution en la plantilla de CloudFormation.
  2. Asegúrate de que cada TargetOriginId coincida con el ID de uno de los orígenes o grupos de orígenes definidos en las propiedades Origins u OriginGroups. Si el ID no coincide, introduce el ID de origen correcto como parámetro para DefaultCacheBehavior o CacheBehavior.
    En los siguientes fragmentos de ejemplo de plantillas, DefaultCacheBehavior define y usa una distribución de CloudFront con un único origen. Además, el origen usa una identidad de acceso de origen (OAI) para la autenticación y el origen es Amazon Simple Storage Service (Amazon S3).
    Ejemplo de 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"
              }
            }
          }
        }
      }
    }
    Ejemplo de 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: En los ejemplos anteriores, sustituye my-s3-origin por el ID de origen, my-s3-bucket.s3.amazonaws.com por el nombre de dominio y /my-content por la ruta de origen.
  3. Prueba la distribución de CloudFront y verifica que la pila de CloudFormation se ha creado o actualizado.

Información relacionada

Uso de varios orígenes con distribuciones de CloudFront

Creación de una pila en la consola de CloudFormation

Prácticas recomendadas de AWS CloudFormation

OFICIAL DE AWSActualizada hace un año