Al usar AWS re:Post, aceptas las AWS re:Post Términos de uso

¿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 AWS
OFICIAL DE AWSActualizada hace 3 meses