

# Registro de funciones de CloudFront y perimetrales
<a name="logging"></a>

Amazon CloudFront proporciona diferentes tipos de registro. Puede registrar las solicitudes de espectador que llegan a las distribuciones de CloudFront o puede registrar la actividad del servicio de CloudFront (actividad de la API) en la cuenta de AWS. También puede obtener registros de CloudFront Functions y funciones de Lambda@Edge.

## Solicitudes de registro
<a name="logging-requests"></a>

CloudFront proporciona las siguientes formas de registrar las solicitudes que llegan a las distribuciones.

**Registros de acceso (registros estándar)**  
Los registros de acceso de CloudFront proporcionan registros detallados sobre cada solicitud que se realiza en una distribución. Puede usar los registros para situaciones como las auditorías de seguridad y acceso.   
Los registros de acceso de CloudFront se entregan al destino de entrega especificado.   
Utilice los registros de acceso cuando necesite:  
+ Análisis e informes históricos
+ Requisitos de conformidad y auditorías de seguridad
+ Retención de registros rentable a largo plazo
Para obtener más información, consulte [Registros de acceso (registros estándar)](AccessLogs.md).

**Registros de acceso en tiempo real**  
Los registros de acceso en tiempo real de CloudFront se entregan en cuestión de segundos después de recibir las solicitudes y proporcionar información sobre las solicitudes realizadas a una distribución en tiempo real. Puede elegir la *frecuencia de muestreo* de los registros de acceso en tiempo real, es decir, el porcentaje de solicitudes de las que desea recibir entradas de registros de acceso en tiempo real. También puede elegir los campos específicos de los que desea recibir registros de log. Los registros de acceso en tiempo real son ideales para supervisar en directo el rendimiento de la entrega de contenido.  
Los registros de acceso en tiempo real de CloudFront se envían al flujo de datos de su elección en Amazon Kinesis Data Streams. CloudFront aplica cargos por los registros de acceso en tiempo real, que se suman a los cargos que se aplican por el uso de Kinesis Data Streams.  
Utilice los registros de acceso en tiempo real cuando necesite:  
+ Supervisión y alertas en tiempo real
+ Paneles en directo e información operativa
Para obtener más información, consulte [Uso de registros de acceso en tiempo real](real-time-logs.md).

**Registros de conexiones**  
Los registros de conexión proporcionan información detallada sobre la conexión entre el servidor y el cliente en el caso de las distribuciones compatibles con mTLS. Los registros de conexión proporcionan visibilidad de la información de los certificados del cliente, los motivos de los errores de autenticación de mTLS y si se ha permitido o rechazado una conexión.  
Al igual que los registros de acceso (registros estándar), los registros de conexión se entregan al destino de entrega especificado.   
 Para habilitar los registros de conexión, primero debe [habilitar mTLS](mtls-authentication.md) para la distribución. 
Utilice los registros de conexión cuando necesite:  
+ Motivos de las conexiones exitosas o erróneas durante el establecimiento de comunicación de TLS 
+ Visibilidad de la información de certificados de cliente
Para obtener más información, consulte [Observabilidad mediante registros de conexión](connection-logs.md).

## Registro de las funciones perimetrales
<a name="logging-edge-functions"></a>

Puede utilizar registros de Amazon CloudWatch para obtener registros de las funciones perimetrales de Lambda@Edge y de CloudFront Functions. Puede acceder a los registros mediante la consola de CloudWatch o la API de CloudWatch Logs. Para obtener más información, consulte [Registros de funciones perimetrales](edge-functions-logs.md).

## Registro de la actividad del servicio
<a name="logging-service-activity"></a>

Puede utilizar AWS CloudTrail para registrar la actividad de servicio de CloudFront (actividad de la API) en la cuenta de AWS. CloudTrail proporciona un registro de las medidas de la API adoptadas por un usuario, un rol o servicio de AWS en CloudFront. Mediante la información recopilada por CloudTrail, puede determinar la solicitud de la API que se realizó a CloudFront, la dirección IP desde la que se realizó, quién la realizó y cuándo, etc.

Para obtener más información, consulte [Registro de llamadas a la API de Amazon CloudFront con AWS CloudTrail](logging_using_cloudtrail.md).

Para obtener más información acerca del registro, consulte los siguientes temas:

**Topics**
+ [Solicitudes de registro](#logging-requests)
+ [Registro de las funciones perimetrales](#logging-edge-functions)
+ [Registro de la actividad del servicio](#logging-service-activity)
+ [Registros de acceso (registros estándar)](AccessLogs.md)
+ [Uso de registros de acceso en tiempo real](real-time-logs.md)
+ [Registros de funciones perimetrales](edge-functions-logs.md)
+ [Registro de llamadas a la API de Amazon CloudFront con AWS CloudTrail](logging_using_cloudtrail.md)

# Registros de acceso (registros estándar)
<a name="AccessLogs"></a>

Puede configurar CloudFront para crear archivos de registro que contengan información detallada sobre cada solicitud de usuario (espectador) que CloudFront recibe. Estos se denominan *registros de acceso*, también conocidos como *registros estándar*. 

Cada registro contiene distintos datos, como el momento en que se recibió la solicitud, el tiempo de procesamiento, las rutas de solicitud y las respuestas del servidor. Puede utilizar estos registros de acceso para analizar los tiempos de respuesta y solucionar problemas.

En el siguiente diagrama se muestra cómo CloudFront registra información sobre solicitudes para los objetos. En este ejemplo, las distribuciones están configuradas para enviar registros de acceso a un bucket de Amazon S3.

![\[Proceso básico de los registros de acceso\]](http://docs.aws.amazon.com/es_es/AmazonCloudFront/latest/DeveloperGuide/images/Logging.png)


1. En este ejemplo se muestran dos sitios web, A y B, y sus distribuciones de CloudFront correspondientes. Los usuarios solicitan sus objetos a través de URL asociadas a las distribuciones.

1. CloudFront dirige cada solicitud a la ubicación de borde adecuada.

1. CloudFront escribe los datos de cada solicitud en un archivo de registro específico en esa distribución. En este ejemplo, la información acerca de las solicitudes relacionadas con la Distribución A se escriben en un archivo de registro para la Distribución A. La información acerca de las solicitudes relacionadas con la Distribución B se escriben en un archivo de registro para la Distribución B.

1. CloudFront periódicamente guarda el archivo de registro de la distribución en el bucket de Amazon S3 especificado al habilitar el registro. A continuación, CloudFront comienza a guardar información acerca de las solicitudes posteriores en un nuevo archivo de registro para la distribución.

   Si los espectadores no obtienen acceso a su contenido durante una hora determinada, no se reciben archivos de registro de esa hora.

**nota**  
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront envía registros de acceso en la medida en que sea posible. La entrada de registro de una solicitud determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se omite una entrada de registro de los registros de acceso, la cantidad de entradas de los registros de acceso no coincide con el uso que aparece en los informes de facturación y de uso de AWS.

CloudFront admite dos versiones del registro estándar. El registro estándar (heredado) permite enviar los registros de acceso *únicamente* a Amazon S3. El registro estándar (v2) admite destinos de entrega adicionales. Puede configurar ambas opciones de registro o cualquiera de ellas en su distribución. Para obtener más información, consulte los temas siguientes:

**Topics**
+ [Configuración del registro estándar (v2)](standard-logging.md)
+ [Configuración del registro estándar (heredado)](standard-logging-legacy-s3.md)
+ [Referencia de registro estándar](standard-logs-reference.md)

**sugerencia**  
CloudFront también ofrece registros de acceso en tiempo real, que proporcionan información sobre las solicitudes realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de recibir las solicitudes). Puede usar los registros de acceso en tiempo real para supervisar, analizar y tomar medidas en función del rendimiento de entrega de contenido. Para obtener más información, consulte [Uso de registros de acceso en tiempo real](real-time-logs.md).

# Configuración del registro estándar (v2)
<a name="standard-logging"></a>

Puede habilitar los registros de acceso (registros estándar) al crear o actualizar una distribución. El registro estándar (v2) incluye las siguientes características:
+ Enviar registros de acceso a Registros de Amazon CloudWatch, Amazon Data Firehose y Amazon Simple Storage Service (Amazon S3).
+ Seleccionar los campos de registro que desee. También puede seleccionar un [subconjunto de campos de registro de acceso en tiempo real](#standard-logging-real-time-log-selection).
+ Seleccionar formatos de [archivo de registro de salida](#supported-log-file-format) adicionales.

Si utiliza Amazon S3, dispone de las siguientes características opcionales:
+ Enviar registros en Regiones de AWS de inscripción
+ Organizar sus registros con particiones
+ Activar los nombres de archivo compatibles con Hive

Para obtener más información, consulte [Envío de registros a Amazon S3](#send-logs-s3).

Para comenzar a utilizar el registro estándar, complete los siguientes pasos:

1. Configure los permisos necesarios para el Servicio de AWS especificado que recibirá sus registros.

1. Configure el registro estándar desde la consola de CloudFront o la API de CloudWatch.

1. Consulte sus registros de acceso.

**nota**  
Si activa el registro estándar (v2), esto no afectará ni cambiará el registro estándar (heredado). Puede seguir utilizando el registro estándar (heredado) para su distribución, además del registro estándar (v2). Para obtener más información, consulte [Configuración del registro estándar (heredado)](standard-logging-legacy-s3.md).
Si ya ha activado el registro estándar (heredado) y quiere activar el registro estándar (v2) en Amazon S3, le recomendamos que especifique un bucket de Amazon S3 *diferente* o utilice una *ruta distinta* en el mismo bucket (por ejemplo, utilice un prefijo de registro o una partición). Esto le ayuda a realizar un seguimiento de los archivos de registro que están asociados a cada distribución y evita que los archivos de registro se sobrescriban entre sí.

## Permisos
<a name="permissions-standard-logging"></a>

CloudFront utiliza los registros distribuidos de CloudWatch para entregar los registros de acceso. Para ello, necesita los permisos al Servicio de AWS especificado para poder activar la entrega de registros.

Para ver los permisos necesarios para cada destino de registro, elija uno de los siguientes temas en la *Guía del usuario de Registros de Amazon CloudWatch*.
+ [Registros de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)

Una vez que haya configurado los permisos para su destino de registro, puede activar el registro estándar para su distribución.

**nota**  
CloudFront admite el envío de registros de acceso a diferentes Cuentas de AWS (entre cuentas). Para activar la entrega entre cuentas, ambas cuentas (la suya y la cuenta receptora) deben tener los permisos necesarios. Para obtener más información, consulte la sección [Activación del registro estándar para la entrega entre cuentas](#enable-standard-logging-cross-accounts) o el [ejemplo de entrega entre cuentas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#vended-logs-crossaccount-example) de la *Guía del usuario de Registros de Amazon CloudWatch*. 

## Activación del registro estándar
<a name="set-up-standard-logging"></a>

Para activar el registro estándar, puede utilizar la consola de CloudFront o la API de CloudWatch.

**Contents**
+ [Activación del registro estándar (consola de CloudFront)](#access-logging-console)
+ [Activación del registro estándar (API de CloudWatch)](#enable-access-logging-api)

### Activación del registro estándar (consola de CloudFront)
<a name="access-logging-console"></a>

**Para activar el registro estándar en una distribución de CloudFront (consola)**

1. Utilice la consola de CloudFront para [actualizar una distribución existente](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure).

1. Elija la pestaña **Logging** (Registro).

1. Elija **Agregar** y, a continuación, seleccione el servicio para recibir los registros:
   + Registros de CloudWatch
   + Firehose
   + Amazon S3

1. En **Destino**, seleccione el recurso para su servicio. Si aún no ha creado el recurso, puede elegir **Crear** o consultar la siguiente documentación.
   + Para Registros de CloudWatch, introduzca el **[nombre del grupo de registro](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)**.
   + Para Firehose, introduzca el **[flujo de entrega de Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)**.
   + Para Amazon S3, introduzca el **[nombre del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)**. 
**sugerencia**  
Para especificar un prefijo, introdúzcalo después del nombre del bucket, por ejemplo, `amzn-s3-demo-bucket.s3.amazonaws.com/MyLogPrefix`. Si no especifica ningún prefijo, CloudFront le agregará uno automáticamente. Para obtener más información, consulte [Envío de registros a Amazon S3](#send-logs-s3).

1. En **configuración adicional: *opcional***, puede especificar las siguientes opciones:

   1. En **Selección de campos**, seleccione los nombres de los campos de registro que desea entregar en su destino. Puede seleccionar [campos de registro de acceso](standard-logs-reference.md#BasicDistributionFileFormat) y un subconjunto de [campos de registro de acceso en tiempo real](#standard-logging-real-time-log-selection).

   1. (Solo Amazon S3) En **Partición**, especifique la ruta para particionar los datos del archivo de registro. 

   1. (Solo Amazon S3) En **Formato de archivo compatible con Hive**, puede seleccionar la casilla de verificación para utilizar rutas de S3 compatibles con Hive. Esto ayuda a simplificar la carga de nuevos datos en las herramientas compatibles con Hive.

   1. En **Formato de salida**, especifique el formato que prefiera.
**nota**  
Si elige **Parquet**, esta opción conlleva cargos de CloudWatch por convertir sus registros de acceso a Apache Parquet. Para obtener más información, consulte la [sección Registros distribuidos de Precios de CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

   1. En **Delimitador de campo**, especifique cómo separar los campos de registro. 

1. Complete los pasos para actualizar o crear su distribución.

1. Para agregar otro destino, repita los pasos 3-6.

1. En la página **Registros**, compruebe que el estado de los registros estándar sea **Activado** junto a la distribución.

1. (Opcional) Para habilitar el registro de cookies, elija **Administrar**, **Configuración** y active **Registro de cookies**; a continuación, elija **Guardar cambios**.
**sugerencia**  
Registro de cookies es una configuración global que se aplica a *todos* los registros estándar de su distribución. No puede anular esta configuración para distintos destinos de entrega.

Para obtener más información sobre la entrega de registros estándar y los campos de registro, consulte [Referencia de registro estándar](standard-logs-reference.md).

### Activación del registro estándar (API de CloudWatch)
<a name="enable-access-logging-api"></a>

También puede utilizar la API de CloudWatch para habilitar el registro estándar en sus distribuciones. 

**Notas**  
Al llamar a la API de CloudWatch para activar el registro estándar, debe especificar la región Este de EE. UU. (Norte de Virginia) (`us-east-1`), aunque desee activar la entrega entre regiones a otro destino. Por ejemplo, si quiere enviar sus registros de acceso a un bucket de S3 en la región de Europa (Irlanda) (`eu-west-1`), utilice la API de CloudWatch en la región `us-east-1`.
Existe una opción adicional para incluir cookies en el registro estándar. En la API de CloudFront, este es el parámetro `IncludeCookies`. Si configura el registro de acceso mediante la API de CloudWatch y especifica que desea incluir cookies, debe usar la consola de CloudFront o la API de CloudFront para actualizar la distribución de forma que incluya cookies. De lo contrario, CloudFront no podrá enviar cookies a su destino de registro. Para obtener más información, consulte [Registro de cookies](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging).

**Para activar el registro estándar en una distribución (API de CloudWatch)**

1. Después de crear una distribución, obtenga el nombre de recurso de Amazon (ARN). 

   Puede encontrar el ARN en la página de **Distribución** de la consola de CloudFront o puede utilizar la operación de la API [GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html). El ARN de las distribuciones usa el siguiente formato: `arn:aws:cloudfront::123456789012:distribution/d111111abcdef8` 

1. A continuación, utilice la operación de la API de CloudWatch [PutDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html) para crear un origen de entrega para la distribución. 

   1. Introduzca un nombre para el origen de entrega.

   1. Transmita el `resourceArn` de la distribución. 

   1. En `logType`, especifique `ACCESS_LOGS` como el tipo de registros que se recopilan. 

   1.   
**Example Ejemplo de comando put-delivery-source de la AWS CLI**  

      A continuación, se muestra un ejemplo de cómo configurar un origen de entrega en una distribución.

      ```
      aws logs put-delivery-source --name S3-delivery --resource-arn arn:aws:cloudfront::123456789012:distribution/d111111abcdef8 --log-type ACCESS_LOGS
      ```

      **Output**

      ```
      {
       "deliverySource": {
       "name": "S3-delivery",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery-source:S3-delivery",
       "resourceArns": [
       "arn:aws:cloudfront::123456789012:distribution/d111111abcdef8"
       ],
       "service": "cloudfront",
       "logType": "ACCESS_LOGS"
       }
      }
      ```

1. Utilice la operación de la API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) para configurar dónde almacenar los registros. 

   1. En `destinationResourceArn`, especifique el ARN del destino. Puede ser un grupo de registros de CloudWatch, una secuencia de entrega de Firehose o un bucket de Amazon S3.

   1. En `outputFormat`, especifique el formato de salida de sus registros.

   1.   
**Example Ejemplo de comando put-delivery-destination de la AWS CLI**  

      A continuación, se muestra un ejemplo de cómo configurar un destino de entrega en un bucket de Amazon S3.

      ```
      aws logs put-delivery-destination --name S3-destination --delivery-destination-configuration destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket
      ```

      **Output**

      ```
      {
          "name": "S3-destination",
          "arn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
          "deliveryDestinationType": "S3",
          "deliveryDestinationConfiguration": {
              "destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
      ```
**nota**  
Si entrega registros entre cuentas, debe usar la operación de la API [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) para asignar una política de AWS Identity and Access Management (IAM) a la cuenta de destino. La política de IAM permite la entrega de una cuenta a otra.

1. Use la operación de la API [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) para vincular el origen de entrega con el destino creado en los pasos anteriores. Esta operación de la API asocia el origen de la entrega con el destino final.

   1. En `deliverySourceName`, especifique un nombre del origen.

   1. En `deliveryDestinationArn`, especifique el ARN del destino de entrega.

   1. En `fieldDelimiter`, especifique la cadena para separar cada campo de registro.

   1. En `recordFields`, especifique los campos de registro que desee.

   1. Si usa S3, especifique si desea usar `enableHiveCompatiblePath` y`suffixPath`.  
**Example Ejemplo de comando create-delivery de la AWS CLI**  

   A continuación, se muestra un ejemplo de creación de una entrega. 

   ```
   aws logs create-delivery --delivery-source-name cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination
   ```

   **Output**

   ```
   {
       "id": "abcNegnBoTR123",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery:abcNegnBoTR123",
       "deliverySourceName": "cf-delivery",
       "deliveryDestinationArn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
       "deliveryDestinationType": "S3",
       "recordFields": [
           "date",
           "time",
           "x-edge-location",
           "sc-bytes",
           "c-ip",
           "cs-method",
           "cs(Host)",
           "cs-uri-stem",
           "sc-status",
           "cs(Referer)",
           "cs(User-Agent)",
           "cs-uri-query",
           "cs(Cookie)",
           "x-edge-result-type",
           "x-edge-request-id",
           "x-host-header",
           "cs-protocol",
           "cs-bytes",
           "time-taken",
           "x-forwarded-for",
           "ssl-protocol",
           "ssl-cipher",
           "x-edge-response-result-type",
           "cs-protocol-version",
           "fle-status",
           "fle-encrypted-fields",
           "c-port",
           "time-to-first-byte",
           "x-edge-detailed-result-type",
           "sc-content-type",
           "sc-content-len",
           "sc-range-start",
           "sc-range-end",
           "c-country",
           "cache-behavior-path-pattern"
       ],
        "fieldDelimiter": ""
   }
   ```

1. Desde la consola de CloudFront, en la página **Registros**, compruebe que el estado de los registros estándar sea **Activado** junto a la distribución.

   Para obtener más información sobre la entrega de registros estándar y los campos de registro, consulte [Referencia de registro estándar](standard-logs-reference.md).

**nota**  
Para habilitar el registro estándar (v2) para CloudFront con AWS CloudFormation, puede usar las siguientes propiedades de Registros de CloudWatch:  
[Delivery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-delivery.html)
[DeliveryDestination](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverydestination.html)
[DeliverySource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverysource.html)
`ResourceArn` es la distribución de CloudFront y `LogType` debe ser `ACCESS_LOGS` como el tipo de registro admitido.

## Activación del registro estándar para la entrega entre cuentas
<a name="enable-standard-logging-cross-accounts"></a>

Si activa el registro estándar en la Cuenta de AWS y desea enviar los registros de acceso a otra cuenta, asegúrese de configurar correctamente la cuenta de origen y la cuenta de destino. La *cuenta de origen* con la distribución de CloudFront envía sus registros de acceso a la *cuenta de destino*.

En este procedimiento de ejemplo, la cuenta de origen (*111111111111*) envía sus registros de acceso a un bucket de Amazon S3 de la cuenta de destino (*222222222222*). Para enviar registros de acceso a un bucket de Amazon S3 en la cuenta de destino, utilice la AWS CLI. 

### Configuración de la cuenta de destino
<a name="steps-destination-account"></a>

Para la cuenta de destino, realice el procedimiento siguiente.

**Para configurar la cuenta de destino**

1. Para crear el destino de entrega del registro, puede introducir el comando siguiente de la AWS CLI. En este ejemplo, se utiliza la cadena `MyLogPrefix` para crear un prefijo para los registros de acceso.

   ```
   aws logs put-delivery-destination --name cloudfront-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"
   ```

   **Output**

   ```
   {
       "deliveryDestination": {
           "name": "cloudfront-delivery-destination",
           "arn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "deliveryDestinationConfiguration": {"destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"}
       }
   }
   ```
**nota**  
Si especifica un bucket de S3 *sin* prefijo, CloudFront anexará automáticamente el `AWSLogs/<account-ID>/CloudFront` como prefijo que aparece en la `suffixPath` del destino de entrega de S3. Para obtener más información, consulte [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html).

1. Agregue la política de recursos del destino de entrega del registro para permitir que la cuenta de origen cree una entrega del registro.

   En la siguiente política, sustituya *111111111111* por el ID de cuenta de origen y especifique el ARN de destino de la entrega a partir de la salida del paso 1. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCreateDelivery",
               "Effect": "Allow",
               "Principal": {"AWS": "111111111111"},
               "Action": ["logs:CreateDelivery"],
               "Resource": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination"
           }
       ]
   }
   ```

------

1. Guarde el archivo como, por ejemplo, `deliverypolicy.json`.

1. Para asociar la política anterior al destino de la entrega, introduzca el siguiente comando de la AWS CLI.

   ```
   aws logs put-delivery-destination-policy --delivery-destination-name cloudfront-delivery-destination --delivery-destination-policy file://deliverypolicy.json
   ```

1. Agregue la siguiente instrucción a la política de bucket de Amazon S3 de destino y sustituya el ARN del recurso y el ID de la cuenta de origen. Esta política permite que la entidad principal de servicio de `delivery.logs.amazonaws.com` realice la acción `s3:PutObject`.

   ```
   {
       "Sid": "AWSLogsDeliveryWrite",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/*",
       "Condition": {
           "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control",
               "aws:SourceAccount": "111111111111"
           },
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

1. Si utiliza AWS KMS para su bucket, agregue la siguiente instrucción a la política de claves de KMS para conceder permisos a la entidad principal del servicio de `delivery.logs.amazonaws.com`.

   ```
   {
       "Sid": "Allow Logs Delivery to use the key",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*",
       "Condition": {
           "StringEquals": {"aws:SourceAccount": "111111111111"},
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

### Configuración de la cuenta de origen
<a name="steps-source-account"></a>

Tras configurar la cuenta de destino, siga este procedimiento para crear el origen de la entrega y activar el registro de la distribución en la cuenta de origen.

**Para configurar la cuenta de origen**

1. Cree un origen de entrega para el registro estándar de CloudFront de modo que pueda enviar archivos de registro a Registros de CloudWatch. 

   Puede introducir el siguiente comando de la AWS CLI sustituyendo el nombre y el ARN de la distribución.

   ```
   aws logs put-delivery-source --name s3-cf-delivery --resource-arn arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC --log-type ACCESS_LOGS
   ```

   **Output**

   ```
   {
       "deliverySource": {
           "name": "s3-cf-delivery",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery-source:s3-cf-delivery",
           "resourceArns": ["arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC"],
           "service": "cloudfront",
           "logType": "ACCESS_LOGS"
       }
   }
   ```

1. Cree una entrega para mapear el origen de entrega del registro de la cuenta de origen y el destino de entrega del registro de la cuenta de destino.

   En el siguiente comando de la AWS CLI, especifique el ARN de destino de la entrega a partir de la salida del [Paso 1: Configuración de la cuenta de destino](#steps-destination-account).

   ```
   aws logs create-delivery --delivery-source-name s3-cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination
   ```

   **Output**

   ```
   {
       "delivery": {
           "id": "OPmOpLahVzhx1234",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery:OPmOpLahVzhx1234",
           "deliverySourceName": "s3-cf-delivery",
           "deliveryDestinationArn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "recordFields": [
               "date",
               "time",
               "x-edge-location",
               "sc-bytes",
               "c-ip",
               "cs-method",
               "cs(Host)",
               "cs-uri-stem",
               "sc-status",
               "cs(Referer)",
               "cs(User-Agent)",
               "cs-uri-query",
               "cs(Cookie)",
               "x-edge-result-type",
               "x-edge-request-id",
               "x-host-header",
               "cs-protocol",
               "cs-bytes",
               "time-taken",
               "x-forwarded-for",
               "ssl-protocol",
               "ssl-cipher",
               "x-edge-response-result-type",
               "cs-protocol-version",
               "fle-status",
               "fle-encrypted-fields",
               "c-port",
               "time-to-first-byte",
               "x-edge-detailed-result-type",
               "sc-content-type",
               "sc-content-len",
               "sc-range-start",
               "sc-range-end",
               "c-country",
               "cache-behavior-path-pattern"
           ],
           "fieldDelimiter": "\t"
       }
   }
   ```

1. Compruebe que la entrega entre cuentas se ha realizado correctamente.

   1. Desde la cuenta de *origen*, inicie sesión en la consola de CloudFront y elija su distribución. En la pestaña **Registro**, en **Tipo**, verá una entrada creada para la entrega de registros entre cuentas de S3.

   1. Desde la cuenta de *destino*, inicie sesión en la consola de Amazon S3 y elija su bucket de Amazon S3. Verá el prefijo `MyLogPrefix` en el nombre del bucket y todos los registros de acceso que se entreguen en esa carpeta. 

## Formato de archivo de salida
<a name="supported-log-file-format"></a>

Según el destino de entrega que elija, puede especificar uno de los siguientes formatos para los archivos de registro:
+ JSON
+ Sin formato
+ w3c
+ Raw
+ Parquet (solo Amazon S3)

**nota**  
Solo puede establecer el formato de salida cuando crea por primera vez el destino de entrega. Esto no se puede actualizar más tarde. Para cambiar el formato de salida, elimine la entrega y cree otra.

Para obtener más información, consulte [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) en la *Referencia de la API de Registros de Amazon CloudWatch*.

## Edición de configuración de registro estándar
<a name="standard-logs-v2-edit-settings"></a>

Puede activar o desactivar el registro y actualizar otra configuración de registro mediante la [consola de CloudFront](https://console.aws.amazon.com/cloudfront/v4/home) o la API de CloudWatch. Los cambios de configuración de registro surten efecto en un plazo de 12 horas.

Para obtener más información, consulte los temas siguientes:
+ Para actualizar una distribución mediante la consola de CloudFront, consulte [Actualizar una distribución](HowToUpdateDistribution.md).
+ Para actualizar una distribución mediante la API de CloudFront, consulte [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) en la *Referencia de la API de Amazon CloudFront*.
+ Para obtener más información sobre las operaciones de la API de Registros de CloudWatch, consulte la [Referencia de la API de Registros de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.html).

## Campos de registro de acceso
<a name="standard-logging-real-time-log-selection"></a>

Puede seleccionar los mismos campos de registro que admite el registro estándar (heredado). Para obtener más información, consulte [Campos de archivos de registro](standard-logs-reference.md#BasicDistributionFileFormat).

Además, puede seleccionar los siguientes [campos de registro de acceso en tiempo real](real-time-logs.md#understand-real-time-log-config).

1. `timestamp(ms)`: marca de tiempo en milisegundos.

1. `origin-fbl`: cantidad de segundos de latencia del primer byte entre CloudFront y el origen. 

1. `origin-lbl`: cantidad de segundos de latencia del último byte entre CloudFront y el origen. 

1. `asn`: número de sistema autónomo (ASN) del espectador. 

1. `c-country`: código de país que representa la ubicación geográfica del espectador, según lo determinado por la dirección IP del espectador. Para obtener una lista de códigos de países, consulte [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

1. `cache-behavior-path-pattern`: patrón de ruta que identifica el comportamiento de caché que coincidió con la solicitud del espectador. 

## Envíe los registros a CloudWatch Logs
<a name="send-logs-cloudwatch-logs"></a>

Para enviar registros a Registros de CloudWatch, debe crear un grupo de registro de Registros de CloudWatch o usar uno existente. Para obtener más información sobre cómo configurar un grupo de registro de Registros de CloudWatch, consulte [Working with Log Groups and Log Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

Después de crear el grupo de registro, debe contar con los permisos necesarios para permitir el registro estándar. Para obtener más información sobre los permisos necesarios, consulte [Logs sent to CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs) en la *Guía del usuario de Registros de Amazon CloudWatch*. 

**Notas**  
Cuando especifique el nombre del grupo de registro de Registros de CloudWatch, utilice únicamente el patrón de expresiones regulares `[\w-]`. Para obtener más información, consulte la operación de la API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) en la *Referencia de la API de Registros de Amazon CloudWatch*.
Compruebe que la política de recursos del grupo de registro no supere el límite de tamaño. Consulte la sección [Log group resource policy size limit considerations](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs) del tema Registros de CloudWatch.

### Ejemplo de registro de acceso enviado a Registros de CloudWatch
<a name="example-access-logs-cwl"></a>

```
{ 
"date": "2024-11-14", 
"time": "21:34:06", 
"x-edge-location": "SOF50-P2", 
"asn": "16509", 
"timestamp(ms)": "1731620046814", 
"origin-fbl": "0.251", 
"origin-lbl": "0.251", 
"x-host-header": "d111111abcdef8.cloudfront.net", 
"cs(Cookie)": "examplecookie=value" 
}
```

## Envío de registros a Firehose
<a name="send-logs-kinesis"></a>

Para enviar registros a Firehose, cree o use un flujo de entrega de Firehose existente. A continuación, especifique una secuencia de entrega de Firehose como el destino de entrega de registro. Debe especificar una secuencia de entrega de Firehose en la región Este de EE. UU. (Norte de Virginia) us-east-1.

Para obtener más información sobre cómo crear su flujo de entrega, consulte [Creating an Amazon Data Firehose delivery stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html). 

Después de crear el flujo de entrega, debe contar con los permisos necesarios para permitir el registro estándar. Para obtener más información, consulte [Logs sent to Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose) en la *Guía del usuario de Registros de Amazon CloudWatch*.

**nota**  
Cuando especifique el nombre del flujo de Firehose, use únicamente el patrón de expresiones regulares `[\w-]`. Para obtener más información, consulte la operación de la API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) en la *Referencia de la API de Registros de Amazon CloudWatch*.

### Ejemplo de registro de acceso enviado a Firehose
<a name="example-access-logs-firehose"></a>

```
{"date":"2024-11-15","time":"19:45:51","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699951183","origin-fbl":"0.254","origin-lbl":"0.254","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
{"date":"2024-11-15","time":"19:45:52","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699952950","origin-fbl":"0.125","origin-lbl":"0.125","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
```

## Envío de registros a Amazon S3
<a name="send-logs-s3"></a>

Para enviar sus registros de acceso a Amazon S3, cree o utilice un bucket de S3 existente. Cuando active el registro en CloudFront, especifique el nombre del bucket. Para obtener más información sobre la creación de un bucket, consulte [Create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Después de crear el bucket, debe contar con los permisos necesarios para permitir el registro estándar. Para obtener más información, consulte [Registros enviados a Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3) en la *Guía del usuario de Registros de Amazon CloudWatch*.
+ Una vez que active el registro, AWS agregará automáticamente las políticas de bucket necesarias.
+ También puede usar buckets de S3 en las [Regiones de AWS de inscripción](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**nota**  
Si ya ha activado el registro estándar (heredado) y quiere activar el registro estándar (v2) en Amazon S3, le recomendamos que especifique un bucket de Amazon S3 *diferente* o utilice una *ruta distinta* en el mismo bucket (por ejemplo, utilice un prefijo de registro o una partición). Esto le ayuda a realizar un seguimiento de los archivos de registro que están asociados a cada distribución y evita que los archivos de registro se sobrescriban entre sí.

**Topics**
+ [Especificación de un bucket de S3](#prefix-s3-buckets)
+ [Particiones](#partitioning)
+ [Formato de nombre de archivo compatible con Hive](#hive-compatible-file-name-format)
+ [Ejemplos de rutas a los registros de acceso](#bucket-path-examples)
+ [Ejemplo de registro de acceso enviado a Amazon S3](#example-access-logs-s3)

### Especificación de un bucket de S3
<a name="prefix-s3-buckets"></a>

Cuando especifique un bucket de S3 como destino de entrega, tenga en cuenta lo siguiente.

El nombre del bucket de S3 solo puede usar el patrón de expresiones regulares `[\w-]`. Para obtener más información, consulte la operación de la API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) en la *Referencia de la API de Registros de Amazon CloudWatch*.

Si especificó un prefijo para su bucket de S3, sus registros aparecen en esa ruta. Si no especifica ningún prefijo, CloudFront anexará automáticamente el prefijo `AWSLogs/{account-id}/CloudFront`. 

Para obtener más información, consulte [Ejemplos de rutas a los registros de acceso](#bucket-path-examples).

### Particiones
<a name="partitioning"></a>

Puede utilizar la partición para organizar los registros de acceso cuando CloudFront los envía a su bucket de S3. Esto le ayuda a organizar y localizar sus registros de acceso en función de la ruta que desee.

Puede utilizar las siguientes variables para crear una ruta de carpeta.
+ `{DistributionId}` o `{distributionid}`
+ `{yyyy}`
+ `{MM}`
+ `{dd}`
+ `{HH}`
+ `{accountid}`

Puede utilizar cualquier número de variables y especificar los nombres de las carpetas en la ruta. A continuación, CloudFront utiliza esta ruta para crear una estructura de carpetas en el bucket de S3.

**Ejemplos**
+ `my_distribution_log_data/{DistributionId}/logs`
+ `/cloudfront/{DistributionId}/my_distribution_log_data/{yyyy}/{MM}/{dd}/{HH}/logs `

**nota**  
 Puede usar cualquiera de las variables como ID de distribución en la ruta del sufijo. Sin embargo, si va a enviar los registros de acceso a AWS Glue, debe usar la variable `{distributionid}`, ya que AWS Glue espera que los nombres de las particiones estén en minúsculas. Actualice la configuración de registro existente en CloudFront para reemplazar `{DistributionId}` por `{distributionid}`. 

### Formato de nombre de archivo compatible con Hive
<a name="hive-compatible-file-name-format"></a>

Puede utilizar esta opción para que los objetos de S3 que contienen los registros de acceso entregados utilicen una estructura de prefijos que permita la integración con Apache Hive. Para obtener más información, consulte la operación de la API [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html).

**Example Ejemplo**  

```
/cloudfront/DistributionId={DistributionId}/my_distribution_log_data/year={yyyy}/month={MM}/day={dd}/hour={HH}/logs
```

Para obtener más información sobre las particiones y las opciones compatibles con Hive, consulte el elemento [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html) en la *Referencia de la API de Registros de Amazon CloudWatch*.

### Ejemplos de rutas a los registros de acceso
<a name="bucket-path-examples"></a>

Al especificar un bucket de S3 como destino, puede usar las siguientes opciones para crear la ruta a sus registros de acceso:
+ Un bucket de Amazon S3, con o sin prefijo
+ Partición, mediante una variable proporcionada por CloudFront o introduciendo la suya propia
+ Activación de la opción Compatible con Hive

En las siguientes tablas, se muestra cómo aparecen los registros de acceso en el bucket, según las opciones que elija.

#### Bucket de Amazon S3 con prefijo
<a name="bucket-with-prefix"></a>


| Nombre de bucket de Amazon S3 | Partición que especifique en la ruta del sufijo | Ruta del sufijo actualizada | ¿Se ha activado Compatible con Hive? | Los registros de acceso se envían a | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket/MyLogPrefix | Ninguno | Ninguno | No | amzn-s3-demo-bucket/MyLogPrefix/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/ | myFolderA/ | No | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/\$1yyyy\$1 | myFolderA/\$1yyyy\$1 | Sí | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/year=2025 | 

#### Bucket de Amazon S3 sin prefijo
<a name="bucket-without-prefix"></a>


| Nombre de bucket de Amazon S3 | Partición que especifique en la ruta del sufijo | Ruta del sufijo actualizada | ¿Se ha activado Compatible con Hive? | Los registros de acceso se envían a | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | Ninguno | AWSLogs/\$1account-id\$1/CloudFront/ | No | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | No | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | Sí | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/\$1yyyy\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1yyyy\$1 | Sí | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/year=2025 | 

#### ID de Cuenta de AWS como partición
<a name="bucket-account-id-partition"></a>


| Nombre de bucket de Amazon S3 | Partición que especifique en la ruta del sufijo | Ruta del sufijo actualizada | ¿Se ha activado Compatible con Hive? | Los registros de acceso se envían a | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | Ninguno | AWSLogs/\$1account-id\$1/CloudFront/ | Sí | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/\$1accountid\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1accountid\$1 | Sí | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/accountid=<your-account-ID> | 

**Notas**  
La variable `{account-id}` está reservada para CloudFront. CloudFront agrega automáticamente esta variable a la ruta del sufijo si especifica un bucket de Amazon S3 *sin* prefijo. Si sus registros son compatibles con Hive, esta variable aparece como `aws-account-id`.
Puede usar la variable `{accountid}` para que CloudFront agregue su ID de cuenta a la ruta del sufijo. Si sus registros son compatibles con Hive, esta variable aparece como `accountid`.
Para obtener más información sobre la ruta del sufijo, consulte [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html).

### Ejemplo de registro de acceso enviado a Amazon S3
<a name="example-access-logs-s3"></a>

```
#Fields: date time x-edge-location asn timestamp(ms) x-host-header cs(Cookie)
2024-11-14    22:30:25    SOF50-P2    16509    1731623425421    
d111111abcdef8.cloudfront.net    examplecookie=value2
```

## Desactivación del registro estándar
<a name="delete-standard-log-destination"></a>

Puede desactivar el registro estándar de su distribución si ya no lo necesita.

**Para desactivar el registro estándar**

1. Inicie sesión en la consola de CloudFront.

1. Elija **Distribución** y, a continuación, su ID de distribución. 

1. Elija **Registro** y, a continuación, en **Destinos de registro estándar**, seleccione el destino.

1. Elija **Administrar** y, a continuación, **Eliminar**.

1. Repita el paso anterior si tiene más de un registro estándar.

**nota**  
Al eliminar el registro estándar de la consola de CloudFront, esta acción solo elimina la entrega y el destino de entrega. No elimina el origen de entrega de su Cuenta de AWS. Para eliminar un origen de entrega, especifique el nombre de origen de entrega en el comando `aws logs delete-delivery-source --name DeliverySourceName`. Para obtener más información, consulte [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html) en la *Referencia de la API de Registros de Amazon CloudWatch*.

## Solución de problemas
<a name="troubleshooting-access-logs-v2"></a>

Utilice la siguiente información para solucionar problemas comunes cuando trabaje con el registro estándar de CloudFront (v2).

### El origen de entrega ya existe
<a name="access-logging-resource-already-used"></a>

Al activar el registro estándar en una distribución, se crea un origen de entrega. A continuación, utiliza ese origen de entrega para crear las entregas al tipo de destino que desee: Registros de CloudWatch, Firehose o Amazon S3. En la actualidad, solo puede haber un origen de entrega por distribución. Si intenta crear otro origen de entrega para la misma distribución, aparecerá el siguiente mensaje de error.

```
This ResourceId has already been used in another Delivery Source in this account
```

Para crear otro origen de entrega, elimine primero el existente. Para obtener más información, consulte [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html) en la *Referencia de la API de Registros de Amazon CloudWatch*.

### He cambiado la ruta del sufijo y el bucket de Amazon S3 no puede recibir mis registros
<a name="access-logging-s3-permission"></a>

Si habilitó el registro estándar (v2) y especificó un ARN de bucket sin prefijo, CloudFront agregará el siguiente valor predeterminado a la ruta del sufijo: `AWSLogs/{account-id}/CloudFront`. Si utiliza la consola de CloudFront o la operación de la API [UpdateDeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateDeliveryConfiguration.html) para especificar una ruta de sufijo diferente, debe actualizar la política del bucket de Amazon S3 para usar la misma ruta.

**Example Ejemplo: Actualización de la ruta del sufijo**  

1. La ruta del sufijo predeterminada es `AWSLogs/{account-id}/CloudFront` y la reemplaza por `myFolderA`. 

1. Como la nueva ruta del sufijo es diferente a la ruta especificada en la política del bucket de Amazon S3, no se entregarán los registros de acceso.

1. Puede realizar uno de los siguientes pasos:
   + Actualice el permiso del bucket de Amazon S3 de `amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/*` a `amzn-s3-demo-bucket/myFolderA/*`.
   + Actualice su configuración de registro para volver a utilizar el sufijo predeterminado: `AWSLogs/{account-id}/CloudFront` 
Para obtener más información, consulte [Permisos](#permissions-standard-logging).

## Eliminación de archivos de registro
<a name="standard-logs-v2-delete"></a>

CloudFront no elimina automáticamente los archivos de registro de su destino. Para obtener información sobre la eliminación de archivos de registro, consulte los siguientes temas:

**Amazon S3**
+ [Deleting objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html) en la *Guía del usuario de la consola de Amazon Simple Storage Service*

**Registros de CloudWatch**
+ [Working with log groups and log streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) en la *Guía del usuario de Registros de Amazon CloudWatch*
+ [DeleteLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteLogGroup.html) en la *Referencia de la API de Registros de Amazon CloudWatch*

**Firehose**
+ [DeleteDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStream.html) en la *Referencia de la API de Amazon Data Firehose*

## Precios
<a name="pricing-standard-logs"></a>

CloudFront no cobra por activar los registros estándar. Sin embargo, puede incurrir en cargos por la entrega, la ingesta, el almacenamiento o el acceso, según el destino de entrega de los registros que seleccione. Para obtener más información, consulte [Precios de Registros de Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/). En **Nivel de pago**, seleccione la pestaña **Registros** y, a continuación, en **Registros distribuidos**, consulte la información de cada destino de entrega.

Para obtener más información sobre los precios de cada Servicio de AWS, consulte los siguientes temas:
+ [Precios de Registros de Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/)
+ [Precios de Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/pricing/)
+ [Precios de Amazon S](https://aws.amazon.com/s3/pricing/) 
**nota**  
No hay cargos adicionales por la entrega de registros a Amazon S3, aunque puede incurrir en cargos de Amazon S3 por almacenar y acceder a los archivos de registro. Si activa la opción **Parquet** para convertir sus registros de acceso a Apache Parquet, esta opción incurrirá en gastos de CloudWatch. Para obtener más información, consulte la [sección Registros distribuidos de Precios de CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

# Configuración del registro estándar (heredado)
<a name="standard-logging-legacy-s3"></a>

**Notas**  
Este tema es para la versión anterior del registro estándar. Para obtener la última versión, consulte [Configuración del registro estándar (v2)](standard-logging.md).
Si ya ha activado el registro estándar (heredado) y quiere activar el registro estándar (v2) en Amazon S3, le recomendamos que especifique un bucket de Amazon S3 *diferente* o utilice una *ruta distinta* en el mismo bucket (por ejemplo, utilice un prefijo de registro o una partición). Esto le ayuda a realizar un seguimiento de los archivos de registro que están asociados a cada distribución y evita que los archivos de registro se sobrescriban entre sí.

Para comenzar con el registro estándar (heredado), siga estos pasos:

1. Elija un bucket de Amazon S3 que reciba sus registros y agregue los permisos necesarios.

1. Configure el registro estándar (heredado) desde la consola de CloudFront o la API de CloudFront. Solo puede elegir un bucket de Amazon S3 para recibir los registros.

1. Consulte sus registros de acceso.

## Elección de un bucket de Amazon S3 para registros estándar
<a name="access-logs-choosing-s3-bucket"></a>

Al habilitar el registro para una distribución, se especifica el bucket de Amazon S3 en el que desea que CloudFront almacene los archivos de registro. Si utiliza Amazon S3 como origen, le recomendamos que utilice un bucket *independiente* para los archivos de registro.

Especifique el bucket de Amazon S3 donde desea que CloudFront almacene los registros de acceso, por ejemplo, `amzn-s3-demo-bucket.s3.amazonaws.com`.

Puede almacenar los archivos de registro de varias distribuciones en el mismo bucket. Al habilitar el registro, puede especificar un prefijo para los nombres de archivo, para así realizar un seguimiento de que los archivos de registro que se asocian con las distribuciones.

**Elección de un bucket de S3**  
El bucket debe tener una lista de control de acceso (ACL) habilitada. Si elige un bucket sin ACL habilitada desde la consola de CloudFront, aparecerá un mensaje de error. Consulte [Permisos](#AccessLogsBucketAndFileOwnership).
No elija un bucket de Amazon S3 con [Propiedad de objetos de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) configurado como **propietario del bucket forzado**. Esta configuración desactiva las ACL para el bucket y los objetos que contiene, lo que evita que CloudFront entregue archivos de registro al bucket.[Registro estándar V2](standard-logging.md)[Regiones de AWS](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)

## Permisos
<a name="AccessLogsBucketAndFileOwnership"></a>

**importante**  
A partir de abril de 2023, debe habilitar ACL de S3 para los nuevos buckets de S3 que se utilicen para los registros estándar de CloudFront. Puede habilitar las ACL cuando [cree un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-new-bucket.html) o habilitar ACL para un [bucket existente](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html).  
Para obtener más información sobre los cambios, consulte [Configuración predeterminada para preguntas frecuentes de buckets de S3 nuevos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-faq.html) en la *Guía del usuario de Amazon Simple Storage Service* y [Aviso: Los cambios en la seguridad de Amazon S3 llegarán en abril de 2023](https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/) en el *Blog de novedades de AWS*.

La Cuenta de AWS debe tener los siguientes permisos para el bucket que especifique para los archivos de registro:
+ La ACL del bucket debe concederle `FULL_CONTROL`. Si es el propietario del bucket, su cuenta tiene este permiso de forma predeterminada. Si no está, el propietario del bucket debe actualizar la ACL del bucket.
+ `s3:GetBucketAcl`
+ `s3:PutBucketAcl`

**ACL para el bucket**  
Al crear o actualizar una distribución y habilitar el registro, CloudFront utiliza estos permisos para actualizar ACL para que el bucket le conceda a la cuenta `awslogsdelivery` permiso `FULL_CONTROL`. La cuenta `awslogsdelivery` escribe archivos de registro en el bucket. Si su cuenta no tiene los permisos necesarios para actualizar la ACL, se producirá un error al crear o actualizar la distribución.  
En determinadas circunstancias, si envía una solicitud de forma programada para crear un bucket con un nombre específico, pero ya existe uno con ese nombre, S3 restablece los permisos del bucket a sus valores predeterminados. Si configura CloudFront para guardar los registros de acceso en un bucket de S3 y los registros dejan de guardarse en ese bucket, compruebe los permisos del bucket para asegurarse de que CloudFront dispone de los permisos necesarios.

**Restauración de la ACL para el bucket**  
Si elimina permisos para la cuenta `awslogsdelivery`, CloudFront no podrá guardar registros en el bucket de S3. Para permitir que CloudFront comience a guardar los registros de la distribución de nuevo, restaure el permiso de ACL realizando una de las siguientes acciones:  
+ Desactive el registro de la distribución en CloudFront y, a continuación, habilítelo de nuevo. Para obtener más información, consulte [Registro estándar](DownloadDistValuesGeneral.md#DownloadDistValuesLoggingOnOff).
+ Agregue el permiso de ACL para `awslogsdelivery` manualmente mediante el acceso al bucket de S3 en la consola de Amazon S3 y agregando permiso. Para añadir la ACL para `awslogsdelivery`, debe proporcionar el ID canónico de la cuenta, que es el siguiente:

  `c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0`

  

  Para obtener más información acerca de cómo agregar ACL a buckets de S3, consulte [Configuración de ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html) en la *Guía del usuario de Amazon Simple Storage Service*.

**ACL para cada archivo de registro**  
Además de la ACL del bucket, hay una ACL en cada archivo de registro. El propietario del bucket tiene permisos `FULL_CONTROL` en cada archivo de registro, el propietario de la distribución (si no es el mismo que el del bucket) no tiene permiso, y la cuenta `awslogsdelivery` tiene permisos de lectura y escritura. 

**Deshabilitar los registros**  
Si desactiva el registro, CloudFront no elimina las ACL del bucket ni de los archivos de registro. Puede eliminar las ACL si es necesario.

### Política de claves necesarias para buckets de SSE-KMS
<a name="AccessLogsKMSPermissions"></a>

Si el bucket de S3 de los registros estándar utiliza cifrado del servidor con AWS KMS keys (SSE-KMS) mediante una clave administrada por el cliente, se debe agregar la siguiente instrucción a la política de claves para la clave administrada por el cliente. Esto permite a CloudFront escribir archivos de registro en el bucket. No puede utilizar SSE-KMS con la Clave administrada de AWS, porque CloudFront no podrá escribir los archivos de registro en el bucket.

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

Si el bucket de S3 para los registros estándar utiliza SSE-KMS con una [clave de bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html), también debe agregar el permiso `kms:Decrypt` a la instrucción de la política. En ese caso, la instrucción total de la política se ve del siguiente modo.

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

**nota**  
Cuando habilite SSE-KMS para el bucket de S3, especifique el ARN completo de la clave administrada por el cliente. Para obtener más información, consulte [Uso del cifrado del servidor con AWS KMS keys (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Activación del registro estándar (heredado)
<a name="standard-logs-legacy-enable"></a>

Para activar los registros estándar, use la consola de CloudFront o la API de CloudFront.

**Contents**
+ [Activación del registro estándar (heredado) (consola de CloudFront)](#standard-logs-legacy-enable-console)
+ [Activación del registro estándar (heredado) (API de CloudFront)](#standard-logs-legacy-enable-api)

### Activación del registro estándar (heredado) (consola de CloudFront)
<a name="standard-logs-legacy-enable-console"></a>

**Para activar los registros estándar en una distribución de CloudFront (consola)**

1. Utilice la consola de CloudFront para crear una [nueva distribución](distribution-web-creating-console.md) o [actualizar una existente](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure).

1. En la sección **Registro estándar**, en **Entrega de registros**, seleccione **Activado**.

1. (Opcional) En **Registro de cookies**, seleccione **Activado** si desea incluir cookies en sus registros. Para obtener más información, consulte [Registro de cookies](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging).
**sugerencia**  
El registro de cookies es una configuración global que se aplica a *todos* los registros estándar de su distribución. No puede anular esta configuración para distintos destinos de entrega.

1. En la sección **Entregar a**, especifique **Amazon S3 (heredado)**.

1. Especifique el bucket de Amazon S3. Si aún no tiene uno, puede elegir **Crear** o consultar la documentación para [crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

1. (Opcional) En **Prefijo del registro**, especifique la cadena, de haberla, a la que CloudFront debe agregar un prefijo para los nombres de archivo de los registros de acceso de esta distribución; por ejemplo, `exampleprefix/`. La barra inclinada (/) al final es opcional pero recomendable para simplificar la navegación de los archivos de registro. Para obtener más información, consulte [Prefijo de registros](DownloadDistValuesGeneral.md#DownloadDistValuesLogPrefix).

1. Complete los pasos para actualizar o crear su distribución.

1. En la página **Registros**, compruebe que el estado de los registros estándar sea **Activado** junto a la distribución.

   Para obtener más información sobre la entrega de registros estándar y los campos de registro, consulte [Referencia de registro estándar](standard-logs-reference.md).

### Activación del registro estándar (heredado) (API de CloudFront)
<a name="standard-logs-legacy-enable-api"></a>

También puede utilizar la API de CloudFront para activar los registros estándar en sus distribuciones. 

**Para activar los registros estándar en una distribución (API de CloudFront)**
+ Utilice la operación de la API [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) o [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html), y configure el objeto [LoggingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LoggingConfig.html).

## Edición de configuración de registro estándar
<a name="ChangeSettings"></a>

Puede habilitar o desactivar el registro, cambiar el bucket de Amazon S3 en el que se almacenan los registros y cambiar el prefijo de los archivos de registro a través de la [consola de CloudFront](https://console.aws.amazon.com/cloudfront/v4/home) o la API de CloudFront. Los cambios de configuración de registro surten efecto en un plazo de 12 horas.

Para obtener más información, consulte los siguientes temas:
+ Para actualizar una distribución mediante la consola de CloudFront, consulte [Actualizar una distribución](HowToUpdateDistribution.md).
+ Para actualizar una distribución mediante la API de CloudFront, consulte [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) en la *Referencia de la API de Amazon CloudFront*.

## Envío de registros a Amazon S3
<a name="standard-logs-in-s3"></a>

Cuando envía los registros a Amazon S3, los registros aparecen en el siguiente formato.

### Formato del nombre de archivo
<a name="AccessLogsFileNaming"></a>

El nombre de cada archivo de registro que CloudFront guarda en el bucket de Amazon S3 utiliza el formato de nombre de archivo siguiente:

`<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz`

La fecha y la hora se muestran según la hora universal coordinada (UTC).

Por ejemplo, si utiliza `example-prefix` como prefijo y el ID de distribución es `EMLARXS9EXAMPLE`, los nombres de archivo tendrán el siguiente aspecto:

`example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz`

Al habilitar el registro para una distribución, puede especificar un prefijo para los nombres de archivo, para así realizar un seguimiento de que los archivos de registro que se asocian a las distribuciones. Si incluye un valor para el prefijo del archivo de registro y el prefijo no termina con una barra inclinada (`/`), CloudFront agrega una automáticamente. Si el prefijo termina con una barra inclinada, CloudFront no agrega otra.

`.gz` al final del nombre del archivo indica que CloudFront ha comprimido el archivo de registro con gzip.

## Formato de archivo de registro estándar
<a name="LogFileFormat"></a>

Cada entrada del archivo de registro ofrece información acerca de una única solicitud de espectador. Los archivos log tienen las siguientes características:
+ Utilice el [formato de archivo de registro ampliado W3C](https://www.w3.org/TR/WD-logfile.html).
+ Contienen valores separados por pestañas.
+ Contienen registros que no están necesariamente en orden cronológico.
+ Contiene dos líneas de encabezado: una con la versión de formato de archivo y otra que muestra la cantidad de campos de W3C incluidos en cada registro.
+ Contiene equivalentes codificados en URL para espacios y otros caracteres determinados en valores de campo.

  Los equivalentes codificados en URL se utilizan para los siguientes caracteres:
  + Códigos de caracteres ASCII de 0 a 32, ambos incluidos
  + Códigos de caracteres ASCII 127 y superiores
  + Todos los caracteres de la tabla siguiente

  El estándar de codificación de URL se define en [RFC 1738](https://tools.ietf.org/html/rfc1738.html).


|  Valor de URL codificada  |  Carácter  | 
| --- | --- | 
|  %3C  |  <  | 
|  %3E  |  >  | 
|  %22  |  "  | 
|  %23  |  \$1  | 
|  %25  |  %  | 
|  %7B  |  \$1  | 
|  %7D  |  \$1  | 
|  %7C  |  \$1  | 
|  %5C  |  \$1  | 
|  %5E  |  ^  | 
|  %7E  |  \$1  | 
|  %5B  |  [  | 
|  %5D  |  ]  | 
|  %60  |  `  | 
|  %27  |  '  | 
|  %20  |  espacio  | 

## Eliminación de archivos de registro
<a name="DeletingLogFiles"></a>

CloudFront no elimina automáticamente los archivos de registro del bucket de Amazon S3. Para obtener más información sobre la eliminación de archivos de registro de un bucket de Amazon S3, consulte [Eliminación de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html) en la *Guía del usuario de la consola de Amazon Simple Storage Service*.

## Precios
<a name="AccessLogsCharges"></a>

El registro estándar es una característica opcional de CloudFront. CloudFront no cobra por activar los registros estándar. Sin embargo, se acumulan cargos de Amazon S3 usuales en concepto de almacenamiento y acceso a los archivos en Amazon S3. Puede eliminarlos en cualquier momento.

Para obtener más información acerca de los precios de Amazon S3, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

Para obtener más información acerca de los precios de CloudFront, consulte [Precios de CloudFront](https://aws.amazon.com/cloudfront/pricing/).

# Referencia de registro estándar
<a name="standard-logs-reference"></a>

Las siguientes secciones se aplican tanto al registro estándar (v2) como al registro estándar (heredado).

**Topics**
+ [Intervalo de entrega de archivos de registro](#access-logs-timing)
+ [Cómo se registran las solicitudes cuando la URL o los encabezados de la solicitud sobrepasan el tamaño máximo](#access-logs-request-URL-size)
+ [Campos de un archivo de registro](#BasicDistributionFileFormat)
+ [Análisis de registros](#access-logs-analyzing)

## Intervalo de entrega de archivos de registro
<a name="access-logs-timing"></a>

CloudFront entrega registros para su distribución varias veces cada hora. En general, un archivo de registro contiene información acerca de las solicitudes que CloudFront ha recibido durante un periodo determinado. Normalmente, CloudFront entrega el archivo de registro de ese periodo al destino una hora después de que se produzcan los eventos reflejados en el registro. Tenga en cuenta, sin embargo, que algunas o todas las entradas de los archivos de registro de un periodo a veces pueden retrasarse hasta 24 horas. Cuando se retrasan entradas de registro, CloudFront las guarda en un archivo de registro cuyo nombre de archivo incluye la fecha y la hora del periodo en el que *se realizaron* las solicitudes en lugar de incluir la fecha y la hora de entrega del archivo.

Al crear un archivo de registro, CloudFront consolida información para la distribución desde todas las ubicaciones de borde que recibieron solicitudes de los objetos durante el periodo que abarca dicho archivo de registro.

CloudFront puede guardar más de un archivo por periodo en función de la cantidad de solicitudes de objetos asociados con una distribución que recibe CloudFront.

CloudFront comienza a enviar de forma fiable los registros de acceso unas cuatro horas después de habilitar los registros. Es posible obtener algunos registros de acceso antes del momento de envío.

**nota**  
Si ningún usuario solicita sus objetos durante un periodo, no recibirá archivos de registro para ese periodo.

## Cómo se registran las solicitudes cuando la URL o los encabezados de la solicitud sobrepasan el tamaño máximo
<a name="access-logs-request-URL-size"></a>

Si el tamaño total de todos los encabezados de solicitud, incluidas las cookies, supera los 20 KB o si la URL supera los 8192 bytes, CloudFront no puede analizar la solicitud por completo y no puede registrar la solicitud. Dado que la solicitud no se registra, el código de estado que se devuelve no se verá en los archivos de registro de error de HTTP.

Si el cuerpo de la solicitud supera el tamaño máximo, se registra la solicitud, incluido el código de estado de error de HTTP.

## Campos de un archivo de registro
<a name="BasicDistributionFileFormat"></a>

El archivo de registro de una distribución contiene 33 campos. La lista siguiente contiene el nombre de cada campo, en orden, junto con una descripción de la información de ese campo.

1. **`date`**

   La fecha en que se produjo el evento en el formato `YYYY-MM-DD`. Por ejemplo, `2019-06-30`. La fecha y la hora se muestran según la hora universal coordinada (UTC). Para conexiones de WebSockets, indica la fecha de cierre de la conexión.

1. **`time`**

   La hora a la que el servidor de CloudFront terminó de responder a la solicitud (en UTC), por ejemplo, `01:42:39`. Para conexiones de WebSockets, indica la hora de cierre de la conexión.

1. **`x-edge-location`**

   La ubicación de borde que atendió la solicitud. Cada ubicación periférica se identifica mediante un código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo Internacional (IATA) más cercano a la ubicación geográfica de la ubicación periférica. Estas abreviaturas pueden cambiar en el futuro.

1. **`sc-bytes`**

   El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los encabezados. Para conexiones WebSocket y gRPC, se trata del número total de bytes enviados desde el servidor al cliente a través de la conexión.

1. **`c-ip`**

   La dirección IP del espectador que ha realizado la solicitud, por ejemplo, `192.0.2.183` o `2001:0db8:85a3::8a2e:0370:7334`. Si el lector ha utilizado un proxy HTTP o un equilibrador de carga para enviar la solicitud, el valor de este campo es la dirección IP del proxy o del balanceador de carga. Consulte también el campo `x-forwarded-for`.

1. **`cs-method`**

   El método de solicitud HTTP recibido del lector.

1. **`cs(Host)`**

   El nombre de dominio de la distribución de CloudFront (por ejemplo, d111111abcdef8.cloudfront.net).

1. **`cs-uri-stem`**

   La parte de la URL de solicitud que identifica la ruta y el objeto (por ejemplo, `/images/cat.jpg`). Los signos de interrogación (?) de las URL y las cadenas de consulta no están incluidas en el registro.

1. **`sc-status`**

   Contiene uno de los siguientes valores:
   + El código de estado HTTP de la respuesta del servidor (por ejemplo, `200`).
   + `000`, que indica que el lector ha cerrado la conexión antes de que el servidor pudiese responder a la solicitud. Si el lector cierra la conexión después de que el servidor comience a enviar la respuesta, este campo contiene el código de estado HTTP de la respuesta que el servidor había comenzado a enviar.

1. **`cs(Referer)`**

   El valor del encabezado `Referer` de la solicitud. Este es el nombre del dominio que ha originado la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que enlazan directamente con sus objetos y su propio sitio web.

1. **`cs(User-Agent)`**

   El valor del encabezado `User-Agent` de la solicitud. El encabezado `User-Agent` identifica el origen de la solicitud, como el tipo de dispositivo y el navegador que enviaron la solicitud o, si la solicitud provino de un motor de búsqueda, de cuál.

1. **`cs-uri-query`**

   La parte de la cadena de consulta de la URL, de haberla.

   Cuando una URL no contiene una cadena de consulta, el valor de este campo es un guion (-). Para obtener más información, consulte [Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta](QueryStringParameters.md).

1. **`cs(Cookie)`**

   El encabezado `Cookie` de la solicitud, incluidos los pares nombre-valor y los atributos asociados.

   Si habilita el registro de cookies, CloudFront registra las cookies de todas las solicitudes independientemente de qué cookies elija reenviar al origen. Cuando una solicitud no incluye un encabezado de cookie, el valor de este campo es un guion (-). Para obtener más información acerca de cookies, consulte [Almacenamiento en caché de contenido en función de cookies](Cookies.md).

1. **`x-edge-result-type`**

   Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo `x-edge-response-result-type`.

   Por ejemplo, en el streaming de HTTP, se supone que el servidor encuentra un segmento de la secuencia en la caché. En esta situación, el valor de este campo sería normalmente `Hit`. Sin embargo, si el lector cierra la conexión antes de que el servidor haya entregado todo el segmento, el tipo de resultado final (y el valor de este campo) es `Error`.

   Las conexiones WebSocket y gRPC tendrán un valor de `Miss` para este campo porque el contenido no se puede almacenar en caché y se entrega directamente al origen.

   Entre los valores posibles se incluyen:
   + `Hit`: el servidor ofreció el objeto al lector desde la caché.
   + `RefreshHit`: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente del objeto.
   + `Miss`: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor la ha reenviado al origen y ha devuelto el resultado al lector.
   + `LimitExceeded`: se ha denegado la solicitud porque se superó una cuota (antes denominada límite) de CloudFront.
   + `CapacityExceeded`: el servidor ha devuelto un código de estado HTTP 503 porque no disponía de capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
   + `Error`: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del campo `sc-status` está en el intervalo `4xx`) o un error de servidor (el valor del campo `sc-status` está en el intervalo `5xx`). Si el valor del campo `sc-status` es `200` o si el valor de este campo es `Error` y el valor del campo `x-edge-response-result-type` no es `Error`, significa que la solicitud HTTP se ha realizado correctamente pero el cliente se ha desconectado antes de recibir todos los bytes.
   + `Redirect`: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de distribución.
   + `LambdaExecutionError`: la función de Lambda@Edge asociada con la distribución no se ha completado debido a una asociación incorrecta, al tiempo de espera de una función, a un problema de dependencia de AWS o a otro problema de disponibilidad general.

1. **`x-edge-request-id`**

   Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena en el encabezado de respuesta `x-amz-cf-id`.

1. **`x-host-header`**

   El valor que el lector ha incluido en el encabezado `Host` de la solicitud. Si utiliza el nombre de dominio CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos (como www.example.com), este campo contiene el nombre de dominio alternativo.

   Si está utilizando nombres de dominio alternativo, consulte `cs(Host)` en el campo 7 para ver el nombre de dominio asociado con su distribución.

1. **`cs-protocol`**

   El protocolo de la solicitud del lector (`http`, `https`, `grpcs`, `ws` o `wss`).

1. **`cs-bytes`**

   El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados. Para conexiones WebSocket y gRPC, se trata del número total de bytes enviados desde el cliente al servidor en la conexión.

1. **`time-taken`**

   El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en búfer de TCP.

1. **`x-forwarded-for`**

   Si el lector ha utilizado un proxy HTTP o un balanceador de carga para enviar la solicitud, el valor del campo `c-ip` es la dirección IP del proxy o del balanceador de carga. En ese caso, este campo es la dirección IP del espectador que originó la solicitud. Este campo puede contener varias direcciones IP separadas por comas. Cada dirección IP puede ser una dirección IPv4 (por ejemplo, `192.0.2.183`) o una dirección IPv6 (por ejemplo, `2001:0db8:85a3::8a2e:0370:7334`).

   Si el lector no utiliza un proxy HTTP o un balanceador de carga, el valor de este campo es un guion (-).

1. **`ssl-protocol`**

   Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores posibles, consulte los protocolos SSL/TLS compatibles en [Protocolos y cifrados admitidos entre lectores y CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

   Cuando `cs-protocol` en el campo 17 es `http`, el valor de este campo es un guion (-).

1. **`ssl-cipher`**

   Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores posibles, consulte los cifrados SSL/TLS compatibles en [Protocolos y cifrados admitidos entre lectores y CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

   Cuando `cs-protocol` en el campo 17 es `http`, el valor de este campo es un guion (-).

1. **`x-edge-response-result-type`**

   Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también el campo `x-edge-result-type`. Entre los valores posibles se incluyen:
   + `Hit`: el servidor ofreció el objeto al lector desde la caché.
   + `RefreshHit`: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente del objeto.
   + `Miss`: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la solicitud al servidor de origen y ha devuelto el resultado al lector.
   + `LimitExceeded`: se ha denegado la solicitud porque se superó una cuota (antes denominada límite) de CloudFront.
   + `CapacityExceeded`: el servidor ha devuelto un error 503 porque no disponía de capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
   + `Error`: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del campo `sc-status` está en el intervalo `4xx`) o un error de servidor (el valor del campo `sc-status` está en el intervalo `5xx`).

     Si el valor del campo `x-edge-result-type` es `Error` y el valor de este campo no es `Error`, el cliente se ha desconectado antes de finalizar la descarga.
   + `Redirect`: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de distribución.
   + `LambdaExecutionError`: la función de Lambda@Edge asociada con la distribución no se ha completado debido a una asociación incorrecta, al tiempo de espera de una función, a un problema de dependencia de AWS o a otro problema de disponibilidad general.

1. **`cs-protocol-version`**

   La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen `HTTP/0.9`, `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` y `HTTP/3.0`.

1. **`fle-status`**

   Cuando se configura el [cifrado en el nivel de campo](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html) para una distribución, este campo contiene un código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía la solicitud al origen, el valor de este campo es `Processed`. El valor de `x-edge-result-type` todavía puede indicar un error del lado del cliente o del lado del servidor en este caso.

   Los valores posibles para este campo son:
   + `ForwardedByContentType`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque no se ha configurado ningún tipo de contenido.
   + `ForwardedByQueryArgs`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque la solicitud contiene un argumento de consulta que no estaba en la configuración de cifrado en el nivel de campo.
   + `ForwardedDueToNoProfile`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque no se ha especificado ningún perfil en la configuración de cifrado en el nivel de campo.
   + `MalformedContentTypeClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque el valor del encabezado `Content-Type` estaba en un formato no válido.
   + `MalformedInputClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque el cuerpo de la solicitud estaba en un formato no válido.
   + `MalformedQueryArgsClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque un argumento de consulta estaba vacío o tenía un formato no válido.
   + `RejectedByContentType`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque no se ha especificado ningún tipo de contenido en la configuración de cifrado en el nivel de campo.
   + `RejectedByQueryArgs`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque no se ha especificado ningún argumento de consulta en la configuración de cifrado en el nivel de campo.
   + `ServerError`: el servidor de origen ha devuelto un error.

   Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP 400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte [Cuotas de cifrado en el nivel de campo](cloudfront-limits.md#limits-field-level-encryption).
   + `FieldLengthLimitClientError`: un campo que se ha configurado como cifrado ha superado la longitud máxima permitida.
   + `FieldNumberLimitClientError`: una solicitud que la distribución ha configurado para cifrar contiene un número de campos mayor del permitido.
   + `RequestLengthLimitClientError`: la longitud del cuerpo de la solicitud ha superado el máximo permitido cuando se ha configurado el cifrado en el nivel de campo.

   Si no se ha configurado el cifrado en el nivel de campo para la distribución, el valor de este campo es un guion (-).

1. **`fle-encrypted-fields`**

   El número de campos de [cifrado en el nivel de campo](field-level-encryption.md) que el servidor ha cifrado y reenviado al origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los datos, por lo que este campo puede tener un valor incluso si el valor de `fle-status` es un error.

   Si no se ha configurado el cifrado en el nivel de campo para la distribución, el valor de este campo es un guion (-).

1. **`c-port`**

   El número de puerto de la solicitud desde el espectador.

1. **`time-to-first-byte`**

   El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta, medido en el servidor.

1. **`x-edge-detailed-result-type`**

   Este campo contiene el mismo valor que el campo `x-edge-result-type`, excepto en los siguientes casos:
   + Cuando el objeto se ha servido al lector desde la capa de [Origin Shield](origin-shield.md), este campo contiene `OriginShieldHit`.
   + Cuando el objeto no estaba en la memoria caché de CloudFront y la respuesta se generó mediante una [función Lambda@Edge de solicitud de origen](lambda-at-the-edge.md), este campo contiene `MissGeneratedResponse`.
   + Cuando el valor del campo `x-edge-result-type` es `Error`, este campo contiene uno de los siguientes valores con más información sobre el error:
     + `AbortedOrigin`: el servidor ha encontrado un problema con el origen.
     + `ClientCommError`: la respuesta al lector se ha interrumpido debido a un problema de comunicación entre el servidor y el lector.
     + `ClientGeoBlocked`: la distribución está configurada para rechazar solicitudes desde la ubicación geográfica del lector.
     + `ClientHungUpRequest`: el espectador se ha detenido prematuramente mientras enviaba la solicitud.
     + `Error`: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías. Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
     + `InvalidRequest`: el servidor ha recibido una solicitud no válida desde el lector.
     + `InvalidRequestBlocked`: el acceso al recurso solicitado está bloqueado.
     + `InvalidRequestCertificate`: la distribución no coincide con el certificado SSL/TLS para el que se ha establecido la conexión HTTPS.
     + `InvalidRequestHeader`: la solicitud contenía un encabezado no válido.
     + `InvalidRequestMethod`: la distribución no está configurada para gestionar el método de solicitud HTTP que se ha utilizado. Esto puede suceder cuando la distribución solo admite solicitudes que se pueden almacenar en caché.
     + `OriginCommError`: se agotó el tiempo de espera de la solicitud al conectarse a un origen o al leer datos de un origen.
     + `OriginConnectError`: el servidor no ha podido conectarse al origen.
     + `OriginContentRangeLengthError`: el encabezado `Content-Length` de la respuesta del origen no coincide con la longitud del encabezado `Content-Range`.
     + `OriginDnsError`: el servidor no ha podido resolver el nombre de dominio del origen.
     + `OriginError`: el origen ha devuelto una respuesta incorrecta.
     + `OriginHeaderTooBigError`: un encabezado devuelto por el origen es demasiado grande para que el servidor de borde lo procese.
     + `OriginInvalidResponseError`: el origen ha devuelto una respuesta no válida.
     + `OriginReadError`: el servidor no ha podido leer desde el origen.
     + `OriginWriteError`: el servidor no ha podido escribir en el origen.
     + `OriginZeroSizeObjectError`: un objeto de tamaño cero enviado desde el origen ha provocado un error.
     + `SlowReaderOriginError`: el espectador ha sido al leer el mensaje que ha provocado el error de origen.

1. **`sc-content-type`**

   El valor del encabezado HTTP `Content-Type` de la respuesta.

1. **`sc-content-len`**

   El valor del encabezado HTTP `Content-Length` de la respuesta.

1. **`sc-range-start`**

   Cuando la respuesta contiene el encabezado HTTP `Content-Range`, este campo contiene el valor inicial del intervalo.

1. **`sc-range-end`**

   Cuando la respuesta contiene el encabezado HTTP `Content-Range`, este campo contiene el valor final del intervalo.

1. **`distribution-tenant-id`**

   El ID del inquilino de la distribución.

1. **`connection-id`**

   Un identificador único para la conexión TLS. 

   Debe habilitar los mTLS para las distribuciones antes de poder obtener información para este campo. Para obtener más información, consulte [Autenticación TLS mutua con CloudFront (mTLS de espectador)TLS mutua de origen con CloudFront](mtls-authentication.md).

   

A continuación, se muestra un ejemplo de archivo de registro de una distribución.

```
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow==	d111111abcdef8.cloudfront.net	https	23	0.000	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.000	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-	
2019-12-13	22:36:27	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/favicon.ico	502	http://www.example.com/	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ==	www.example.com	http	675	0.102	-	-	-	Error	HTTP/1.1	-	-	25260	0.102	OriginDnsError	text/html	507	-	-
2019-12-13	22:36:26	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg==	www.example.com	http	735	0.107	-	-	-	Error	HTTP/1.1	-	-	3802	0.107	OriginDnsError	text/html	507	-	-
2019-12-13	22:37:02	SEA19-C2	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	curl/7.55.1	-	-	Error	kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==	www.example.com	http	387	0.103	-	-	-	Error	HTTP/1.1	-	-	12644	0.103	OriginDnsError	text/html	507	-	-
```

## Análisis de registros
<a name="access-logs-analyzing"></a>

Dado que puede recibir varios registros de acceso por hora, le recomendamos que combine en un mismo archivo todos los archivos de registro que reciba para un periodo determinado. Así podrá analizar los datos de ese periodo de forma más completa y precisa.

Una forma de analizar los registros de acceso consiste en utilizar [Amazon Athena](https://aws.amazon.com/athena/). Athena es un servicio de consultas interactivo que puede ayudarlo a analizar datos de los servicios de AWS, incluido CloudFront. Para obtener más información, consulte [Consulta de los registros de Amazon CloudFront](https://docs.aws.amazon.com/athena/latest/ug/cloudfront-logs.html) en la *Guía del usuario de Amazon Athena*.

Además, en las siguientes entradas del blog de AWS se explican algunas formas de analizar los registros de acceso.
+ [Amazon CloudFront Request Logging](https://aws.amazon.com/blogs/aws/amazon-cloudfront-request-logging/) (para contenido enviado a través de HTTP)
+ [ Enhanced CloudFront Logs, Now With Query Strings](https://aws.amazon.com/blogs/aws/enhanced-cloudfront-logs-now-with-query-strings/)

# Uso de registros de acceso en tiempo real
<a name="real-time-logs"></a>

Con los registros de acceso en tiempo real de CloudFront, puede obtener información sobre las solicitudes realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de recibir las solicitudes). Puede usar los registros de acceso en tiempo real para supervisar, analizar y tomar medidas en función del rendimiento de entrega de contenido.

Los registros de acceso en tiempo real de CloudFront son configurables. Puede elegir:
+ La *frecuencia de muestreo* de los registros en tiempo real, es decir, el porcentaje de solicitudes de las que desea recibir entradas de registro de acceso en tiempo real.
+ Los campos específicos que desea recibir en los registros de log.
+ Los comportamientos de caché específicos (patrones de ruta) para los que desea recibir registros en tiempo real.

Los registros de acceso en tiempo real de CloudFront se envían al flujo de datos de su elección en Amazon Kinesis Data Streams. Puede crear su propio [consumidor de flujos de datos de Kinesis](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html) o utilizar Amazon Data Firehose para enviar los datos de registro a Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) o a un servicio de procesamiento de registros de terceros.

CloudFront aplica cargos por los registros de acceso en tiempo real, que se suman a los cargos que se aplican por el uso de Kinesis Data Streams. Para obtener más información acerca de los precios, consulte [Precios de Amazon CloudFront](https://aws.amazon.com/cloudfront/pricing/) y [Precios de Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

**importante**  
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront envía registros de acceso en tiempo real en la medida en que sea posible. La entrada de registro de una solicitud determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se omite una entrada de registro de los registros de acceso en tiempo real, la cantidad de entradas de los registros de acceso en tiempo real no coincide con el uso que aparece en los informes de facturación y de uso de AWS.

**Topics**
+ [Creación y uso de configuraciones de registro de acceso en tiempo real](#create-real-time-log-config)
+ [Descripción de las configuraciones de registros de acceso en tiempo real](#understand-real-time-log-config)
+ [Creación de un consumidor de Kinesis Data Streams](#real-time-log-consumer-guidance)
+ [Resolución de problemas de registros de acceso en tiempo real](#real-time-log-troubleshooting)

## Creación y uso de configuraciones de registro de acceso en tiempo real
<a name="create-real-time-log-config"></a>

Para obtener información sobre las solicitudes realizadas a una distribución en tiempo real, puede usar configuraciones de registro de acceso en tiempo real. Los registros se entregan en cuestión de segundos después de recibir las solicitudes. Puede crear una configuración de registro de acceso en tiempo real en la consola de CloudFront, con AWS Command Line Interface (AWS CLI) o con la API de CloudFront.

Para utilizar una configuración de registro de acceso en tiempo real, puede asociarla a uno o más comportamientos de caché en una distribución de CloudFront.

------
#### [ Console ]

**Creación de una configuración de registro de acceso en tiempo real**

1. Inicie sesión en la Consola de administración de AWS y abra la página **Logs (Registros)** en la consola de CloudFront en [https://console.aws.amazon.com/cloudfront/v4/home?#/logs](https://console.aws.amazon.com/cloudfront/v4/home?#/logs).

1. Elija la pestaña **Configuraciones en tiempo real**.

1. Seleccione **Crear configuración**.

1. En **Nombre**, escriba un nombre para la configuración.

1. En **Frecuencia de muestreo**, introduzca el porcentaje de solicitudes de las que desea recibir entradas de registro.

1. En **Campos**, elija los campos que desee recibir en los registros de acceso en tiempo real.
   + Para incluir todos los [campos de CMCD](#CMCD-real-time-logging-fields) en los registros, elija **Todas las claves de CMCD**.

1. En **Punto de conexión**, elija uno o más flujos de datos de Kinesis para recibir registros de acceso en tiempo real.
**nota**  
Los registros de acceso en tiempo real de CloudFront se envían al flujo de datos que especifique en Kinesis Data Streams. Para leer y analizar los registros de acceso en tiempo real, puede crear su propio consumidor de flujo de datos de Kinesis. También puede utilizar Firehose para enviar los datos de registro a Amazon S3, Amazon Redshift, Amazon OpenSearch Service o un servicio de procesamiento de registros de terceros.

1. En **Rol de IAM**, elija **Crear un nuevo rol de servicio** o elija un rol existente. Debe tener permiso para crear roles de IAM.

1. (Opcional) En **Distribución**, elija una distribución y el comportamiento de caché de CloudFront que desee asociar a la configuración de registro de acceso en tiempo real.

1. Seleccione **Crear configuración**.

Si se realiza correctamente, la consola muestra los detalles de la configuración de registro de acceso en tiempo real que acaba de crear.

Para obtener más información, consulte [Descripción de las configuraciones de registros de acceso en tiempo real](#understand-real-time-log-config).

------
#### [ AWS CLI ]

Para crear una configuración de registro de acceso en tiempo real con la AWS CLI, utilice el comando **aws cloudfront create-realtime-log-config**. Puede utilizar un archivo de entrada para proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro individual como entrada de línea de comandos.

**Para crear una configuración de registro de acceso en tiempo real (CLI con archivo de entrada)**

1. Utilice el siguiente comando para crear un archivo denominado `rtl-config.yaml` que contenga todos los parámetros de entrada del comando **create-realtime-log-config**.

   ```
   aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-config.yaml
   ```

1. Abra el archivo llamado `rtl-config.yaml` que acaba de crear. Edite el archivo para especificar los ajustes de configuración del registro de acceso en tiempo real que desee y, a continuación, guarde el archivo. Tenga en cuenta lo siguiente:
   + Para `StreamType`, el único valor válido es `Kinesis`.

   Para obtener más información acerca de los ajustes de configuración largos en tiempo real, consulte [Descripción de las configuraciones de registros de acceso en tiempo real](#understand-real-time-log-config).

1. Utilice el siguiente comando para crear la configuración de registro de acceso en tiempo real utilizando los parámetros de entrada del archivo de `rtl-config.yaml`.

   ```
   aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml
   ```

Si se realiza correctamente, la salida del comando muestra los detalles de la configuración de registro de acceso en tiempo real que acaba de crear.

**Para asociar una configuración de registro de acceso en tiempo real a una distribución existente (CLI con archivo de entrada)**

1. Utilice el comando siguiente para guardar la configuración de distribución de la distribución de CloudFront que desea actualizar. Reemplace *distribution\$1ID* por el ID de la distribución.

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. Abra el archivo llamado `dist-config.yaml` que acaba de crear. Edite el archivo, realizando los siguientes cambios en cada comportamiento de caché que actualice para utilizar una configuración de registro de acceso en tiempo real.
   + En el comportamiento de caché, agregue un campo denominado `RealtimeLogConfigArn`. Para el valor del campo, utilice el ARN de la configuración de registro de acceso en tiempo real que desea asociar a este comportamiento de caché.
   + Cambie el nombre del campo `ETag` a `IfMatch`, pero no cambie el valor del campo.

   Guarde el archivo cuando haya terminado.

1. Utilice el siguiente comando para actualizar la distribución para utilizar la configuración de registro de acceso en tiempo real. Reemplace *distribution\$1ID* por el ID de la distribución.

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

Si tiene éxito, la salida del comando muestra los detalles de la distribución que acaba de actualizar.

------
#### [ API ]

Para crear una configuración de registro de acceso en tiempo real con la API de CloudFront, utilice la operación de la API [CreateRealtimeLogConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateRealtimeLogConfig.html). Para obtener más información sobre los parámetros que especifique en esta llamada a la API, consulte [Descripción de las configuraciones de registros de acceso en tiempo real](#understand-real-time-log-config) y la documentación de referencia de la API para su SDK de AWS u otro cliente de la API.

Después de crear una configuración de registro de acceso en tiempo real, puede asociarla a un comportamiento de caché mediante una de las siguientes operaciones de la API:
+ Para asociarla a un comportamiento de caché en una distribución existente, utilice [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Para asociarlo con un comportamiento de caché en una nueva distribución, utilice [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Para ambas operaciones de la API, proporcione el ARN de la configuración de registro de acceso en tiempo real del campo `RealtimeLogConfigArn`, dentro de un comportamiento de caché. Para obtener más información sobre los otros campos que especifique en estas llamadas a la API, consulte [Referencia de toda la configuración de distribución](distribution-web-values-specify.md) y la documentación de referencia de la API para el SDK de AWS u otro cliente de la API.

------

## Descripción de las configuraciones de registros de acceso en tiempo real
<a name="understand-real-time-log-config"></a>

Para utilizar registros de acceso en tiempo real de CloudFront, se debe comenzar por crear una configuración de registro de acceso en tiempo real. La configuración de registro de acceso en tiempo real contiene información acerca de los campos de registro que desea recibir, la *frecuencia de muestreo* de las entradas de registro y el flujo de datos de Kinesis en el que desea entregar los registros.

En concreto, una configuración de registro de acceso en tiempo real contiene los siguientes valores de configuración:

**Contents**
+ [Nombre](#real-time-logs-name)
+ [Frecuencia de muestreo](#real-time-logs-sampling-rate)
+ [Fields](#real-time-logs-fields)
+ [Punto de conexión (Kinesis Data Streams)](#real-time-logs-endpoint)
+ [rol de IAM](#real-time-logs-IAM)

### Nombre
<a name="real-time-logs-name"></a>

Un nombre para identificar la configuración de registro de acceso en tiempo real.

### Frecuencia de muestreo
<a name="real-time-logs-sampling-rate"></a>

La frecuencia de muestreo es un número entero entre 1 y 100 (inclusive) que determina el porcentaje de solicitudes de espectador que se envían a Kinesis Data Streams como entradas de registro de acceso en tiempo real. Para incluir todas las solicitudes de espectador en los registros en tiempo real, especifique 100 para la frecuencia de muestreo. Es posible que elija una frecuencia de muestreo más baja para reducir los costos mientras recibe un ejemplo representativo de datos de solicitudes en los registros de acceso en tiempo real.

### Fields
<a name="real-time-logs-fields"></a>

Una lista de campos que se incluyen en cada entrada de registro de acceso en tiempo real. Cada registro de log puede contener hasta 40 campos y puede optar por recibir todos los campos disponibles, o solo los campos necesarios para monitorear y analizar el rendimiento.

La lista siguiente contiene el nombre de cada campo y una descripción de la información de ese campo. Los campos se muestran en el orden en que aparecen en las entradas de registros que se entregan a Kinesis Data Streams.

Los campos 46-63 son [datos comunes de cliente multimedia (CMCD)](#CMCD-real-time-logging-fields) que los clientes de reproductores multimedia pueden enviar a las CDN con cada solicitud. Puede utilizar estos datos para comprender cada solicitud, como el tipo de medio (audio o vídeo), la velocidad de reproducción y la duración del streaming. Estos campos solo aparecen en los registros de acceso en tiempo real si se envían a CloudFront. 

1. **`timestamp`**

   La fecha y la hora a las que el servidor de borde ha terminado de responder a la solicitud.

1. **`c-ip`**

   La dirección IP del espectador que ha realizado la solicitud, por ejemplo, `192.0.2.183` o `2001:0db8:85a3::8a2e:0370:7334`. Si el lector ha utilizado un proxy HTTP o un equilibrador de carga para enviar la solicitud, el valor de este campo es la dirección IP del proxy o del balanceador de carga. Consulte también el campo `x-forwarded-for`.

1. **`s-ip`**

   La dirección IP del servidor de CloudFront que atendió la solicitud, por ejemplo, `192.0.2.183` o `2001:0db8:85a3::8a2e:0370:7334`.

1. **`time-to-first-byte`**

   El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta, medido en el servidor.

1. **`sc-status`**

   El código de estado HTTP de la respuesta del servidor (por ejemplo, `200`).

1. **`sc-bytes`**

   El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los encabezados. Para conexiones WebSocket y gRPC, se trata del número total de bytes enviados desde el servidor al cliente a través de la conexión.

1. **`cs-method`**

   El método de solicitud HTTP recibido del lector.

1. **`cs-protocol`**

   El protocolo de la solicitud del lector (`http`, `https`, `grpcs`, `ws` o `wss`).

1. **`cs-host`**

   El valor que el lector ha incluido en el encabezado `Host` de la solicitud. Si utiliza el nombre de dominio CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos (como www.example.com), este campo contiene el nombre de dominio alternativo.

1. **`cs-uri-stem`**

   La dirección URL completa de la solicitud, incluida la cadena de consulta (si existe), pero sin el nombre de dominio. Por ejemplo, `/images/cat.jpg?mobile=true`.
**nota**  
En los [registros estándar](AccessLogs.md), el valor de `cs-uri-stem` no incluye la cadena de consulta.

1. **`cs-bytes`**

   El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados. Para conexiones WebSocket y gRPC, se trata del número total de bytes enviados desde el cliente al servidor en la conexión.

1. **`x-edge-location`**

   La ubicación de borde que atendió la solicitud. Cada ubicación periférica se identifica mediante un código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo Internacional (IATA) más cercano a la ubicación geográfica de la ubicación periférica. Estas abreviaturas pueden cambiar en el futuro.

1. **`x-edge-request-id`**

   Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena en el encabezado de respuesta `x-amz-cf-id`.

1. **`x-host-header`**

   El nombre de dominio de la distribución de CloudFront (por ejemplo, d111111abcdef8.cloudfront.net).

1. **`time-taken`**

   El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en búfer de TCP.

1. **`cs-protocol-version`**

   La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen `HTTP/0.9`, `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` y `HTTP/3.0`.

1. **`c-ip-version`**

   La versión IP de la solicitud (IPv4 o IPv6).

1. **`cs-user-agent`**

   El valor del encabezado `User-Agent` de la solicitud. El encabezado `User-Agent` identifica el origen de la solicitud, como el tipo de dispositivo y el navegador que enviaron la solicitud o, si la solicitud provino de un motor de búsqueda, de cuál.

1. **`cs-referer`**

   El valor del encabezado `Referer` de la solicitud. Este es el nombre del dominio que ha originado la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que enlazan directamente con sus objetos y su propio sitio web.

1. **`cs-cookie`**

   El encabezado `Cookie` de la solicitud, incluidos los pares nombre-valor y los atributos asociados.
**nota**  
Este campo se trunca en 800 bytes.

1. **`cs-uri-query`**

   La parte de la cadena de consulta de la URL, de haberla.

1. **`x-edge-response-result-type`**

   Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también el campo `x-edge-result-type`. Entre los valores posibles se incluyen:
   + `Hit`: el servidor ofreció el objeto al lector desde la caché.
   + `RefreshHit`: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente del objeto.
   + `Miss`: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la solicitud al servidor de origen y ha devuelto el resultado al lector.
   + `LimitExceeded`: se ha denegado la solicitud porque se superó una cuota (antes denominada límite) de CloudFront.
   + `CapacityExceeded`: el servidor ha devuelto un error 503 porque no disponía de capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
   + `Error`: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del campo `sc-status` está en el intervalo `4xx`) o un error de servidor (el valor del campo `sc-status` está en el intervalo `5xx`).

     Si el valor del campo `x-edge-result-type` es `Error` y el valor de este campo no es `Error`, el cliente se ha desconectado antes de finalizar la descarga.
   + `Redirect`: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de distribución.
   + `LambdaExecutionError`: la función de Lambda@Edge asociada con la distribución no se ha completado debido a una asociación incorrecta, al tiempo de espera de una función, a un problema de dependencia de AWS o a otro problema de disponibilidad general.

1. **`x-forwarded-for`**

   Si el lector ha utilizado un proxy HTTP o un equilibrador de carga para enviar la solicitud, el valor del campo `c-ip` es la dirección IP del proxy o del balanceador de carga. En ese caso, este campo es la dirección IP del espectador que originó la solicitud. Este campo puede contener varias direcciones IP separadas por comas. Cada dirección IP puede ser una dirección IPv4 (por ejemplo, `192.0.2.183`) o una dirección IPv6 (por ejemplo, `2001:0db8:85a3::8a2e:0370:7334`).

1. **`ssl-protocol`**

   Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores posibles, consulte los protocolos SSL/TLS compatibles en [Protocolos y cifrados admitidos entre lectores y CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

1. **`ssl-cipher`**

   Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores posibles, consulte los cifrados SSL/TLS compatibles en [Protocolos y cifrados admitidos entre lectores y CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

1. **`x-edge-result-type`**

   Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo `x-edge-response-result-type`.

   Por ejemplo, en el streaming de HTTP, se supone que el servidor encuentra un segmento de la secuencia en la caché. En esta situación, el valor de este campo sería normalmente `Hit`. Sin embargo, si el lector cierra la conexión antes de que el servidor haya entregado todo el segmento, el tipo de resultado final (y el valor de este campo) es `Error`.

   Las conexiones WebSocket y gRPC tendrán un valor de `Miss` para este campo porque el contenido no se puede almacenar en caché y se entrega directamente al origen.

   Entre los valores posibles se incluyen:
   + `Hit`: el servidor ofreció el objeto al lector desde la caché.
   + `RefreshHit`: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente del objeto.
   + `Miss`: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor la ha reenviado al origen y ha devuelto el resultado al lector.
   + `LimitExceeded`: se ha denegado la solicitud porque se superó una cuota (antes denominada límite) de CloudFront.
   + `CapacityExceeded`: el servidor ha devuelto un código de estado HTTP 503 porque no disponía de capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
   + `Error`: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del campo `sc-status` está en el intervalo `4xx`) o un error de servidor (el valor del campo `sc-status` está en el intervalo `5xx`). Si el valor del campo `sc-status` es `200` o si el valor de este campo es `Error` y el valor del campo `x-edge-response-result-type` no es `Error`, significa que la solicitud HTTP se ha realizado correctamente pero el cliente se ha desconectado antes de recibir todos los bytes.
   + `Redirect`: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de distribución.
   + `LambdaExecutionError`: la función de Lambda@Edge asociada con la distribución no se ha completado debido a una asociación incorrecta, al tiempo de espera de una función, a un problema de dependencia de AWS o a otro problema de disponibilidad general.

1. **`fle-encrypted-fields`**

   El número de campos de [cifrado en el nivel de campo](field-level-encryption.md) que el servidor ha cifrado y reenviado al origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los datos, por lo que este campo puede tener un valor incluso si el valor de `fle-status` es un error.

1. **`fle-status`**

   Cuando se configura el [cifrado en el nivel de campo](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html) para una distribución, este campo contiene un código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía la solicitud al origen, el valor de este campo es `Processed`. El valor de `x-edge-result-type` todavía puede indicar un error del lado del cliente o del lado del servidor en este caso.

   Los valores posibles para este campo son:
   + `ForwardedByContentType`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque no se ha configurado ningún tipo de contenido.
   + `ForwardedByQueryArgs`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque la solicitud contiene un argumento de consulta que no estaba en la configuración de cifrado en el nivel de campo.
   + `ForwardedDueToNoProfile`: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque no se ha especificado ningún perfil en la configuración de cifrado en el nivel de campo.
   + `MalformedContentTypeClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque el valor del encabezado `Content-Type` estaba en un formato no válido.
   + `MalformedInputClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque el cuerpo de la solicitud estaba en un formato no válido.
   + `MalformedQueryArgsClientError`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque un argumento de consulta estaba vacío o tenía un formato no válido.
   + `RejectedByContentType`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque no se ha especificado ningún tipo de contenido en la configuración de cifrado en el nivel de campo.
   + `RejectedByQueryArgs`: el servidor ha rechazado la solicitud y ha devuelto un código de estado HTTP 400 al lector porque no se ha especificado ningún argumento de consulta en la configuración de cifrado en el nivel de campo.
   + `ServerError`: el servidor de origen ha devuelto un error.

   Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP 400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte [Cuotas de cifrado en el nivel de campo](cloudfront-limits.md#limits-field-level-encryption).
   + `FieldLengthLimitClientError`: un campo que se ha configurado como cifrado ha superado la longitud máxima permitida.
   + `FieldNumberLimitClientError`: una solicitud que la distribución ha configurado para cifrar contiene un número de campos mayor del permitido.
   + `RequestLengthLimitClientError`: la longitud del cuerpo de la solicitud ha superado el máximo permitido cuando se ha configurado el cifrado en el nivel de campo.

1. **`sc-content-type`**

   El valor del encabezado HTTP `Content-Type` de la respuesta.

1. **`sc-content-len`**

   El valor del encabezado HTTP `Content-Length` de la respuesta.

1. **`sc-range-start`**

   Cuando la respuesta contiene el encabezado HTTP `Content-Range`, este campo contiene el valor inicial del intervalo.

1. **`sc-range-end`**

   Cuando la respuesta contiene el encabezado HTTP `Content-Range`, este campo contiene el valor final del intervalo.

1. **`c-port`**

   El número de puerto de la solicitud desde el espectador.

1. **`x-edge-detailed-result-type`**

   Este campo contiene el mismo valor que el campo `x-edge-result-type`, excepto en los siguientes casos:
   + Cuando el objeto se ha servido al lector desde la capa de [Origin Shield](origin-shield.md), este campo contiene `OriginShieldHit`.
   + Cuando el objeto no estaba en la memoria caché de CloudFront y la respuesta se generó mediante una [función Lambda@Edge de solicitud de origen](lambda-at-the-edge.md), este campo contiene `MissGeneratedResponse`.
   + Cuando el valor del campo `x-edge-result-type` es `Error`, este campo contiene uno de los siguientes valores con más información sobre el error:
     + `AbortedOrigin`: el servidor ha encontrado un problema con el origen.
     + `ClientCommError`: la respuesta al lector se ha interrumpido debido a un problema de comunicación entre el servidor y el lector.
     + `ClientGeoBlocked`: la distribución está configurada para rechazar solicitudes desde la ubicación geográfica del lector.
     + `ClientHungUpRequest`: el espectador se ha detenido prematuramente mientras enviaba la solicitud.
     + `Error`: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías. Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
     + `InvalidRequest`: el servidor ha recibido una solicitud no válida desde el lector.
     + `InvalidRequestBlocked`: el acceso al recurso solicitado está bloqueado.
     + `InvalidRequestCertificate`: la distribución no coincide con el certificado SSL/TLS para el que se ha establecido la conexión HTTPS.
     + `InvalidRequestHeader`: la solicitud contenía un encabezado no válido.
     + `InvalidRequestMethod`: la distribución no está configurada para gestionar el método de solicitud HTTP que se ha utilizado. Esto puede suceder cuando la distribución solo admite solicitudes que se pueden almacenar en caché.
     + `OriginCommError`: se agotó el tiempo de espera de la solicitud al conectarse a un origen o al leer datos de un origen.
     + `OriginConnectError`: el servidor no ha podido conectarse al origen.
     + `OriginContentRangeLengthError`: el encabezado `Content-Length` de la respuesta del origen no coincide con la longitud del encabezado `Content-Range`.
     + `OriginDnsError`: el servidor no ha podido resolver el nombre de dominio del origen.
     + `OriginError`: el origen ha devuelto una respuesta incorrecta.
     + `OriginHeaderTooBigError`: un encabezado devuelto por el origen es demasiado grande para que el servidor de borde lo procese.
     + `OriginInvalidResponseError`: el origen ha devuelto una respuesta no válida.
     + `OriginReadError`: el servidor no ha podido leer desde el origen.
     + `OriginWriteError`: el servidor no ha podido escribir en el origen.
     + `OriginZeroSizeObjectError`: un objeto de tamaño cero enviado desde el origen ha provocado un error.
     + `SlowReaderOriginError`: el espectador ha sido al leer el mensaje que ha provocado el error de origen.

1. **`c-country`**

   Un código de país que representa la ubicación geográfica del lector, según lo determinado por la dirección IP del lector. Para obtener una lista de códigos de países, consulte [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

1. **`cs-accept-encoding`**

    El valor del encabezado `Accept-Encoding` de la solicitud del lector.

1. **`cs-accept`**

   El valor del encabezado `Accept` de la solicitud del lector.

1. **`cache-behavior-path-pattern`**

   El patrón de ruta que identifica el comportamiento de caché que coincidió con la solicitud del lector.

1. **`cs-headers`**

   Los encabezados HTTP (nombres y valores) en la solicitud del lector.
**nota**  
Este campo se trunca en 800 bytes.

1. **`cs-header-names`**

   Los nombres de los encabezados HTTP (no los valores) en la solicitud del lector.
**nota**  
Este campo se trunca en 800 bytes.

1. **`cs-headers-count`**

    El número de encabezados HTTP en la solicitud del lector.

1. **`primary-distribution-id`**

   Cuando la implementación continua está habilitada, este ID identifica qué distribución es la principal en la distribución actual.

1. **`primary-distribution-dns-name`**

   Cuando la implementación continua está habilitada, este valor muestra el nombre de dominio principal que está relacionado con la distribución de CloudFront actual (por ejemplo, d111111abcdef8.cloudfront.net).

1. **`origin-fbl`**

   La cantidad de segundos de latencia del primer byte entre CloudFront y el origen.

1. **`origin-lbl`**

   La cantidad de segundos de latencia del último byte entre CloudFront y el origen.

1. **`asn`**

   El número de sistema autónomo (ASN) del espectador.

1. <a name="CMCD-real-time-logging-fields"></a>
**Campos de CMCD en los registros de acceso en tiempo real**  
Para obtener más información sobre estos campos, consulte el documento [CTA Specification Web Application Video Ecosystem - Common Media Client Data CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).

1. **`cmcd-encoded-bitrate`**

   La velocidad de bits codificada del objeto de audio o vídeo solicitado. 

1. **`cmcd-buffer-length`**

   La longitud del búfer del objeto multimedia solicitado.

1. **`cmcd-buffer-starvation`**

   Indica si el búfer se ha agotado en algún momento entre la solicitud anterior y la solicitud de objeto. Esto puede provocar que el reproductor se encuentre en un estado de repetición de almacenamiento en búfer, lo que puede detener la reproducción de vídeo o audio. 

1. **`cmcd-content-id`**

   Una cadena única que identifica el contenido actual.

1. **`cmcd-object-duration`**

   La duración de la reproducción del objeto solicitado (en milisegundos). 

1. **`cmcd-deadline`**

   El plazo a partir de la hora de solicitud en que debe estar disponible la primera muestra de este objeto, de forma que se evite un estado de búfer insuficiente u otros problemas de reproducción. 

1. **`cmcd-measured-throughput`**

   El rendimiento entre el cliente y el servidor, medido por el cliente.

1. **`cmcd-next-object-request`**

   La ruta relativa del siguiente objeto solicitado.

1. **`cmcd-next-range-request`**

   Si la siguiente solicitud es de objeto parcial, esta cadena indica el intervalo de bytes que debe solicitarse.

1. **`cmcd-object-type`**

   El tipo de medio del objeto actual que se está solicitando.

1. **`cmcd-playback-rate`**

   1 si es en tiempo real, 2 si es a doble velocidad, 0 si no se está reproduciendo. 

1. **`cmcd-requested-maximum-throughput`**

   El rendimiento máximo solicitado que el cliente considera suficiente para la entrega de recursos.

1. **`cmcd-streaming-format`**

   El formato de streaming que define la solicitud actual.

1. **`cmcd-session-id`**

   Un GUID que identifica la sesión de reproducción actual.

1. **`cmcd-stream-type`**

   Token que identifica la disponibilidad de los segmentos. `v` = todos los segmentos están disponibles. `l` = los segmentos van estando disponibles con el tiempo.

1. **`cmcd-startup`**

   La clave se incluye sin valor si el objeto se necesita de forma urgente durante el inicio, la búsqueda o la recuperación tras un evento de vaciado del búfer.

1. **`cmcd-top-bitrate`**

   La representación con la tasa de bits más alta que el cliente puede reproducir.

1. **`cmcd-version`**

   La versión de esta especificación utilizada para interpretar los nombres y valores de clave definidos. Si se omite esta clave, el cliente y el servidor *deben* interpretar los valores tal como los define la versión 1.

1. **`r-host`**

   Este campo se envía para las solicitudes de origen e indica el dominio del servidor de origen utilizado para entregar el objeto. En caso de errores, puede usar este campo para buscar el último origen que se ha intentado, por ejemplo: `cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com`.

1. **`sr-reason`**

   Este campo proporciona el motivo por el que se seleccionó el origen. Está vacío cuando se realiza una solicitud al origen principal.

   Si se produce una conmutación por error del origen, el campo contendrá el código de error HTTP que provocó la conmutación por error, como `Failover:403` o `Failover:502`. En caso de conmutación por error del origen, si la solicitud que se ha reintentado también falla y no ha configurado páginas de error personalizadas, `r-status` indica la respuesta del segundo origen. Sin embargo, si ha configurado páginas de error personalizadas junto con la conmutación por error del origen, contendrá la respuesta del segundo origen si la solicitud falló y, en su lugar, se devolvió una página de error personalizada.

   Si no se produce ninguna conmutación por error del origen, pero se selecciona el origen mediante la resiliencia basada en la calidad multimedia (MQAR), se registrará como `MediaQuality`. Para obtener más información, consulte [Resiliencia basada en la calidad multimedia](media-quality-score.md).

1. **`x-edge-mqcs`**

   Este campo indica la puntuación de confianza de la calidad multimedia (MQCS) (rango: 0-100) de los segmentos multimedia que CloudFront recuperó en los encabezados de respuesta de los CMSD de MediaPackage v2. Este campo está disponible para las solicitudes que coincidan con un comportamiento de caché que tenga un grupo de origen activado para MQAR. CloudFront registra este campo para los segmentos multimedia que también se entregan desde su caché, además de las solicitudes de origen. Para obtener más información, consulte [Resiliencia basada en la calidad multimedia](media-quality-score.md).

1. **`distribution-tenant-id`**

   El ID del inquilino de la distribución.

1. **`connection-id`**

   Un identificador único para la conexión TLS. 

   Debe habilitar los mTLS para las distribuciones antes de poder obtener información para este campo. Para obtener más información, consulte [Autenticación TLS mutua con CloudFront (mTLS de espectador)TLS mutua de origen con CloudFront](mtls-authentication.md).

### Punto de conexión (Kinesis Data Streams)
<a name="real-time-logs-endpoint"></a>

El punto de conexión contiene información sobre Kinesis Data Streams al que desea enviar registros en tiempo real. Se proporciona el nombre de recurso de Amazon (ARN) de la secuencia de datos.

Para obtener más información acerca de la creación de Kinesis Data Streams, consulte los siguientes temas en la *Guía para desarrolladores de Amazon Kinesis Data Streams*.
+ [Creación y administración de flujos](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)
+ [Realización de operaciones básicas de Kinesis Data Streams con la AWS CLI](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html)
+ [Creación de un flujo](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) (utiliza AWS SDK para Java)

Cuando crea una secuencia de datos, debe especificar el número de particiones. Utilice la siguiente información que le ayudará a estimar el número de particiones que necesita.

**Para calcular el número de particiones para la secuencia de datos de Kinesis**

1. Calcule (o estime) la cantidad de solicitudes por segundo que la distribución de CloudFront recibe.

   Puede utilizar los [informes de uso de CloudFront](https://console.aws.amazon.com/cloudfront/v4/home#/usage) (en la consola de CloudFront) y las [métricas de CloudFront](viewing-cloudfront-metrics.md#monitoring-console.distributions) (en las consolas CloudFront y Amazon CloudWatch) que le ayudarán a calcular las solicitudes por segundo.

1. Determine el tamaño normal de una única entrada de registro de acceso en tiempo real.

   En general, un único registro de log es de unos 500 bytes. Un registro grande que incluye todos los campos suele pesar aproximadamente 1KB.

   Si no está seguro de cuál es el tamaño de su registro, puede habilitar los registros en tiempo real con una frecuencia de muestro baja (por ejemplo, 1 %) y luego calcular el promedio de tamaño de registro a través de los datos de supervisión en Kinesis Data Streams (total de bytes entrantes dividido por el número total de registros).

1. En la [página de precios de Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/), en Calculadora de precios de AWS, elija **Crear el presupuesto personalizado ahora**.
   + En la calculadora, introduzca el número de solicitudes (registros) por segundo.
   + Introduzca el tamaño medio de registro de un único registro.
   + Elija **Mostrar cálculos**.

   La calculadora de precios le muestra el número de particiones que necesita y el costo estimado.

### rol de IAM
<a name="real-time-logs-IAM"></a>

El rol de AWS Identity and Access Management (IAM) que concede permiso de CloudFront para entregar registros de acceso en tiempo real al flujo de datos de Kinesis Data Stream.

Cuando se crea una configuración de registro de acceso en tiempo real con la consola de CloudFront, se puede elegir **Crear un nuevo rol de servicio** para permitir a la consola crear el rol de IAM automáticamente.

Cuando se crea una configuración de registro de acceso en tiempo real con AWS CloudFormation o la API de CloudFront (AWS CLI o SDK), uno mismo debe crear el rol de IAM y proporcionar el ARN del rol. Para crear el rol de IAM usted mismo, utilice las siguientes políticas.

**Política de confianza del rol de IAM**

Para utilizar la siguiente política de confianza de roles de IAM, sustituya *111122223333* por el número de Cuenta de AWS. El elemento `Condition` de esta política ayuda a prevenir el [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) porque CloudFront solo puede asumir este rol en nombre de una distribución de la Cuenta de AWS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

**Política de permisos del rol de IAM para una secuencia de datos no cifrada**

Para utilizar la siguiente política, reemplace *arn:aws:kinesis:us-east-2:123456789012:stream/StreamName* por el ARN de su Kinesis Data Streams.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        }
    ]
}
```

------

**Política de permisos del rol de IAM para una secuencia de datos cifrada**

Para utilizar la siguiente política, reemplace *arn:aws:kines:us-east- 2:123456789012:Stream/StreamName* por el ARN de su Kinesis Data Streams y *arn:aws:kms:us-east- 2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486* por el ARN de su AWS KMS key.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486"
            ]
        }
    ]
}
```

------

****  

## Creación de un consumidor de Kinesis Data Streams
<a name="real-time-log-consumer-guidance"></a>

Para leer y analizar los registros de acceso en tiempo real, se crea o utiliza un *consumidor* de Kinesis Data Streams. Cuando se crea un consumidor para registros en tiempo real de CloudFront, es importante saber que los campos de cada entrada de registro de acceso en tiempo real siempre se envían en el mismo orden, como se muestra en la sección [Fields](#real-time-logs-fields). Asegúrese de crear su consumidor para acomodar este pedido fijo.

Por ejemplo, considere una configuración de registro de acceso en tiempo real que incluya solo estos tres campos: `time-to-first-byte`, `sc-status` y `c-country`. En este escenario, el último campo, `c-country`, siempre es el campo número 3 en cada registro de log. Sin embargo, si posteriormente agrega campos a la configuración de registro de acceso en tiempo real, la ubicación de cada campo en un registro puede cambiar.

Por ejemplo, si agrega los campos `sc-bytes` y `time-taken` a la configuración de registro de acceso en tiempo real, estos campos se insertan en cada entrada de registro según el orden mostrado en la sección [Fields](#real-time-logs-fields). El orden resultante de los cinco campos es `time-to-first-byte`, `sc-status`, `sc-bytes`, `time-taken` y `c-country`. El campo `c-country` era originalmente el campo número 3, pero ahora es el campo número 5. Asegúrese de que la aplicación de consumidor puede gestionar campos que cambian de posición en una entrada de registro, en caso de que agregue campos a su configuración de registro de acceso en tiempo real.

## Resolución de problemas de registros de acceso en tiempo real
<a name="real-time-log-troubleshooting"></a>

Después de crear una configuración de registro de acceso en tiempo real, es posible que encuentre que no se envían registros (o no todos los registros) a Kinesis Data Streams. En este caso, primero debe comprobar que la distribución de CloudFront recibe solicitudes de lector. Si es así, puede comprobar la siguiente configuración para continuar la solución de problemas.

**Permisos de roles de IAM**  
Para enviar entradas de registros de acceso en tiempo real al flujo de datos de Kinesis, CloudFront utiliza el rol de IAM de la configuración de registro de acceso en tiempo real. Asegúrese de que la política de confianza de roles y la política de permisos de roles coinciden con las políticas mostradas en [rol de IAM](#real-time-logs-IAM).

**Limitación controlada de Kinesis Data Streams**  
Si CloudFront escribe entradas de registros de acceso en tiempo real en el flujo de datos de Kinesis más rápido de lo que el flujo puede manejar, es posible que Kinesis Data Streams limite las solicitudes de CloudFront. En este caso, puede aumentar el número de particiones en la secuencia de datos de Kinesis. Cada partición puede admitir escrituras de hasta 1000 registros por segundo, hasta un máximo de escritura de datos de 1 MB por segundo.

# Registros de funciones perimetrales
<a name="edge-functions-logs"></a>

Puede utilizar registros de Amazon CloudWatch para obtener registros de las funciones periféricas de [Lambda@Edge](lambda-at-the-edge.md) y [CloudFront Functions](cloudfront-functions.md). Puede acceder a los registros mediante la consola de CloudWatch o la API de CloudWatch Logs.

**importante**  
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront envía registros de funciones perimetrales en la medida en que sea posible. La entrada de registro de una solicitud determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se omite una entrada de registro de los registros de funciones perimetrales, la cantidad de entradas de los registros de funciones perimetrales no coincidirá con el uso que aparece en los informes de facturación y de uso de AWS.

**Topics**
+ [Registros de Lambda@Edge](#lambda-at-edge-logs)
+ [Registros de CloudFront Functions](#cloudfront-function-logs)

## Registros de Lambda@Edge
<a name="lambda-at-edge-logs"></a>

Lambda@Edge envía automáticamente registros de funciones a CloudWatch Logs, donde crea flujos de registro en las Regiones de AWS donde se invocan las funciones. Al crear o modificar una función en AWS Lambda, puede utilizar el nombre predeterminado del grupo de registro de CloudWatch o personalizarlo.
+ El nombre predeterminado del grupo de registro es `/aws/lambda/<FunctionName>` donde `<FunctionName>` es el nombre que especificó al crear la función. Al enviar registros a CloudWatch, Lambda@Edge agregará automáticamente el prefijo `us-east-1` al nombre de la función, de modo que el nombre del grupo de registro sea `/aws/lambda/us-east-1.<FunctionName>`. Este prefijo corresponde a la Región de AWS donde se creó la función. Este prefijo sigue formando parte del nombre del grupo de registro, incluso en otras regiones en las que se invoque la función. 
+ Si especifica un nombre de grupo de registro personalizado, como `/MyLogGroup`, Lambda@Edge no agregará el prefijo de región. El nombre del grupo de registros permanece igual en todas las demás regiones en las que se invoca la función.

**nota**  
Si crea un grupo de registro personalizado y especifica el mismo nombre que el predeterminado `/aws/lambda/<FunctionName>`, Lambda@Edge agrega el prefijo `us-east-1` al nombre de la función.

Además de personalizar el nombre del grupo de registros, las funciones de Lambda @Edge admiten los formatos de registro JSON y de texto sin formato, y el filtrado a nivel de registro. Para obtener más información, consulte [Configuración de controles de registro avanzados para la función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-advanced.html) en la *Guía para desarrolladores de AWS Lambda*.

**nota**  
Lambda@Edge limita los registros en función del volumen de solicitudes y el tamaño de los registros.

Debe revisar los archivos de registro de CloudWatch en la región correcta de para ver sus archivos de registro de la función Lambda@Edge. Para ver las regiones donde la función de Lambda@Edge se está ejecutando, consulte los gráficos de métricas para la función en la consola de CloudFront. Las métricas se muestran para cada región de . En la misma página, puede elegir una región y, a continuación, consultar los archivos de registro para dicha región para investigar problemas.

Para obtener más información acerca cómo utilizar CloudWatch Logs con las funciones de Lambda@Edge, consulte los temas siguientes:
+ Para empezar, puede usar los gráficos proporcionada en la sección **Monitoring (Monitoreo)** de la consola de CloudFront, consulte [Supervisión de métricas de CloudFront con Amazon CloudWatch](monitoring-using-cloudwatch.md).
+ Para obtener información acerca de los permisos necesarios para enviar datos a CloudWatch Logs, consulte [Configuración de permisos y roles de IAM para Lambda@Edge](lambda-edge-permissions.md).
+ Para obtener información sobre cómo agregar el registro a una función Lambda@Edge, consulte [Registro de funciones AWS Lambda en Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-logging.html) o [Registro de funciones AWS Lambda en Python](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html) en la *Guía para desarrolladores de AWS Lambda*.
+ Para obtener información acerca de las cuotas de CloudWatch Logs (anteriormente conocidas como límites), consulte [Cuotas de CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) en la *Guía del usuario de Amazon CloudWatch Logs*.

## Registros de CloudFront Functions
<a name="cloudfront-function-logs"></a>

Si el código de una función de CloudFront contiene instrucciones `console.log()`, CloudFront Functions envía automáticamente estas líneas de registro a CloudWatch Logs. Si no hay instrucciones `console.log()`, no se envía nada a CloudWatch Logs.

CloudFront Functions siempre crea flujos de registro en la región EE. UU. Este (Norte de Virginia) (`us-east-1`), independientemente de la ubicación de borde que ejecuta la función. El nombre del flujo de registro tiene el formato `YYYY/M/D/UUID`.

El nombre del grupo de registro utiliza el siguiente formato:
+ Para CloudFront Functions por comportamiento de la caché, el formato es `/aws/cloudfront/function/<FunctionName>`
+ Para CloudFront Functions por distribución (funciones de conexión), el formato es `/aws/cloudfront/connection-function/<FunctionName>`

`<FunctionName>` es el nombre que le dio a la función cuando la creó.

**Example Solicitudes de espectadores**  
A continuación, se muestra un mensaje de registro de ejemplo enviado a CloudWatch Logs. Cada línea comienza con un ID que identifica de forma única una solicitud de CloudFront. El mensaje comienza con una línea `START` que incluye el ID de distribución de CloudFront y termina con una línea `END`. Entre las líneas `START` y `END`, se encuentran las líneas de registro que las instrucciones `console.log()` crearon en la función.  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**Example Solicitudes de conexión**  
A continuación, se muestra un mensaje de registro de ejemplo enviado a CloudWatch Logs. Cada línea comienza con un ID que identifica de forma única una solicitud de CloudFront. El mensaje comienza con una línea `START` que incluye el ID de distribución de CloudFront y termina con una línea `END`. Entre las líneas `START` y `END`, se encuentran las líneas de registro que las instrucciones `console.log()` crearon en la función.  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADA123
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== 1.2.3.4
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**nota**  
CloudFront Functions envía registros a CloudWatch solo para las funciones de la etapa `LIVE` que se ejecutan en respuesta a solicitudes y respuestas de producción. Al [probar una función](test-function.md), CloudFront no envía ningún registro a CloudWatch. La salida de prueba contiene información sobre errores, uso de cómputo y registros de funciones (instrucciones `console.log()`), pero esta información no se envía a CloudWatch.

CloudFront Functions utiliza un [rol vinculado a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) de AWS Identity and Access Management (IAM) para enviar registros a CloudWatch Logs en su cuenta. Un rol vinculado a servicios es un rol de IAM que está vinculado directamente a un Servicio de AWS. El servicio predefine los roles vinculados a servicios, que incluyen todos los permisos que el servicio requiere para llamar a otros Servicios de AWS para usted. CloudFront Functions usa el rol vinculado a servicios **AWSServiceRoleForCloudFrontLogger**. Para obtener más información sobre este rol, consulte [Roles vinculados a servicios para Lambda@Edge](lambda-edge-permissions.md#using-service-linked-roles-lambda-edge) (Lambda@Edge utiliza el mismo rol vinculado a servicios).

Cuando una función produce un error de validación o de ejecución, la información se registra en los [registros estándar](AccessLogs.md) y en los [registros en tiempo real](real-time-logs.md). Para obtener información específica sobre el error, consulte los campos `x-edge-result-type`, `x-edge-response-result-type` y `x-edge-detailed-result-type`.

# Registro de llamadas a la API de Amazon CloudFront con AWS CloudTrail
<a name="logging_using_cloudtrail"></a>

CloudFront se integra con [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html), un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un Servicio de AWS. CloudTrail captura como eventos todas las llamadas a la API de CloudFront. Las llamadas capturadas incluyen las llamadas realizadas desde la consola de CloudFront, así como las llamadas de código realizadas a las operaciones de API de CloudFront. Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a CloudFront, la dirección IP desde la que se realizó, cuándo se realizó y detalles adicionales.

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario le ayuda a determinar lo siguiente:
+ Si la solicitud se realizó con las credenciales del usuario raíz o del usuario.
+ Si la solicitud se realizó en nombre de un usuario de IAM Identity Center.
+ Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
+ Si la solicitud la realizó otro Servicio de AWS.

CloudTrail está activado en la Cuenta de AWS cuando usted crea la cuenta y tiene acceso automático al **Historial de eventos** de CloudTrail. El **Historial de eventos** de CloudTrail proporciona un registro visible e inmutable, que se puede buscar y descargar, de los últimos 90 días de eventos de gestión registrados en una Región de AWS. Para obtener más información, consulte [Trabajar con el historial de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) en la *Guía del usuario de AWS CloudTrail*. No se cobran cargos de CloudTrail por ver el **Historial de eventos**.

Para mantener un registro permanente de los eventos en su Cuenta de AWS más allá de los 90 días, cree un registro de seguimiento o un almacén de datos de eventos de [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

**Registros de seguimiento de CloudTrail**  
Un *registro de seguimiento* permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. Todos los registros de seguimiento que cree con la Consola de administración de AWS son multirregionales. Puede crear un registro de seguimiento de una sola región o multirregionales mediante la AWS CLI. Se recomienda crear un registro de seguimiento multirregional, ya que registra actividad en todas las Regiones de AWS de su cuenta. Si crea un registro de seguimiento de una sola región, solo podrá ver los eventos registrados en la Región de AWS del registro de seguimiento. Para obtener más información acerca de los registros de seguimiento, consulte [Creación de un registro de seguimiento para su Cuenta de AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) y [Creación de un registro de seguimiento para una organización](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html) en la *Guía del usuario de AWS CloudTrail*.  
Puede crear un registro de seguimiento para enviar una copia de los eventos de administración en curso en su bucket de Amazon S3 sin costo alguno desde CloudTrail; sin embargo, hay cargos por almacenamiento en Amazon S3. Para obtener más información sobre los precios de CloudTrail, consulte [Precios de AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/). Para obtener información acerca de los precios de Amazon S3, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**Almacenes de datos de eventos de CloudTrail Lake**  
*CloudTrail Lake* le permite ejecutar consultas basadas en SQL sobre los eventos. CloudTrail Lake convierte los eventos existentes en formato JSON basado en filas al formato [ORC de Apache](https://orc.apache.org/). ORC es un formato de almacenamiento en columnas optimizado para una recuperación rápida de datos. Los eventos se agregan en *almacenes de datos de eventos*, que son recopilaciones inmutables de eventos en función de criterios que se seleccionan aplicando [selectores de eventos avanzados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors). Los selectores que se aplican a un almacén de datos de eventos controlan los eventos que perduran y están disponibles para la consulta. Para obtener más información acerca de CloudTrail Lake, consulte [Trabajar con AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) en la *Guía del usuario de AWS CloudTrail*.  
Los almacenes de datos de eventos de CloudTrail Lake y las consultas generan costos adicionales. Cuando crea un almacén de datos de eventos, debe elegir la [opción de precios](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option) que desee utilizar para él. La opción de precios determina el costo de la incorporación y el almacenamiento de los eventos, así como el período de retención predeterminado y máximo del almacén de datos de eventos. Para obtener más información sobre los precios de CloudTrail, consulte [Precios de AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

**nota**  
CloudFront es un servicio global. CloudTrail registra eventos para CloudFront en la región Este de EE. UU. (Norte de Virginia). Para obtener más información, consulte [Eventos de servicios globales](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-global-service-events) en la *Guía del usuario de AWS CloudTrail*.  
Si utiliza credenciales de seguridad temporales mediante AWS Security Token Service, las llamadas a puntos de conexión regionales, como `us-west-2`, se registran en CloudTrail en la región correspondiente.   
Para obtener más información sobre los puntos de conexión de CloudFront, consulte [CloudFront endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/cf_region.html) en *Referencia general de AWS*.

## Eventos de datos de CloudFront en CloudTrail
<a name="cloudtrail-data-events"></a>

Los [eventos de datos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events) proporcionan información sobre las operaciones de recursos realizadas en un recurso (por ejemplo, leer o escribir en una distribución de CloudFront) o dentro de él. Se denominan también operaciones del plano de datos. Los eventos de datos suelen ser actividades de gran volumen. De forma predeterminada, CloudTrail no registra eventos de datos. El **Historial de eventos** de CloudTrail no registra los eventos de datos.

Se aplican cargos adicionales a los eventos de datos. Para obtener más información sobre los precios de CloudTrail, consulte [Precios de AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

Puede registrar eventos de datos para los tipos de recursos de CloudFront mediante la consola de CloudTrail, la AWS CLI o las operaciones de la API de CloudTrail. Para obtener más información sobre cómo registrar los eventos de datos, consulte [Registro de eventos de datos con la Consola de administración de AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console) y [Registro de eventos de datos con la AWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI) en la *Guía del usuario de AWS CloudTrail*.

En la siguiente tabla se muestra los tipos de recursos de CloudFront para los que puede registrar eventos de datos. La columna **Tipo de evento de datos (consola)** muestra el valor que se debe elegir en la lista de **tipos de eventos de datos** de la consola de CloudTrail. La columna **resources.type value** muestra el valor de `resources.type`, que especificaría al configurar los selectores de eventos avanzados mediante la AWS CLI o las API de CloudTrail. La columna **API de datos registradas en CloudTrail** muestra las llamadas a la API registradas en CloudTrail para el tipo de recurso. 


| Tipo de evento de datos (consola) | resources.type value | API de datos registradas en CloudTrail | 
| --- | --- | --- | 
| CloudFront KeyValueStore |  AWS::CloudFront::KeyValueStore  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudFront/latest/DeveloperGuide/logging_using_cloudtrail.html)  | 

Puede configurar selectores de eventos avanzados para filtrar según los campos `eventName`, `readOnly` y `resources.ARN` y así registrar solo los eventos que son importantes para usted. Para obtener más información acerca de estos campos, consulte [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html) en la *Referencia de la API de AWS CloudTrail*.

## Eventos de administración de CloudFront en CloudTrail
<a name="cloudtrail-management-events"></a>

Los [eventos de administración](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events) proporcionan información sobre las operaciones de administración que se realizan en los recursos de su Cuenta de AWS. Se denominan también operaciones del plano de control. CloudTrail registra los eventos de administración de forma predeterminada.

Amazon CloudFront registra todas las operaciones de plano de control de CloudFront como eventos de administración. Para obtener una lista de las operaciones de plano de control de Amazon CloudFront que CloudFront registra en CloudTrail, consulte la [Referencia de la API de Amazon CloudFront](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_Operations_Amazon_CloudFront.html).

## Ejemplos de eventos de CloudFront
<a name="cloudtrail-event-examples"></a>

Un evento representa una única solicitud de cualquier origen e incluye información sobre la operación de la API solicitada, la fecha y la hora de la operación o los parámetros de la solicitud, entre otras cosas. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas a la API públicas, por lo que los eventos no aparecen en un orden específico.

**Contents**
+ [Ejemplo:: UpdateDistribution](#example-cloudfront-service-cloudtrail-log)
+ [Ejemplo:: UpdateKeys](#example-cloudfront-kvs-cloudtrail-log)

### Ejemplo:: UpdateDistribution
<a name="example-cloudfront-service-cloudtrail-log"></a>

En el ejemplo que sigue se muestra un evento de CloudTrail que ilustra la operación [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).

Para las llamadas a la API de CloudFront, `eventSource` es `cloudfront.amazonaws.com`.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-02-02T19:23:50Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2024-02-02T19:26:01Z",
    "eventSource": "cloudfront.amazonaws.com",
    "eventName": "UpdateDistribution",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.94.133.137",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "requestParameters": {
        "distributionConfig": {
            "defaultRootObject": "",
            "aliases": {
                "quantity": 3,
                "items": [
                    "alejandro_rosalez.awsps.myinstance.com",
                    "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "*.alejandro_rosalez.awsps.myinstance.com"
                ]
            },
            "cacheBehaviors": {
                "quantity": 0,
                "items": []
            },
            "httpVersion": "http2and3",
            "originGroups": {
                "quantity": 0,
                "items": []
            },
            "viewerCertificate": {
                "minimumProtocolVersion": "TLSv1.2_2021",
                "cloudFrontDefaultCertificate": false,
                "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                "sSLSupportMethod": "sni-only"
            },
            "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
            "customErrorResponses": {
                "quantity": 0,
                "items": []
            },
            "logging": {
                "includeCookies": false,
                "prefix": "",
                "enabled": false,
                "bucket": ""
            },
            "priceClass": "PriceClass_All",
            "restrictions": {
                "geoRestriction": {
                    "restrictionType": "none",
                    "quantity": 0,
                    "items": []
                }
            },
            "isIPV6Enabled": true,
            "callerReference": "1578329170895",
            "continuousDeploymentPolicyId": "",
            "enabled": true,
            "defaultCacheBehavior": {
                "targetOriginId": "d111111abcdef8",
                "minTTL": 0,
                "compress": false,
                "maxTTL": 31536000,
                "functionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "trustedKeyGroups": {
                    "quantity": 0,
                    "items": [],
                    "enabled": false
                },
                "smoothStreaming": false,
                "fieldLevelEncryptionId": "",
                "defaultTTL": 86400,
                "lambdaFunctionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "viewerProtocolPolicy": "redirect-to-https",
                "forwardedValues": {
                    "cookies": {"forward": "none"},
                    "queryStringCacheKeys": {
                        "quantity": 0,
                        "items": []
                    },
                    "queryString": false,
                    "headers": {
                        "quantity": 1,
                        "items": ["*"]
                    }
                },
                "trustedSigners": {
                    "items": [],
                    "enabled": false,
                    "quantity": 0
                },
                "allowedMethods": {
                    "quantity": 2,
                    "items": [
                        "HEAD",
                        "GET"
                    ],
                    "cachedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ]
                    }
                }
            },
            "staging": false,
            "origins": {
                "quantity": 1,
                "items": [
                    {
                        "originPath": "",
                        "connectionTimeout": 10,
                        "customOriginConfig": {
                            "originReadTimeout": 30,
                            "hTTPSPort": 443,
                            "originProtocolPolicy": "https-only",
                            "originKeepaliveTimeout": 5,
                            "hTTPPort": 80,
                            "originSslProtocols": {
                                "quantity": 3,
                                "items": [
                                    "TLSv1",
                                    "TLSv1.1",
                                    "TLSv1.2"
                                ]
                            }
                        },
                        "id": "d111111abcdef8",
                        "domainName": "d111111abcdef8.cloudfront.net",
                        "connectionAttempts": 3,
                        "customHeaders": {
                            "quantity": 0,
                            "items": []
                        },
                        "originShield": {"enabled": false},
                        "originAccessControlId": ""
                    }
                ]
            },
            "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
        },
        "id": "EDFDVBD6EXAMPLE",
        "ifMatch": "E1RTLUR9YES76O"
    },
    "responseElements": {
        "distribution": {
            "activeTrustedSigners": {
                "quantity": 0,
                "enabled": false
            },
            "id": "EDFDVBD6EXAMPLE",
            "domainName": "d111111abcdef8.cloudfront.net",
            "distributionConfig": {
                "defaultRootObject": "",
                "aliases": {
                    "quantity": 3,
                    "items": [
                        "alejandro_rosalez.awsps.myinstance.com",
                        "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                        "*.alejandro_rosalez.awsps.myinstance.com"
                    ]
                },
                "cacheBehaviors": {"quantity": 0},
                "httpVersion": "http2and3",
                "originGroups": {"quantity": 0},
                "viewerCertificate": {
                    "minimumProtocolVersion": "TLSv1.2_2021",
                    "cloudFrontDefaultCertificate": false,
                    "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                    "sSLSupportMethod": "sni-only",
                    "certificateSource": "acm",
                    "certificate": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
                },
                "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
                "customErrorResponses": {"quantity": 0},
                "logging": {
                    "includeCookies": false,
                    "prefix": "",
                    "enabled": false,
                    "bucket": ""
                },
                "priceClass": "PriceClass_All",
                "restrictions": {
                    "geoRestriction": {
                        "restrictionType": "none",
                        "quantity": 0
                    }
                },
                "isIPV6Enabled": true,
                "callerReference": "1578329170895",
                "continuousDeploymentPolicyId": "",
                "enabled": true,
                "defaultCacheBehavior": {
                    "targetOriginId": "d111111abcdef8",
                    "minTTL": 0,
                    "compress": false,
                    "maxTTL": 31536000,
                    "functionAssociations": {"quantity": 0},
                    "trustedKeyGroups": {
                        "quantity": 0,
                        "enabled": false
                    },
                    "smoothStreaming": false,
                    "fieldLevelEncryptionId": "",
                    "defaultTTL": 86400,
                    "lambdaFunctionAssociations": {"quantity": 0},
                    "viewerProtocolPolicy": "redirect-to-https",
                    "forwardedValues": {
                        "cookies": {"forward": "none"},
                        "queryStringCacheKeys": {"quantity": 0},
                        "queryString": false,
                        "headers": {
                            "quantity": 1,
                            "items": ["*"]
                        }
                    },
                    "trustedSigners": {
                        "enabled": false,
                        "quantity": 0
                    },
                    "allowedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ],
                        "cachedMethods": {
                            "quantity": 2,
                            "items": [
                                "HEAD",
                                "GET"
                            ]
                        }
                    }
                },
                "staging": false,
                "origins": {
                    "quantity": 1,
                    "items": [
                        {
                            "originPath": "",
                            "connectionTimeout": 10,
                            "customOriginConfig": {
                                "originReadTimeout": 30,
                                "hTTPSPort": 443,
                                "originProtocolPolicy": "https-only",
                                "originKeepaliveTimeout": 5,
                                "hTTPPort": 80,
                                "originSslProtocols": {
                                    "quantity": 3,
                                    "items": [
                                        "TLSv1",
                                        "TLSv1.1",
                                        "TLSv1.2"
                                    ]
                                }
                            },
                            "id": "d111111abcdef8",
                            "domainName": "d111111abcdef8.cloudfront.net",
                            "connectionAttempts": 3,
                            "customHeaders": {"quantity": 0},
                            "originShield": {"enabled": false},
                            "originAccessControlId": ""
                        }
                    ]
                },
                "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
            },
            "aliasICPRecordals": [
                {
                    "cNAME": "alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "*.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                }
            ],
            "aRN": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE",
            "status": "InProgress",
            "lastModifiedTime": "Feb 2, 2024 7:26:01 PM",
            "activeTrustedKeyGroups": {
                "enabled": false,
                "quantity": 0
            },
            "inProgressInvalidationBatches": 0
        },
        "eTag": "E1YHBLAB2BJY1G"
    },
    "requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
    "eventID": "5ab02562-0fc5-43d0-b7b6-90293example",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "apiVersion": "2020_05_31",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "cloudfront.amazonaws.com"
    },
    "sessionCredentialFromConsole": "true"
}
```

### Ejemplo:: UpdateKeys
<a name="example-cloudfront-kvs-cloudtrail-log"></a>

En el ejemplo que sigue se muestra un evento de CloudTrail que ilustra la operación [UpdateKeys](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_UpdateKeys.html).

Para las llamadas a la API de CloudFront KeyValueStore, `eventSource` es `edgekeyvaluestore.amazonaws.com` en vez de `cloudfront.amazonaws.com`.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2023-11-01T23:41:14Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-01T23:41:28Z",
    "eventSource": "edgekeyvaluestore.amazonaws.com",
    "eventName": "UpdateKeys",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "3.235.183.252",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36,
    "requestParameters": {
        "kvsARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "ifMatch": "KV3O6B1CX531EBP",
        "deletes": [
            {"key": "key1"}
        ]
    },
    "responseElements": {
        "itemCount": 0,
        "totalSizeInBytes": 0,
        "eTag": "KVDC9VEVZ71ZGO"
    },
    "requestID": "5ccf104c-acce-4ea1-b7fc-73e33example",
    "eventID": "a0b1b5c7-906c-439d-9925-90293example",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::CloudFront::KeyValueStore",
            "ARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "111122223333.cloudfront-kvs.global.api.aws"
    }
}
```

Para obtener información sobre el contenido de los registros de CloudTrail, consulte [Contenido de los registros de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) en la *Guía del usuario de AWS CloudTrail*.