

# Registro de solicitudes con registro de acceso al servidor
<a name="ServerLogs"></a>

El registro de acceso al servidor brinda registros detallados para las solicitudes realizadas a un bucket. Los registros de acceso al servidor resultan útiles para muchas aplicaciones. Por ejemplo, la información del registro de acceso puede ser útil en auditorías de acceso y seguridad. Esta información también puede ayudarle a conocer mejor su base de clientes y entender su factura de Amazon S3.

**nota**  
Los registros de acceso del servidor no registran información relacionada con errores de redirección a regiones erróneas para las regiones lanzadas después del 20 de marzo de 2019. Los errores de redirección de región incorrecta se producen cuando se realiza una solicitud de un objeto o bucket fuera de la región en la que existe el bucket. 

## ¿Cómo habilito la entrega de registros?
<a name="server-access-logging-overview"></a>

Para habilitar la entrega de registros, realice los siguientes pasos básicos. Para obtener más información, consulte [Habilitación del registro de acceso al servidor de Amazon S3](enable-server-access-logging.md).

1. **Indique el nombre del bucket de destino** (también llamado *bucket objetivo*). Este bucket es donde desea que Amazon S3 guarde los registros de acceso como objetos. Tanto los buckets de origen como de destino deben estar en la misma Región de AWS y ser propiedad de la misma cuenta. El bucket de destino no debe tener una configuración de período de retención predeterminada de Bloqueo de objetos de S3. El bucket de destino tampoco debe tener activado Pago por solicitante.

   Puede enviar los registros a cualquier bucket de su propiedad que se encuentre en la misma región que el bucket de origen, incluido el propio bucket de origen. Sin embargo, para una administración de registros más sencilla, le recomendamos que guarde los registros de acceso en un bucket distinto. 

   Cuando los buckets de origen y destino son el mismo, se crean registros adicionales para los registros que se escriben en el bucket, lo que crear un bucle infinito de registros. No recomendamos hacer esto porque podría dar lugar a un pequeño aumento en la facturación de almacenamiento. Además, los registros adicionales sobre registros podrían hacer que resulte más difícil encontrar el registro que busca. 

   Si elige guardar los registros de acceso en el bucket de origen, recomendamos que especifique un prefijo de destino para todas las claves de objeto del registro. Al especificar un prefijo, todos los nombres de los objetos de registro comienzan con una cadena común, lo que facilita la identificación de los objetos de registro. 

1. **(Opcional) Asigne un prefijo de destino a todas las claves de objeto de registro de Amazon S.** El prefijo de destino** facilita la localización de los objetos de registro. Por ejemplo, si especifica el valor del prefijo `logs/`, cada objeto de registro que crea Amazon S3 comienza con el prefijo `logs/` en su clave, por ejemplo:

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```

   Si especifica el valor del prefijo `logs`, el objeto de registro aparece de la siguiente manera:

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

   Los [prefijos](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) también son útiles para distinguir entre los buckets de origen cuando varios buckets registran en el mismo bucket de destino.

   Este prefijo puede ser útil también cuando elimina los registros. Por ejemplo, puede establecer una regla de configuración de ciclo de vida para que Amazon S3 elimine los objetos con un prefijo específico. Para obtener más información, consulte [Eliminación de archivos de registro de Amazon S3](deleting-log-files-lifecycle.md).

1. **(Opcional) Establezca permisos **para que otros puedan obtener acceso a los registros generados.** De forma predeterminada, solo el propietario del bucket siempre tiene acceso completo a los objetos de registro. Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership para desactivar las listas de control de acceso (ACL), no podrá conceder permisos en las concesiones de destino **que utilizan ACL. Sin embargo, puede actualizar la política de bucket para el bucket de destino conceda acceso a otros. Para obtener más información, consulte [Administración de identidades y accesos para Amazon S3](security-iam.md) y [Permisos para entrega de registros](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

1. **(Opcional) Establezca un formato de clave de objeto de registro para los archivos de registro.** Dispone de dos opciones para el formato de clave de objeto de registro (también conocido como *formato de clave de objeto de destino*): 
   + **Partición no basada en fechas**: este es el formato de clave del objeto de registro original. Si elige este formato, el formato de clave del archivo de registro aparece de la siguiente manera: 

     ```
     [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Por ejemplo, si especifica `logs/` como prefijo, los objetos de registro se nombran de la siguiente manera: 

     ```
     logs/2013-11-01-21-32-16-E568B2907131C0C0
     ```
   + **Partición basada en fechas:** si elige una partición basada en fechas, puede elegir la hora del evento o la hora de entrega del archivo de registro como origen de fecha que se utiliza en el formato de registro. Este formato facilita la consulta de los registros.

     Si elige la partición basada en fechas, el formato de clave del archivo de registro aparece de la siguiente manera: 

     ```
     [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Por ejemplo, si especifica `logs/` como prefijo de destino, los objetos de registro se nombran de la siguiente manera:

     ```
     logs/123456789012/us-west-2/amzn-s3-demo-source-bucket/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0
     ```

     En cuanto a la hora de entrega, la hora indicada en los nombres de los archivos de registro corresponde a la hora de entrega de los archivos de registro. 

     Para la entrega de la hora, el año, el mes y el día corresponden al día en que se produjo el evento, y la hora, los minutos y los segundos se establecen en `00` en la clave. Los registros que se entregan en estos archivos de registro son solo para un día específico. 

   

   Si configura los registros mediante la AWS Command Line Interface (AWS CLI), los SDK de AWS o la API de REST de Amazon S3, utilice `TargetObjectKeyFormat` para especificar el formato de la clave del objeto de registro. Para especificar una partición no basada en fechas, utilice `SimplePrefix`. Para especificar una partición basada en datos, utilice `PartitionedPrefix`. Si usa `PartitionedPrefix`, utilice `PartitionDateSource` para especificar `EventTime` o `DeliveryTime`.

   Para `SimplePrefix`, el formato de clave del archivo de registro aparece de la siguiente manera:

   ```
   [TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

   En el caso de `PartitionedPrefix` con la hora del evento o la hora de entrega, el formato de clave del archivo de registro es el siguiente:

   ```
   [TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

## Formato de clave de objeto de registro
<a name="server-log-keyname-format"></a>

Amazon S3 utiliza los siguientes formatos de clave de objeto para los objetos de registro que carga en el bucket de destino:
+ **Partición no basada en fechas**: este es el formato de clave del objeto de registro original. Si elige este formato, el formato de clave del archivo de registro aparece de la siguiente manera: 

  ```
  [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```
+ **Partición basada en fechas:** si elige una partición basada en fechas, puede elegir la hora del evento o la hora de entrega del archivo de registro como origen de fecha que se utiliza en el formato de registro. Este formato facilita la consulta de los registros.

  Si elige la partición basada en fechas, el formato de clave del archivo de registro aparece de la siguiente manera: 

  ```
  [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```

En la clave del objeto de registro, `YYYY`, `MM`, `DD`, `hh`, `mm` y `ss` son los dígitos del año, el mes, el día, la hora, los minutos y los segundos (respectivamente). Las fechas y horas se muestran en tiempo universal coordinado (UTC). 

Un archivo de registro enviado en un momento específico puede contener registros escritos en cualquier momento antes de ese momento. No hay forma de saber si se enviaron o no todas las entradas de registro para un cierto intervalo de tiempo. 

El componente `UniqueString` de la clave permite impedir que se sobrescriban los archivos. No tiene ningún significado y el software de procesamiento de archivos de registro debería omitirlo. 

## ¿Cómo se envían los registros?
<a name="how-logs-delivered"></a>

Amazon S3 recopila periódicamente entradas de registro de acceso, consolida los registros en archivos de registro y luego carga los archivos de registro en su bucket de destino como objetos de registro. Si habilita los registros en varios buckets de origen que identifican el mismo bucket de destino, el bucket de destino tendrá registros de acceso para todos esos buckets de origen. No obstante, cada objeto de registro informará entradas de registro de acceso para un bucket de origen específico. 

Amazon S3 utiliza una cuenta especial de entrega de registros para escribir registros de acceso al servidor. Estos escritos están sujetos a las restricciones de control de acceso habituales. Le recomendamos que actualice la política de bucket en el bucket de destino para conceder acceso a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`) para la entrega de registros de acceso. También puede conceder acceso para la entrega de registros de acceso al grupo de entrega de registros de S3 a través de la lista de control de acceso (ACL) del bucket. Sin embargo, no se recomienda conceder acceso al grupo de entrega de registros de S3 mediante la ACL de su bucket. 

Cuando habilita el registro de acceso al servidor y concede acceso para la entrega de registros de acceso a través de la política de bucket de destino, debe actualizar la política para permitir acceso `s3:PutObject` para la entidad principal del servicio de registro. Si utiliza la consola de Amazon S3 para habilitar los registros de acceso al servidor, la consola actualiza automáticamente la política del bucket de destino para conceder estos permisos a la entidad principal del servicio de registro. Para obtener más información acerca de cómo conceder permisos para la entrega de registros de acceso al servidor, consulte [Permisos para entrega de registros](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

**nota**  
S3 no admite la entrega de registros de CloudTrail ni de registros de acceso al servidor al solicitante ni al propietario del bucket para las solicitudes de puntos de conexión de VPC cuando la política de puntos de conexión de VPC las deniega o para las solicitudes que fallan antes de que la política de VPC se evalúe.

**Configuración de propietario del bucket obligatorio de S3 Object Ownership**  
Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Object Ownership, las ACL se desactivan y ya no afectan a los permisos. Debe actualizar la política del bucket de destino para conceder acceso a la entidad principal del servicio de registro. Para obtener más información acerca de la propiedad de objetos, consulte [Concesión de acceso al grupo de entrega de registros de S3 para el registro de acceso al servidor](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs).

## Envío de archivos de registro de servidor según el mejor esfuerzo
<a name="LogDeliveryBestEffort"></a>

Las entradas de registro de acceso al servidor se envían según el "mejor esfuerzo", es decir, en la medida que sea posible. En la mayoría de las solicitudes de registros para un bucket debidamente configurado se envían archivos de registro. La mayoría de las entradas de registro se envían en el plazo de unas horas después de su registro, pero se pueden entregar con mayor frecuencia. 

No se garantiza que los registros de servidores estén completos ni que lleguen de manera puntual. La entrada de registro de una solicitud determinada puede enviarse mucho después de que la solicitud se haya procesado realmente, y *es probable no se envíe en absoluto*. Es posible que incluso vea una duplicación de una entrada de registro. El objetivo de los registros de servidores es darle una idea de la naturaleza del tráfico al que se enfrenta su bucket. Aunque es poco usual perder o duplicar entradas registros, tenga en cuenta que el registro del servidor no pretende ser un recuento completo de todas las solicitudes.

Debido a la naturaleza de mejor esfuerzo del registro de servidores, sus informes de uso podrían incluir una o varias solicitudes de acceso que no aparecen en un registro de servidor enviado. Puede encontrar estos informes de uso en **Informes de costes y uso** en la consola de Administración de facturación y costos de AWS.

## Los cambios del estado de los registros del bucket surten efecto con el tiempo
<a name="BucketLoggingStatusChanges"></a>

Los cambios del estado de registros de un bucket demoran un tiempo en implementarse efectivamente en el envío de archivos de registro. Por ejemplo, si habilita los registros para un bucket, algunas solicitudes que se realizan a la hora siguiente pueden registrarse, mientras que otras no. Supongamos que cambia el bucket de destino para registros del bucket A al bucket B. Es posible que algunos registros para la siguiente hora se sigan enviando al bucket A, mientras que otros se envíen al nuevo bucket B de destino. En todos los casos, la nueva configuración finalmente se aplica sin que usted tenga que tomar medidas adicionales. 

Para obtener más información acerca de los registros y archivos de registro, consulte las siguientes secciones:

**Topics**
+ [

## ¿Cómo habilito la entrega de registros?
](#server-access-logging-overview)
+ [

## Formato de clave de objeto de registro
](#server-log-keyname-format)
+ [

## ¿Cómo se envían los registros?
](#how-logs-delivered)
+ [

## Envío de archivos de registro de servidor según el mejor esfuerzo
](#LogDeliveryBestEffort)
+ [

## Los cambios del estado de los registros del bucket surten efecto con el tiempo
](#BucketLoggingStatusChanges)
+ [

# Habilitación del registro de acceso al servidor de Amazon S3
](enable-server-access-logging.md)
+ [

# Formato de registro de acceso al servidor de Amazon S3
](LogFormat.md)
+ [

# Eliminación de archivos de registro de Amazon S3
](deleting-log-files-lifecycle.md)
+ [

# Uso de los registros de acceso al servidor de Amazon S3 para identificar solicitudes
](using-s3-access-logs-to-identify-requests.md)
+ [

# Solucionar problemas de registro de acceso al servidor
](troubleshooting-server-access-logging.md)

# Habilitación del registro de acceso al servidor de Amazon S3
<a name="enable-server-access-logging"></a>

El registro de acceso al servidor proporciona el historial detallado de las solicitudes que se realizan a un bucket de Amazon S3. Los registros de acceso al servidor resultan útiles para muchas aplicaciones. Por ejemplo, la información del registro de acceso puede ser útil en auditorías de acceso y seguridad. Esta información también puede ayudarle a conocer mejor su base de clientes y entender su factura de Amazon S3.

De forma predeterminada, Amazon S3 no recopila registros de acceso al servidor. Cuando habilita el registro, Amazon S3 envía los registros de acceso de un bucket de origen a un bucket de destino **que elija. El bucket de destino debe estar en la misma Región de AWS y Cuenta de AWS que el bucket de origen. 

Una entrada de registro de acceso incluye detalles de las solicitudes realizadas a un bucket. Esta información puede incluir el tipo de solicitud, los recursos especificados en la solicitud y la hora y la fecha en que se procesó la solicitud. Para obtener más información acerca de los conceptos básicos de los registros, consulte [Registro de solicitudes con registro de acceso al servidor](ServerLogs.md). 

**importante**  
Habilitar el registro de acceso al servidor en un bucket de Amazon S3 ni incurre en ningún cargo adicional. Sin embargo, los archivos de registro que recibe del sistema acumularán los cargos usuales de almacenamiento. (Puede eliminar los registros en cualquier momento). No contemplamos los cargos de transferencia de datos por la entrega de los archivos de registro, pero sí aplicamos el cargo de la tasa normal de transferencia de datos por obtener acceso a los archivos de registro.
El bucket de destino no debe tener habilitado el registro de acceso al servidor. Puede enviar los registros a cualquier bucket de su propiedad que se encuentre en la misma región que el bucket de origen, incluido el propio bucket de origen. Sin embargo, enviar registros al bucket de origen provocará un bucle infinito de registros, por lo que no se recomienda. Para que la administración de registros sea más sencilla, le recomendamos que guarde los registros de acceso en un bucket distinto. Para obtener más información, consulte [¿Cómo habilito la entrega de registros?](ServerLogs.md#server-access-logging-overview)
Los buckets de S3 con Bloqueo de objetos de S3 habilitado no se pueden utilizar como buckets de destino para los registros de acceso al servidor. Su bucket de destino no debe tener una configuración de periodo de retención predeterminada.
El bucket de destino no debe tener activado Pago por solicitante.

Puede habilitar o desactivar el registro de acceso al servidor mediante la consola de Amazon S3, la API de Amazon S3, AWS Command Line Interface (AWS CLI) o los SDK de AWS. 

## Permisos para entrega de registros
<a name="grant-log-delivery-permissions-general"></a>

Amazon S3 utiliza una cuenta especial de entrega de registros para escribir registros de acceso al servidor. Estos escritos están sujetos a las restricciones de control de acceso habituales. Para la entrega del registro de acceso, debe conceder a la entidad principal del servicio de registro acceso (`logging.s3.amazonaws.com`) a su bucket de destino.

Para conceder permisos a Amazon S3 para la entrega de registros, puede utilizar una política de bucket o listas de control de acceso (ACL) de bucket, según la configuración de S3 Object Ownership del bucket de destino. Sin embargo, le recomendamos que utilice una política de bucket en lugar de ACL. 

**Configuración de propietario del bucket obligatorio de S3 Object Ownership**  
Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Object Ownership, las ACL se desactivan y ya no afectan a los permisos. En ese caso, debe actualizar la política de bucket para el bucket de destino para conceder acceso a la entidad principal del servicio de registro. No puede actualizar la ACL del bucket para conceder acceso al grupo de entrega de registros de S3. Tampoco puede incluir las concesiones de destino** en la configuración de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). 

Para obtener información sobre la migración de las ACL de bucket existentes para la entrega de registros de acceso a una política de bucket, consulte [Concesión de acceso al grupo de entrega de registros de S3 para el registro de acceso al servidor](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Para obtener más información acerca de la propiedad de objetos, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md). Al crear buckets nuevos, las ACL están deshabilitadas de forma predeterminada.

**Concesión de acceso mediante una política de bucket**  
Para conceder acceso mediante la política de bucket en el bucket de destino, actualice la política de bucket para conceder el permiso `s3:PutObject` a la entidad principal del servicio de registro. Si utiliza la consola de Amazon S3 para habilitar los registros de acceso al servidor, la consola actualiza automáticamente la política del bucket en el bucket destino para conceder este permiso a la entidad principal del servicio de registro. Si habilita el registro de acceso al servidor mediante programación, debe actualizar manualmente la política del bucket de destino para conceder acceso a la entidad principal del servicio de registro. 

Para ver un ejemplo de una política de bucket que concede acceso a la entidad principal del servicio de registro, consulte [Concesión de permisos a la entidad principal del servicio de registro mediante una política de bucket](#grant-log-delivery-permissions-bucket-policy).

**Concesión de acceso mediante ACL de bucket**  
También puede utilizar las ACL de bucket para conceder acceso para la entrega de registros de acceso. Agregue una entrada de concesión a la ACL del bucket que concede permisos `WRITE` y `READ_ACP` para el grupo entrega de registros de S3. Sin embargo, no se recomienda conceder acceso al grupo de entrega de registros de S3 mediante la ACL del bucket. Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md). Para obtener información sobre la migración de las ACL de bucket existentes para la entrega de registros de acceso a una política de bucket, consulte [Concesión de acceso al grupo de entrega de registros de S3 para el registro de acceso al servidor](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Para ver un ejemplo de ACL que concede acceso a la entidad principal del servicio de registro, consulte [Concesión de permisos al grupo de entrega de registros mediante una ACL de bucket](#grant-log-delivery-permissions-acl).

### Concesión de permisos a la entidad principal del servicio de registro mediante una política de bucket
<a name="grant-log-delivery-permissions-bucket-policy"></a>

Esta política de bucket de ejemplo concede el permiso `s3:PutObject` a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). Para utilizar esta política de bucket, reemplace `user input placeholders` por su propia información. En la siguiente política, `amzn-s3-demo-destination-bucket` es el bucket de destino donde se entregarán los registros de acceso al servidor y `amzn-s3-demo-source-bucket` es el bucket de origen. `EXAMPLE-LOGGING-PREFIX` es el prefijo de destino opcional que desea utilizar para los objetos de registro. `SOURCE-ACCOUNT-ID` es la Cuenta de AWS que posee el bucket de origen. 

**nota**  
Si hay instrucciones `Deny` en su política de bucket, asegúrese de que no impidan que Amazon S3 envíe registros de acceso.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/EXAMPLE-LOGGING-PREFIX*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                }
            }
        }
    ]
}
```

------

### Concesión de permisos al grupo de entrega de registros mediante una ACL de bucket
<a name="grant-log-delivery-permissions-acl"></a>

**nota**  
Como práctica recomendada de seguridad, Amazon S3 desactiva las listas de control de acceso (ACL) de forma predeterminada en todos los buckets nuevos. Para obtener más información acerca de los permisos de ACL en la consola de Amazon S3, consulte [Configuración de la ACL](managing-acls.md). 

Aunque no recomendamos este método, puede conceder permisos al grupo de entrega de registros mediante una ACL de bucket. Sin embargo, si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Object Ownership, no se pueden configurar ACL de bucket u objeto. Tampoco puede incluir las concesiones de destino** en la configuración de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). En su lugar, debe utilizar una política de bucket para conceder acceso a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general).

En la ACL del bucket, el grupo entrega de registros se representa con la siguiente URL:

```
1. http://acs.amazonaws.com/groups/s3/LogDelivery
```

Para conceder los permisos `WRITE` y `READ_ACP` (lectura de ACL), agregue las siguientes concesiones a la ACL del bucket de destino.

```
 1. <Grant>
 2.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 3.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
 4.     </Grantee>
 5.     <Permission>WRITE</Permission>
 6. </Grant>
 7. <Grant>
 8.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 9.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
10.     </Grantee>
11.     <Permission>READ_ACP</Permission>
12. </Grant>
```

Para obtener ejemplos de cómo agregar concesiones de ACL mediante programación, consulte [Configuración de la ACL](managing-acls.md).

**importante**  
Al habilitar el registro de acceso al servidor de Amazon S3 mediante AWS CloudFormation en un bucket y utilizar las ACL para conceder acceso al grupo de entrega de registros de S3, también debe agregar `AccessControl": "LogDeliveryWrite"` en la plantilla de CloudFormation. Esta acción es importante porque puede otorgar esos permisos creando solo una ACL para el bucket, pero no puede crear ACL personalizadas para los buckets en CloudFormation. Solo puede usar ACL predefinidas con CloudFormation.

## Para habilitar el registro de acceso al servidor
<a name="enable-server-logging"></a>

Utilice los siguientes procedimientos para habilitar el registro de acceso al servidor mediante la consola de Amazon S3, la API de REST de Amazon S3, los SDK de AWS y AWS CLI.

### Uso de la consola de S3
<a name="server-access-logging"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

1. En la lista de buckets, elija el nombre del bucket para el que desea activar el registro de acceso al servidor.

1. Seleccione **Properties (Propiedades)**.

1. En la sección **Server access logging (Registro de acceso al servidor)**, elija **Edit (Editar)**.

1. En **Registro de acceso al servidor**, seleccione **Habilitar**. 

1. En **Bucket de destino**, especifique un bucket y un prefijo opcional. Si especifica un prefijo, le recomendamos incluir una barra inclinada (`/`) después del prefijo para facilitar la búsqueda de los registros. 
**nota**  
Especificar un prefijo con una barra (`/`) facilita la localización de los objetos de registro. Por ejemplo, si especifica el valor del prefijo `logs/`, cada objeto de registro que crea Amazon S3 comienza con el prefijo `logs/` en su clave de la siguiente manera:  

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```
Si especifica el valor del prefijo `logs`, el objeto de registro aparece de la siguiente manera:  

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

1. En **Formato de clave de objeto de registro**, realice una de las siguientes acciones:
   + Para elegir una partición no basada en fechas, elija **[DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]**.
   + Para elegir una partición basada en fechas, elija **[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]** y luego **Hora de evento de S3** u **Hora de entrega de archivo de registro**.

1. Seleccione **Save changes (Guardar cambios)**.

   Cuando se habilita el registro de acceso al servidor en un bucket, la consola habilita los registros en el bucket de origen y actualiza la política de bucket para que el bucket de destino conceda el permiso `s3:PutObject` a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). Para obtener más información acerca de esta política de bucket, consulte [Concesión de permisos a la entidad principal del servicio de registro mediante una política de bucket](#grant-log-delivery-permissions-bucket-policy).

   Puede ver los registros en el bucket de destino. Después de habilitar el registro de acceso al servidor, la entrega de los registros al bucket de destino puede tardar unos horas. Para obtener más información acerca de cómo y cuándo se entregan los registros, consulte [¿Cómo se envían los registros?](ServerLogs.md#how-logs-delivered).

Para obtener más información, consulte [Visualización de las propiedades para un bucket de uso general de S3](view-bucket-properties.md).

### Uso de la API de REST
<a name="enable-logging-rest"></a>

Para habilitar los registros, envíe una solicitud [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) para agregar la configuración de registros en el bucket de origen. La solicitud especifica el bucket de destino** y, de forma opcional, el prefijo que se debe utilizar con todas las claves de objeto de registro. 

En el siguiente ejemplo se identifica `amzn-s3-demo-destination-bucket` como el bucket de destino y *`logs/`* como el prefijo. 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2.   <LoggingEnabled>
3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
4.     <TargetPrefix>logs/</TargetPrefix>
5.   </LoggingEnabled>
6. </BucketLoggingStatus>
```

En el siguiente ejemplo se identifica `amzn-s3-demo-destination-bucket` como el bucket de destino, *`logs/`* como el prefijo y `EventTime` como el formato de clave del objeto de registro. 

```
 1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
 2.   <LoggingEnabled>
 3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
 4.     <TargetPrefix>logs/</TargetPrefix>
 5.     <TargetObjectKeyFormat>
 6.       <PartitionedPrefix>
 7.          <PartitionDateSource>EventTime</PartitionDateSource>
 8.       </PartitionedPrefix>
 9.   </TargetObjectKeyFormat>
10.   </LoggingEnabled>
11. </BucketLoggingStatus>
```

La cuenta entrega de archivos de registro de S3 escribe y posee los objetos de registro y el propietario del bucket tiene permisos completos sobre los objetos de registro. De forma opcional, puede utilizar concesiones de destino** para conceder permisos a otros usuarios para que puedan acceder a los registros. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html). 

**nota**  
Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Object Ownership, no puede usar las concesiones de destino para conceder permisos a otros usuarios. Para conceder permisos a otros, puede utilizar la actualización de la política de bucket en el bucket de destino. Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general). 

Para recuperar la configuración de registro de un bucket, utilice la operación de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html). 

Para eliminar la configuración de registros, debe enviar la solicitud `PutBucketLogging` con un `BucketLoggingStatus` vacío. 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2. </BucketLoggingStatus>
```

Para habilitar el registro en un bucket, puede utilizar la API de Amazon S3 o las bibliotecas de encapsulamiento de los SDK de AWS.

### Uso de los AWS SDK
<a name="enable-logging-sdk"></a>

En los siguientes ejemplos se habilitan los registros en un bucket. Debe crear dos buckets, uno de origen y uno de destino. Los ejemplos actualizan primero la ACL del bucket en el bucket de destino. Conceden al grupo de envío de registros los permisos necesarios para escribir registros en el bucket de destino y, a continuación, habilitan los registros en el bucket de origen. 

Estos ejemplos no funcionarán en buckets de destino que utilizan la configuración Aplicada al propietario del bucket obligatorio para la Propiedad de objetos.

Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Propiedad de objetos, no se pueden configurar ACL de bucket u objeto. Tampoco puede incluir concesiones de destino en la configuración [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). Debe utilizar una política de bucket para conceder acceso a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general).

------
#### [ .NET ]

**SDK para .NET**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/S3#code-examples). 

```
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Amazon.S3;
    using Amazon.S3.Model;
    using Microsoft.Extensions.Configuration;

    /// <summary>
    /// This example shows how to enable logging on an Amazon Simple Storage
    /// Service (Amazon S3) bucket. You need to have two Amazon S3 buckets for
    /// this example. The first is the bucket for which you wish to enable
    /// logging, and the second is the location where you want to store the
    /// logs.
    /// </summary>
    public class ServerAccessLogging
    {
        private static IConfiguration _configuration = null!;

        public static async Task Main()
        {
            LoadConfig();

            string bucketName = _configuration["BucketName"];
            string logBucketName = _configuration["LogBucketName"];
            string logObjectKeyPrefix = _configuration["LogObjectKeyPrefix"];
            string accountId = _configuration["AccountId"];

            // If the AWS Region defined for your default user is different
            // from the Region where your Amazon S3 bucket is located,
            // pass the Region name to the Amazon S3 client object's constructor.
            // For example: RegionEndpoint.USWest2 or RegionEndpoint.USEast2.
            IAmazonS3 client = new AmazonS3Client();

            try
            {
                // Update bucket policy for target bucket to allow delivery of logs to it.
                await SetBucketPolicyToAllowLogDelivery(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix,
                    accountId);

                // Enable logging on the source bucket.
                await EnableLoggingAsync(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine($"Error: {e.Message}");
            }
        }

        /// <summary>
        /// This method grants appropriate permissions for logging to the
        /// Amazon S3 bucket where the logs will be stored.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to apply the bucket policy.</param>
        /// <param name="sourceBucketName">The name of the source bucket.</param>
        /// <param name="logBucketName">The name of the bucket where logging
        /// information will be stored.</param>
        /// <param name="logPrefix">The logging prefix where the logs should be delivered.</param>
        /// <param name="accountId">The account id of the account where the source bucket exists.</param>
        /// <returns>Async task.</returns>
        public static async Task SetBucketPolicyToAllowLogDelivery(
            IAmazonS3 client,
            string sourceBucketName,
            string logBucketName,
            string logPrefix,
            string accountId)
        {
            var resourceArn = @"""arn:aws:s3:::" + logBucketName + "/" + logPrefix + @"*""";

            var newPolicy = @"{
                                ""Statement"":[{
                                ""Sid"": ""S3ServerAccessLogsPolicy"",
                                ""Effect"": ""Allow"",
                                ""Principal"": { ""Service"": ""logging.s3.amazonaws.com"" },
                                ""Action"": [""s3:PutObject""],
                                ""Resource"": [" + resourceArn + @"],
                                ""Condition"": {
                                ""ArnLike"": { ""aws:SourceArn"": ""arn:aws:s3:::" + sourceBucketName + @""" },
                                ""StringEquals"": { ""aws:SourceAccount"": """ + accountId + @""" }
                                        }
                                    }]
                                }";
            Console.WriteLine($"The policy to apply to bucket {logBucketName} to enable logging:");
            Console.WriteLine(newPolicy);

            PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest
            {
                BucketName = logBucketName,
                Policy = newPolicy,
            };
            await client.PutBucketPolicyAsync(putRequest);
            Console.WriteLine("Policy applied.");
        }

        /// <summary>
        /// This method enables logging for an Amazon S3 bucket. Logs will be stored
        /// in the bucket you selected for logging. Selected prefix
        /// will be prepended to each log object.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to configure and apply logging to the selected Amazon S3 bucket.</param>
        /// <param name="bucketName">The name of the Amazon S3 bucket for which you
        /// wish to enable logging.</param>
        /// <param name="logBucketName">The name of the Amazon S3 bucket where logging
        /// information will be stored.</param>
        /// <param name="logObjectKeyPrefix">The prefix to prepend to each
        /// object key.</param>
        /// <returns>Async task.</returns>
        public static async Task EnableLoggingAsync(
            IAmazonS3 client,
            string bucketName,
            string logBucketName,
            string logObjectKeyPrefix)
        {
            Console.WriteLine($"Enabling logging for bucket {bucketName}.");
            var loggingConfig = new S3BucketLoggingConfig
            {
                TargetBucketName = logBucketName,
                TargetPrefix = logObjectKeyPrefix,
            };

            var putBucketLoggingRequest = new PutBucketLoggingRequest
            {
                BucketName = bucketName,
                LoggingConfig = loggingConfig,
            };
            await client.PutBucketLoggingAsync(putBucketLoggingRequest);
            Console.WriteLine($"Logging enabled.");
        }

        /// <summary>
        /// Loads configuration from settings files.
        /// </summary>
        public static void LoadConfig()
        {
            _configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("settings.json") // Load settings from .json file.
                .AddJsonFile("settings.local.json", true) // Optionally, load local settings.
                .Build();
        }
    }
```
+  Para obtener información sobre la API, consulte [PutBucketLogging](https://docs.aws.amazon.com/goto/DotNetSDKV3/s3-2006-03-01/PutBucketLogging) en la *Referencia de la API de AWS SDK para .NET*. 

------
#### [ Java ]

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketLoggingStatus;
import software.amazon.awssdk.services.s3.model.LoggingEnabled;
import software.amazon.awssdk.services.s3.model.PartitionedPrefix;
import software.amazon.awssdk.services.s3.model.PutBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.TargetObjectKeyFormat;

// Class to set a bucket policy on a target S3 bucket and enable server access logging on a source S3 bucket.
public class ServerAccessLogging {
    private static S3Client s3Client;

    public static void main(String[] args) {
        String sourceBucketName = "SOURCE-BUCKET";
        String targetBucketName = "TARGET-BUCKET";
        String sourceAccountId = "123456789012";
        String targetPrefix = "logs/";

        // Create S3 Client.
        s3Client = S3Client.builder().
                region(Region.US_EAST_2)
                .build();

        // Set a bucket policy on the target S3 bucket to enable server access logging by granting the
        // logging.s3.amazonaws.com principal permission to use the PutObject operation.
        ServerAccessLogging serverAccessLogging = new ServerAccessLogging();
        serverAccessLogging.setTargetBucketPolicy(sourceAccountId, sourceBucketName, targetBucketName);

        // Enable server access logging on the source S3 bucket.
        serverAccessLogging.enableServerAccessLogging(sourceBucketName, targetBucketName,
                targetPrefix);

    }

    // Function to set a bucket policy on the target S3 bucket to enable server access logging by granting the
    // logging.s3.amazonaws.com principal permission to use the PutObject operation.
    public void setTargetBucketPolicy(String sourceAccountId, String sourceBucketName, String targetBucketName) {
        String policy = "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Sid\": \"S3ServerAccessLogsPolicy\",\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"Service\": \"logging.s3.amazonaws.com\"},\n" +
                "            \"Action\": [\n" +
                "                \"s3:PutObject\"\n" +
                "            ],\n" +
                "            \"Resource\": \"arn:aws:s3:::" + targetBucketName + "/*\",\n" +
                "            \"Condition\": {\n" +
                "                \"ArnLike\": {\n" +
                "                    \"aws:SourceArn\": \"arn:aws:s3:::" + sourceBucketName + "\"\n" +
                "                },\n" +
                "                \"StringEquals\": {\n" +
                "                    \"aws:SourceAccount\": \"" + sourceAccountId + "\"\n" +
                "                }\n" +
                "            }\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        s3Client.putBucketPolicy(b -> b.bucket(targetBucketName).policy(policy));
    }

    // Function to enable server access logging on the source S3 bucket.
    public void enableServerAccessLogging(String sourceBucketName, String targetBucketName,
            String targetPrefix) {
        TargetObjectKeyFormat targetObjectKeyFormat = TargetObjectKeyFormat.builder()
                .partitionedPrefix(PartitionedPrefix.builder().partitionDateSource("EventTime").build())
                .build();
        LoggingEnabled loggingEnabled = LoggingEnabled.builder()
                .targetBucket(targetBucketName)
                .targetPrefix(targetPrefix)
                .targetObjectKeyFormat(targetObjectKeyFormat)
                .build();
        BucketLoggingStatus bucketLoggingStatus = BucketLoggingStatus.builder()
                .loggingEnabled(loggingEnabled)
                .build();
        s3Client.putBucketLogging(PutBucketLoggingRequest.builder()
                .bucket(sourceBucketName)
                .bucketLoggingStatus(bucketLoggingStatus)
                .build());
    }

}
```

------

### Uso de AWS CLI
<a name="enabling-s3-access-logs-for-requests"></a>

Recomendamos que cree un bucket de registro dedicado en cada Región de AWS en la que tenga buckets de S3. A continuación, guarde los registros de acceso de Amazon S3 en ese bucket de S3. Para obtener más información y ejemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html) en la *Referencia de la AWS CLI*.

Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de Propiedad de objetos, no se pueden configurar ACL de bucket u objeto. Tampoco puede incluir concesiones de destino en la configuración [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). Debe utilizar una política de bucket para conceder acceso a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general).

**Example — Habilitar registros de acceso con cinco buckets en dos regiones**  
Para este ejemplo, suponga que tiene los cinco buckets siguientes:   
+ `amzn-s3-demo-source-bucket-us-east-1`
+ `amzn-s3-demo-source-bucket1-us-east-1`
+ `amzn-s3-demo-source-bucket2-us-east-1`
+ `amzn-s3-demo-bucket1-us-west-2`
+ `amzn-s3-demo-bucket2-us-west-2`
**nota**  
El último paso del siguiente procedimiento proporciona ejemplos de scripts bash que puede utilizar para crear sus buckets de registro y habilitar el registro de acceso al servidor en estos buckets. Para usar esos scripts, debe crear los archivos `policy.json` y `logging.json`, tal y como se describe en el siguiente procedimiento.

1. Cree dos bucket de destino de registro en las regiones Oeste de EE. UU. (Oregón) y Este de EE. UU. (Norte de Virginia) y asígneles los siguientes nombres:
   + `amzn-s3-demo-destination-bucket-logs-us-east-1`
   + `amzn-s3-demo-destination-bucket1-logs-us-west-2`

1. Más adelante en estos pasos, habilitará el registro de acceso al servidor de la siguiente manera:
   + `amzn-s3-demo-source-bucket-us-east-1` registra en el bucket de S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` con el prefijo `amzn-s3-demo-source-bucket-us-east-1`
   + `amzn-s3-demo-source-bucket1-us-east-1` registra en el bucket de S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` con el prefijo `amzn-s3-demo-source-bucket1-us-east-1`
   + `amzn-s3-demo-source-bucket2-us-east-1` registra en el bucket de S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` con el prefijo `amzn-s3-demo-source-bucket2-us-east-1`
   + `amzn-s3-demo-bucket1-us-west-2` registra en el bucket de S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` con el prefijo `amzn-s3-demo-bucket1-us-west-2`
   + `amzn-s3-demo-bucket2-us-west-2` registra en el bucket de S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` con el prefijo `amzn-s3-demo-bucket2-us-west-2`

1. Para cada bucket de registro de destino, conceda permisos para la entrega de registros de acceso al servidor mediante una ACL de bucket *o* una política de bucket:
   + **Actualizar la política de bucket** (recomendado): para conceder permisos a la entidad principal del servicio de registro, utilice el siguiente comando `put-bucket-policy`. Reemplace `amzn-s3-demo-destination-bucket-logs` con el nombre del bucket de destino.

     ```
     1. aws s3api put-bucket-policy --bucket amzn-s3-demo-destination-bucket-logs --policy file://policy.json
     ```

     `Policy.json` es un documento JSON en la carpeta actual que contiene la siguiente política de bucket. Para utilizar esta política de bucket, reemplace `user input placeholders` por su propia información. En la siguiente política, *`amzn-s3-demo-destination-bucket-logs`* es el bucket de destino donde se entregarán los registros de acceso al servidor y `amzn-s3-demo-source-bucket` es el bucket de origen. `SOURCE-ACCOUNT-ID` es la Cuenta de AWS que posee el bucket de origen.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "S3ServerAccessLogsPolicy",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "logging.s3.amazonaws.com"
                 },
                 "Action": [
                     "s3:PutObject"
                 ],
                 "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket-logs/*",
                 "Condition": {
                     "ArnLike": {
                         "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                     },
                     "StringEquals": {
                         "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                     }
                 }
             }
         ]
     }
     ```

------
   + **Actualizar la ACL del bucket**: para conceder permisos al grupo de entrega de registros de S3, utilice el siguiente comando `put-bucket-acl`. Reemplace *`amzn-s3-demo-destination-bucket-logs`* con el nombre del bucket de destino.

     ```
     1. aws s3api put-bucket-acl --bucket amzn-s3-demo-destination-bucket-logs  --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery 
     ```

1. A continuación, cree un archivo `logging.json` que contenga la configuración de registro (según uno de los tres ejemplos siguientes). Tras crear el archivo `logging.json`, puede aplicar la configuración de registro mediante el siguiente comando `put-bucket-logging`. Reemplace *`amzn-s3-demo-destination-bucket-logs`* con el nombre del bucket de destino.

   ```
   1. aws s3api put-bucket-logging --bucket amzn-s3-demo-destination-bucket-logs --bucket-logging-status file://logging.json 
   ```
**nota**  
En lugar de usar este comando `put-bucket-logging` para aplicar la configuración de registro en cada bucket de destino, puede usar uno de los scripts bash que se proporcionan en el siguiente paso. Para usar esos scripts, debe crear los archivos `policy.json` y `logging.json`, tal y como se describe en este procedimiento.

   El archivo `logging.json` es un documento JSON en la carpeta actual que contiene la configuración de su registro. Si un bucket de destino utiliza la configuración de propietario del bucket obligatorio de Object Ownership, la configuración de registro no puede contener concesiones de destino. Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general).  
**Example – `logging.json` sin concesiones de destino**  

   El siguiente archivo `logging.json` de ejemplo no contiene concesiones de destino. Por lo tanto, puede aplicar esta configuración a un bucket de destino que utilice la configuración Aplicada al propietario del bucket para Propiedad de objetos.

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/"
          }
      }
   ```  
**Example – `logging.json` con subvenciones de destino**  

   El siguiente archivo `logging.json` de ejemplo contiene concesiones de destino.

   Si el bucket de destino utiliza la configuración de propietario del bucket obligatorio de propiedad de objetos, no puede incluir las concesiones de destino en la configuración [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). Para obtener más información, consulte [Permisos para entrega de registros](#grant-log-delivery-permissions-general).

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/",
             "TargetGrants": [
                  {
                     "Grantee": {
                         "Type": "CanonicalUser",
                         "ID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
                      },
                     "Permission": "FULL_CONTROL"
                  }
              ]
          }
      }
   ```

**Valores de beneficiario**  
Puede especificar la persona (beneficiario) a la que va a asignar los derechos de acceso (mediante los elementos de solicitud) de las siguientes maneras:
   + Por el ID de la persona:

     ```
     {
       "Grantee": {
         "Type": "CanonicalUser",
         "ID": "ID"
       }
     }
     ```
   + Por URI:

     ```
     {
       "Grantee": {
         "Type": "Group",
         "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
       }
     }
     ```  
**Example – `logging.json` con el formato de clave del objeto de registro establecido en la hora del evento de S3**  

   El siguiente archivo `logging.json` cambia el formato de clave del objeto de registro a la hora del evento de S3. Para obtener más información acerca de la configuración del formato de clave de objeto de registro, consulte [¿Cómo habilito la entrega de registros?](ServerLogs.md#server-access-logging-overview).

   ```
     { 
       "LoggingEnabled": {
           "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
           "TargetPrefix": "amzn-s3-demo-destination-bucket/",
           "TargetObjectKeyFormat": { 
               "PartitionedPrefix": { 
                   "PartitionDateSource": "EventTime" 
               }
            }
       }
   }
   ```

1. Utilice uno de los siguientes scripts bash para agregar el registro de acceso a todos los buckets de la cuenta. Sustituya *`amzn-s3-demo-destination-bucket-logs`* por el nombre de su bucket de destino y sustituya `us-west-2` por el nombre de la región en la que se encuentran sus buckets.
**nota**  
Este script solo funciona si todos los buckets están en la misma región. Si tiene buckets en multirregiones, debe ajustar el script.   
**Example – Conceder acceso con políticas de bucket y agregar registros para los buckets de la cuenta**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```  
**Example – Conceder acceso con ACL de bucket y agregar registros para los buckets de la cuenta**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```

## Verificación de la configuración de los registros de acceso al servidor
<a name="verify-access-logs"></a>

Después de habilitar el registro de acceso al servidor, siga los pasos siguientes: 
+ Acceda al bucket de destino y compruebe que se están entregando los archivos de registro. Una vez configurados los registros de acceso, Amazon S3 comienza inmediatamente a capturar las solicitudes y a registrarlas. Sin embargo, la entrega de los registros al bucket de destino puede tardar unas horas. Para obtener más información, consulte [Los cambios del estado de los registros del bucket surten efecto con el tiempo](ServerLogs.md#BucketLoggingStatusChanges) y [Envío de archivos de registro de servidor según el mejor esfuerzo](ServerLogs.md#LogDeliveryBestEffort).

  También puede verificar automáticamente la entrega de registros mediante las métricas de solicitud de Amazon S3 y configurar las alarmas de Amazon CloudWatch para estas métricas. Para obtener más información, consulte [Monitorización de métricas con Amazon CloudWatch](cloudwatch-monitoring.md).
+ Compruebe que puede abrir y leer el contenido de los archivos de registro.

Para obtener información sobre la solución de problemas del registro de acceso al servidor, consulte [Solucionar problemas de registro de acceso al servidor](troubleshooting-server-access-logging.md).

# Formato de registro de acceso al servidor de Amazon S3
<a name="LogFormat"></a>

El registro de acceso al servidor proporciona el historial detallado de las solicitudes que se realizan a un bucket de Amazon S3. Puede utilizar los registros de acceso al servidor para los siguientes fines: 
+ Realizar auditorías de seguridad y acceso
+ Obtener información sobre la base de clientes
+ Entender la factura de Amazon S3

En esta sección se describe el formato y otros detalles acerca de los archivos de registro de acceso al servidor de Amazon S3.

Los archivos de registro de acceso al servidor consisten en una secuencia de registros delimitados por nueva línea. Cada entrada de registro representa una solicitud y consta de campos delimitados por espacios.

El siguiente es un registro de ejemplo que consta de cinco entradas de registro.

**nota**  
Los campos se pueden establecer en `-` para indicar que los datos son desconocidos o no están disponibles, o que el campo no se aplica a esta solicitud. 

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
```

A continuación, se muestra un registro de ejemplo para la operación **Calcular la suma de comprobación**:

```
7cd47ef2be amzn-s3-demo-bucket [06/Feb/2019:00:00:38 +0000] - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be e5042925-b524-4b3b-a869-f3881e78ff3a S3.COMPUTE.OBJECT.CHECKSUM example-object - - - - 1048576 - - - - - bPf7qjG4XwYdPgDQTl72GW/uotRhdPz2UryEyAFLDSRmKrakUkJCYLtAw6fdANcrsUYc1M/kIulXM1u5vZQT5g== - - - - - - - -
```

**Topics**
+ [

## Registrar campos de registro
](#log-record-fields)
+ [

## Registro adicional para operaciones de copia
](#AdditionalLoggingforCopyOperations)
+ [

## Información de registro de acceso personalizada
](#LogFormatCustom)
+ [

## Consideraciones de programación para el formato de registro de acceso al servidor extensible
](#LogFormatExtensible)

## Registrar campos de registro
<a name="log-record-fields"></a>

En la siguiente lista se describen los campos de entrada de registro.

**Propietario del bucket**  
El ID de usuario canónico del propietario del bucket de origen. El ID de usuario canónico es otra forma del ID de la Cuenta de AWS. Para obtener más información acerca del ID de usuario canónico, consulte [Identificadores de la Cuenta de AWS](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) en la *Referencia general de AWS*. Para obtener información acerca de cómo encontrar el ID de usuario canónico de la cuenta, consulte [Búsqueda del ID de usuario canónico para la Cuenta de AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId).  
**Ejemplo de entrada**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
El nombre del bucket para el que se procesó la solicitud. Si el sistema recibe un solicitud incorrecta y no puede determinar el bucket, la solicitud no aparecerá en ningún registro de acceso al servidor.  
**Ejemplo de entrada**  

```
amzn-s3-demo-bucket1
```

**Time**  
El momento en que se recibió la solicitud; estas fechas y horas están en Hora Universal Coordinada (UTC). El formato, con la terminología `strftime()`, es el siguiente: `[%d/%b/%Y:%H:%M:%S %z]`  
**Ejemplo de entrada**  

```
[06/Feb/2019:00:00:38 +0000]
```

**IP remota**  
La dirección IP aparente del solicitante. Los servidores proxy y firewalls intermedios pueden ocultar la dirección IP real de la máquina que realiza la solicitud.  
**Ejemplo de entrada**  

```
192.0.2.3
```

**Solicitante**  
El ID de usuario canónico del solicitante o un `-` para solicitudes no autenticadas. Si el solicitante era un usuario de IAM, este campo devuelve el nombre de usuario de IAM del solicitante junto con la Cuenta de AWS a la que pertenece el usuario de IAM. Este identificador es el mismo que se utiliza para el control de acceso.  
**Ejemplo de entrada**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Si el solicitante utiliza un rol asumido, este campo devuelve el rol de IAM asumido.  
**Ejemplo de entrada**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID de solicitud**  
Una cadena generada por Amazon S3 para identificar de forma inequívoca cada solicitud. Para las solicitudes de trabajo de **Calcular la suma de comprobación**, el campo **ID de solicitud** muestra el ID de trabajo asociado. Para obtener más información, consulte [Calcular las sumas de comprobación](batch-ops-compute-checksums.md).  
**Ejemplo de entrada**  

```
3E57427F33A59F07
```

**Operation**  
La operación que se describe aquí se declara como `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` o `BATCH.DELETE.OBJECT` o `S3.action.resource_type` para [S3 Lifecycle y registro](lifecycle-and-other-bucket-config.md#lifecycle-general-considerations-logging). Para las solicitudes de trabajo de [https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html), la operación se muestra como `S3.COMPUTE.OBJECT.CHECKSUM`.  
**Ejemplo de entrada**  

```
REST.PUT.OBJECT
S3.COMPUTE.OBJECT.CHECKSUM
```

**Key**  
La parte clave (nombre del objeto) de la solicitud.  
**Ejemplo de entrada**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
La parte de `Request-URI` del mensaje de solicitud de HTTP. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
```

**Estado HTTP**  
El código de estado HTTP numérico de la respuesta.  
**Ejemplo de entrada**  

```
200
```

**Código de error**  
El error de Amazon S3 [responde ](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) o `-`, si no se ha producido ningún error.  
**Ejemplo de entrada**  

```
NoSuchBucket
```

**Bytes enviados**  
El número de bytes de respuestas enviados, sin incluir la sobrecarga del protocolo HTTP o `-` en caso de ser cero.  
**Ejemplo de entrada**  

```
2662992
```

**Tamaño de objeto**  
El tamaño total del objeto en cuestión.  
**Ejemplo de entrada**  

```
3462992
```

**Tiempo total**  
La cantidad de milisegundos que la solicitud estuvo en tránsito desde la perspectiva del servidor. Este valor se mide desde el momento en que se recibe la solicitud hasta el momento en que se envía el último byte de la respuesta. Es posible que las medidas realizadas desde la perspectiva del cliente sean más extensas a causa de la latencia de la red.  
**Ejemplo de entrada**  

```
70
```

**Tiempo de entrega**  
La cantidad de milisegundos que tarda Amazon S3 en procesar su solicitud. Este valor se mide desde el momento en que se recibió el último byte de la solicitud hasta el momento en que se envió el primer byte de la respuesta.  
**Ejemplo de entrada**  

```
10
```

**Referer**  
El valor del encabezado `Referer` de HTTP, si lo hay. Los agentes de usuario de HTTP (por ejemplo: los navegadores) por lo general configuran este encabezado en la URL de la página enlazada o adjunta cuando realizan una solicitud. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
El valor del encabezado `User-Agent` de HTTP. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"curl/7.15.1"
```

**ID de versión**  
El ID de versión en la solicitud o `-` si la operación no toma un parámetro `versionId`.  
**Ejemplo de entrada**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**ID de host**  
El `x-amz-id-2` o el ID de la solicitud ampliada de Amazon S3.   
**Ejemplo de entrada**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Versión de firma**  
La versión de firma, `SigV2` o `SigV4`, que se utilizó para autenticar la solicitud o `-` para las solicitudes no autenticadas.  
**Ejemplo de entrada**  

```
SigV2
```

**Conjunto de cifrado**  
El cifrado de seguridad de la capa de transporte (TLS) que se negoció para una solicitud HTTPS o un `-` para HTTP.  
**Ejemplo de entrada**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Tipo de autenticación**  
Tipo de autenticación de solicitud utilizada: `AuthHeader` para encabezados de autenticación, `QueryString` para cadena de consulta (URL prefirmada) o `-` para solicitudes no autenticadas.  
**Ejemplo de entrada**  

```
AuthHeader
```

**Encabezado de host**  
El punto de conexión usado para conectarse a Amazon S3.  
**Ejemplo de entrada**  

```
s3.us-west-2.amazonaws.com
```
Algunas regiones anteriores admiten puntos de conexión heredados. Es posible que vea estos puntos de enlace en los registros de acceso al servidor o en los registros de AWS CloudTrail. Para obtener más información, consulte [Puntos de conexión heredados](VirtualHosting.md#s3-legacy-endpoints). Para obtener una lista completa de las regiones y los puntos de conexión de Amazon S3, consulte [Puntos de conexión y cuotas de Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) en la *Referencia general de Amazon Web Services*.

**Versión de TLS**  
Versión de Transport Layer Security (TLS) negociada por el cliente. El valor es uno de los siguientes: `TLSv1.1`, `TLSv1.2`, `TLSv1.3` o `-` si no se utilizó TLS.  
**Ejemplo de entrada**  

```
TLSv1.2
```

**ARN del punto de acceso**  
El nombre de recurso de Amazon (ARN) del punto de acceso de la solicitud. Si el ARN del punto de acceso está mal formado o no se utiliza, el campo contendrá un `-`. Para obtener más información acerca de los puntos de acceso, consulte [Uso de los puntos de acceso de Amazon S3 para buckets de propósito general](using-access-points.md). Para obtener más información acerca de los ARN, consulte [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) en la *Guía de referencia de AWS*.  
**Ejemplo de entrada**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Una cadena que indica si la solicitud requiere una lista de control de acceso (ACL) para la autorización. Si la solicitud requería una ACL para la autorización, la cadena es `Yes`. Si no se requerían ACL, la cadena es `-`. Para obtener más información acerca de las ACL, consulte lo siguiente [Información general de las Listas de control de acceso (ACL)](acl-overview.md). Para obtener más información sobre el uso del campo `aclRequired` para desactivar las ACL, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).   
**Ejemplo de entrada**  

```
Yes
```

**Región de origen**  
La región de AWS desde la que se originó la solicitud. Este campo muestra un guión (`-`) cuando no es posible determinar la región de origen (por ejemplo, en el caso de conexiones PrivateLink, conexiones Direct Connect, direcciones de la opción “Traiga sus propias direcciones IP” (BYOIP) o direcciones IP que no sean de AWS) o cuando el registro se genera a raíz de operaciones activadas en función de políticas o acciones establecidas por el cliente, como el ciclo de vida y la suma de comprobación.  
**Ejemplo de entrada**  

```
us-east-1
```

## Registro adicional para operaciones de copia
<a name="AdditionalLoggingforCopyOperations"></a>

Una operación de copia implica un `GET` y un `PUT`. Por esa razón, registramos dos entradas al realizar una operación de copia. En la sección anterior se describen los campos relacionados con la `PUT` parte de la operación. En la siguiente lista se describen los campos del registro relacionados con la parte `GET` de la operación de copia.

**Propietario del bucket**  
El ID de usuario canónico del bucket que almacena el objeto que se copia. El ID de usuario canónico es otra forma del ID de la Cuenta de AWS. Para obtener más información acerca del ID de usuario canónico, consulte [Identificadores de la Cuenta de AWS](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) en la *Referencia general de AWS*. Para obtener información acerca de cómo encontrar el ID de usuario canónico de la cuenta, consulte [Búsqueda del ID de usuario canónico para la Cuenta de AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId).  
**Ejemplo de entrada**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
El nombre del bucket que almacena el objeto que se copia.  
**Ejemplo de entrada**  

```
amzn-s3-demo-bucket1
```

**Time**  
El momento en que se recibió la solicitud; estas fechas y horas están en Hora Universal Coordinada (UTC). El formato, con la terminología `strftime()`, es el siguiente: `[%d/%B/%Y:%H:%M:%S %z]`  
**Ejemplo de entrada**  

```
[06/Feb/2019:00:00:38 +0000]
```

**IP remota**  
La dirección IP aparente del solicitante. Los servidores proxy y firewalls intermedios pueden ocultar la dirección IP real de la máquina que realiza la solicitud.  
**Ejemplo de entrada**  

```
192.0.2.3
```

**Solicitante**  
El ID de usuario canónico del solicitante o un `-` para solicitudes no autenticadas. Si el solicitante era un usuario de IAM, este campo devolverá el nombre de usuario de IAM del solicitante junto con la Usuario raíz de la cuenta de AWS a la que pertenece el usuario de IAM. Este identificador es el mismo que se utiliza para el control de acceso.  
**Ejemplo de entrada**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Si el solicitante utiliza un rol asumido, este campo devuelve el rol de IAM asumido.  
**Ejemplo de entrada**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID de solicitud**  
Una cadena generada por Amazon S3 para identificar de forma inequívoca cada solicitud. Para las solicitudes de trabajo de **Calcular la suma de comprobación**, el campo **ID de solicitud** muestra el ID de trabajo asociado. Para obtener más información, consulte [Calcular las sumas de comprobación](batch-ops-compute-checksums.md).  
**Ejemplo de entrada**  

```
3E57427F33A59F07
```

**Operation**  
La operación que se indica aquí se declara como `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` o `BATCH.DELETE.OBJECT`.  
**Ejemplo de entrada**  

```
REST.COPY.OBJECT_GET
```

**Key**  
La clave (nombre de objeto) del objeto que se copia o “`-`” si la operación no toma un parámetro de clave.   
**Ejemplo de entrada**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
La parte de `Request-URI` del mensaje de solicitud de HTTP. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
```

**Estado HTTP**  
El código de estado HTTP numérico de la parte `GET` de la operación de copia.  
**Ejemplo de entrada**  

```
200
```

**Código de error**  
El error de Amazon S3 [responde ](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) de la parte `GET` de la operación de copia o `-` si no se ha producido ningún error.  
**Ejemplo de entrada**  

```
NoSuchBucket
```

**Bytes enviados**  
El número de bytes de respuestas enviados, sin incluir la sobrecarga del protocolo HTTP o `-` en caso de ser cero.  
**Ejemplo de entrada**  

```
2662992
```

**Tamaño de objeto**  
El tamaño total del objeto en cuestión.  
**Ejemplo de entrada**  

```
3462992
```

**Tiempo total**  
La cantidad de milisegundos que la solicitud estuvo en tránsito desde la perspectiva del servidor. Este valor se mide desde el momento en que se recibe la solicitud hasta el momento en que se envía el último byte de la respuesta. Es posible que las medidas realizadas desde la perspectiva del cliente sean más extensas a causa de la latencia de la red.  
**Ejemplo de entrada**  

```
70
```

**Tiempo de entrega**  
La cantidad de milisegundos que tarda Amazon S3 en procesar su solicitud. Este valor se mide desde el momento en que se recibió el último byte de la solicitud hasta el momento en que se envió el primer byte de la respuesta.  
**Ejemplo de entrada**  

```
10
```

**Referer**  
El valor del encabezado `Referer` de HTTP, si lo hay. Los agentes de usuario de HTTP (por ejemplo: los navegadores) por lo general configuran este encabezado en la URL de la página enlazada o adjunta cuando realizan una solicitud. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
El valor del encabezado `User-Agent` de HTTP. Este campo puede incluir comillas no escapadas de la entrada del usuario.  
**Ejemplo de entrada**  

```
"curl/7.15.1"
```

**ID de versión**  
El ID de versión del objeto que se copia o `-` si el encabezado `x-amz-copy-source` no especificó un parámetro `versionId` como parte del origen de copia.  
**Ejemplo de entrada**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**ID de host**  
El `x-amz-id-2` o el ID de la solicitud ampliada de Amazon S3.  
**Ejemplo de entrada**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Versión de firma**  
La versión de firma, `SigV2` o `SigV4`, que se utilizó para autenticar la solicitud o `-` para las solicitudes no autenticadas.  
**Ejemplo de entrada**  

```
SigV4
```

**Conjunto de cifrado**  
El cifrado de seguridad de la capa de transporte (TLS) que se negoció para una solicitud HTTPS o un `-` para HTTP.  
**Ejemplo de entrada**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Tipo de autenticación**  
Tipo de autenticación de solicitud utilizada: `AuthHeader` para encabezados de autenticación, `QueryString` para cadenas de consulta (URL prefirmadas) o un `-` para solicitudes no autenticadas.  
**Ejemplo de entrada**  

```
AuthHeader
```

**Encabezado de host**  
El punto de conexión que se usó para conectarse a Amazon S3.  
**Ejemplo de entrada**  

```
s3.us-west-2.amazonaws.com
```
Algunas regiones anteriores admiten puntos de conexión heredados. Es posible que vea estos puntos de enlace en los registros de acceso al servidor o en los registros de AWS CloudTrail. Para obtener más información, consulte [Puntos de conexión heredados](VirtualHosting.md#s3-legacy-endpoints). Para obtener una lista completa de las regiones y los puntos de conexión de Amazon S3, consulte [Puntos de conexión y cuotas de Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) en la *Referencia general de Amazon Web Services*.

**Versión de TLS**  
Versión de Transport Layer Security (TLS) negociada por el cliente. El valor es uno de los siguientes: `TLSv1.1`, `TLSv1.2`, `TLSv1.3` o `-` si no se utilizó TLS.  
**Ejemplo de entrada**  

```
TLSv1.2
```

**ARN del punto de acceso**  
El nombre de recurso de Amazon (ARN) del punto de acceso de la solicitud. Si el ARN del punto de acceso está mal formado o no se utiliza, el campo contendrá un `-`. Para obtener más información acerca de los puntos de acceso, consulte [Uso de los puntos de acceso de Amazon S3 para buckets de propósito general](using-access-points.md). Para obtener más información acerca de los ARN, consulte [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) en la *Guía de referencia de AWS*.  
**Ejemplo de entrada**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Una cadena que indica si la solicitud requiere una lista de control de acceso (ACL) para la autorización. Si la solicitud requería una ACL para la autorización, la cadena es `Yes`. Si no se requerían ACL, la cadena es `-`. Para obtener más información acerca de las ACL, consulte lo siguiente [Información general de las Listas de control de acceso (ACL)](acl-overview.md). Para obtener más información sobre el uso del campo `aclRequired` para desactivar las ACL, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).   
**Ejemplo de entrada**  

```
Yes
```

**Región de origen**  
La región de AWS desde la que se originó la solicitud. Este campo muestra un guión (`-`) cuando no es posible determinar la región de origen (por ejemplo, en el caso de conexiones PrivateLink, conexiones Direct Connect, direcciones de la opción “Traiga sus propias direcciones IP” (BYOIP) o direcciones IP que no sean de AWS) o cuando el registro se genera a raíz de operaciones activadas en función de políticas o acciones establecidas por el cliente, como el ciclo de vida y la suma de comprobación.  
**Ejemplo de entrada**  

```
us-east-1
```

## Información de registro de acceso personalizada
<a name="LogFormatCustom"></a>

Puede incluir información personalizada que se almacenará en el registro de registro de acceso para una solicitud. Para ello, agregue un parámetro de cadena de consulta personalizado a la URL de la solicitud. Amazon S3 pasa por alto los parámetros de cadena de consulta que empiezan con `x-`, pero los incluye en la entrada de registro de acceso para la solicitud, como parte del campo `Request-URI` de la entrada de registro. 

Por ejemplo, una `GET` solicitud de `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe"` funciona igual que la solicitud de `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg"`, excepto que la `"x-user=johndoe"` cadena se incluye en el `Request-URI` campo para el historial de registro asociado. Esta funcionalidad está disponible en la interfaz de REST únicamente.

## Consideraciones de programación para el formato de registro de acceso al servidor extensible
<a name="LogFormatExtensible"></a>

Ocasionalmente podríamos ampliar el formato de registro de acceso al agregar nuevos campos al final de cada línea. Por lo tanto, asegúrese de que cualquier código que analiza los registros de acceso al servidor pueda manejar los campos finales que podría no entender. 

# Eliminación de archivos de registro de Amazon S3
<a name="deleting-log-files-lifecycle"></a>

Un bucket de Amazon S3 con registro de acceso al servidor habilitado puede acumular muchos objetos de registro de servidor a lo largo del tiempo. Es posible que la aplicación necesite estos registros de acceso durante un periodo específico después de crearlos y, después de eso, es posible que desee eliminarlos. Puede utilizar la configuración de ciclo de vida de Amazon S3 para establecer reglas para que Amazon S3 ponga automáticamente en cola estos objetos y los elimine al final de su ciclo de vida. 

Puede definir una configuración de ciclo de vida para un subconjunto de objetos del bucket de S3 mediante un prefijo compartido. Si especificó un prefijo en su configuración de registro de acceso al servidor, puede establecer una regla de configuración de ciclo de vida para eliminar los objetos de registro que tienen ese prefijo. 

Por ejemplo, supongamos que sus objetos de registro tienen el prefijo `logs/`. Puede establecer una regla de configuración de ciclo de vida para eliminar todos los objetos del bucket que tengan el prefijo `logs/` después de un periodo de tiempo especificado. 

Para obtener más información acerca de la configuración del ciclo de vida, consulte [Administración del ciclo de vida de los objetos](object-lifecycle-mgmt.md).

Para obtener información general sobre el registro de acceso al servidor, consulte [Registro de solicitudes con registro de acceso al servidor](ServerLogs.md).

# Uso de los registros de acceso al servidor de Amazon S3 para identificar solicitudes
<a name="using-s3-access-logs-to-identify-requests"></a>

Puede identificar las solicitudes de Amazon S3 mediante los registros de acceso al servidor de Amazon S3. 

**nota**  
Para identificar solicitudes de Amazon S3, le recomendamos que utilice eventos de datos de AWS CloudTrail en lugar de los registros de acceso al servidor de Amazon S3. Los eventos de datos de CloudTrail son más fáciles de configurar y contienen más información. Para obtener más información, consulte [Identificación de solicitudes de Amazon S3 mediante CloudTrail](cloudtrail-request-identification.md).
Según el número de solicitudes de acceso que obtenga, analizar sus registros puede requerir más recursos o tiempo que usar eventos de datos de CloudTrail.

**Topics**
+ [

## Consultar los registros de acceso para solicitudes mediante Amazon Athena
](#querying-s3-access-logs-for-requests)
+ [

## Identificación de solicitudes de la versión 2 de firma mediante registros de acceso de Amazon S3
](#using-s3-access-logs-to-identify-sigv2-requests)
+ [

## Identificación de solicitudes de acceso a objetos mediante los registros de acceso de Amazon S3
](#using-s3-access-logs-to-identify-objects-access)

## Consultar los registros de acceso para solicitudes mediante Amazon Athena
<a name="querying-s3-access-logs-for-requests"></a>

Puede identificar las solicitudes de Amazon S3 con los registros de acceso de Amazon S3 mediante Amazon Athena. 

Amazon S3 almacena los registros de acceso del servidor como objetos en un bucket de S3. Suele ser más fácil utilizar una herramienta que pueda analizar los registros en Amazon S3. Athena admite el análisis de objetos de S3 y se puede utilizar para consultar los registros de acceso de Amazon S3.

**Example**  
El siguiente ejemplo muestra cómo puede consultar los registros de acceso al servidor de Amazon S3 en Amazon Athena. Reemplace los `user input placeholders` utilizados en los siguientes ejemplos con su propia información.  
Para especificar una ubicación de Amazon S3 en una consulta de Athena, debe proporcionar un URI de S3 para el bucket donde se van a entregar sus registros. Este URI debe incluir el nombre y el prefijo del bucket en el siguiente formato: `s3://amzn-s3-demo-bucket1-logs/prefix/` 

1. Abra la consola de Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. En el editor de consultas, ejecute un comando similar al siguiente. Sustituya `s3_access_logs_db` por el nombre que desea asignar a la base de datos. 

   ```
   CREATE DATABASE s3_access_logs_db
   ```
**nota**  
Una práctica recomendada es la creación de la base de datos en la misma Región de AWS que el bucket de S3. 

1. En el editor de consultas, ejecute un comando similar al siguiente para crear un esquema de tabla en la base de datos que creó en el paso 2. Sustituya `s3_access_logs_db.mybucket_logs` por el nombre que desea asignar a la tabla. Los valores con los tipos de datos `STRING` y `BIGINT` son las propiedades del registro de acceso. Puede consultar estas propiedades en Athena. Para `LOCATION`, introduzca el bucket de S3 y la ruta del prefijo como se indicó anteriormente.

------
#### [ Date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE s3_access_logs_db.mybucket_logs( 
    `bucketowner` STRING, 
    `bucket_name` STRING, 
    `requestdatetime` STRING, 
    `remoteip` STRING, 
    `requester` STRING, 
    `requestid` STRING, 
    `operation` STRING, 
    `key` STRING, 
    `request_uri` STRING, 
    `httpstatus` STRING, 
    `errorcode` STRING, 
    `bytessent` BIGINT, 
    `objectsize` BIGINT, 
    `totaltime` STRING, 
    `turnaroundtime` STRING, 
    `referrer` STRING, 
    `useragent` STRING, 
    `versionid` STRING, 
    `hostid` STRING, 
    `sigv` STRING, 
    `ciphersuite` STRING, 
    `authtype` STRING, 
    `endpoint` STRING, 
    `tlsversion` STRING,
    `accesspointarn` STRING,
    `aclrequired` STRING,
    `sourceregion` STRING)
    PARTITIONED BY (
      `timestamp` string)
   ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
    'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
    's3://bucket-name/prefix-name/account-id/region/source-bucket-name/'
    TBLPROPERTIES (
     'projection.enabled'='true', 
     'projection.timestamp.format'='yyyy/MM/dd', 
     'projection.timestamp.interval'='1', 
     'projection.timestamp.interval.unit'='DAYS', 
     'projection.timestamp.range'='2024/01/01,NOW', 
     'projection.timestamp.type'='date', 
     'storage.location.template'='s3://bucket-name/prefix-name/account-id/region/source-bucket-name/${timestamp}')
   ```

------
#### [ Non-date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING,
     `accesspointarn` STRING,
     `aclrequired` STRING,
     `sourceregion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket1-logs/prefix/'
   ```

------

1. En el panel de navegación, en **Database (Base de datos)**, elija la base de datos.

1. En **Tables (Tablas)**, elija **Preview table (Vista previa de tabla)** junto al nombre de la tabla.

   En el panel **Results (Resultados)**, debería ver los datos de los registros de acceso del servidor, como `bucketowner`, `bucket`, `requestdatetime`, etc. Esto significa que ha creado correctamente la tabla de Athena. Ahora puede consultar los registros de acceso al servidor de Amazon S3.

**Example — Mostrar quién eliminó un objeto y cuándo (marca temporal, dirección IP y usuario de IAM)**  

```
SELECT requestdatetime, remoteip, requester, key 
FROM s3_access_logs_db.mybucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Example — Mostrar todas las operaciones realizadas por un usuario de IAM**  

```
SELECT * 
FROM s3_access_logs_db.mybucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Example — Mostrar todas las operaciones realizadas en un objeto en un periodo de tiempo específico**  

```
SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE Key='prefix/images/picture.jpg' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Example — Mostrar la cantidad de datos transferidos a una dirección IP específica en un periodo de tiempo específico**  

```
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal
FROM s3_access_logs_db.mybucket_logs
WHERE remoteip='192.0.2.1'
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-06-01','yyyy-MM-dd')
AND parse_datetime('2022-07-01','yyyy-MM-dd');
```

**Example — Encontrar los ID de solicitud de errores 5xx de HTTP en un periodo de tiempo concreto**  

```
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid 
FROM s3_access_logs_db.mybucket_logs
WHERE httpstatus like '5%' AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
```

**nota**  
A fin de reducir el tiempo que se retienen sus registros, puede crear una configuración del ciclo de vida de S3 para el bucket de registros de acceso al servidor. Cree reglas de configuración del ciclo de vida para eliminar los archivos de registro periódicamente. Esto reduce la cantidad de datos que Athena analiza para cada consulta. Para obtener más información, consulte [Establecimiento de una configuración de S3 Lifecycle en un bucket](how-to-set-lifecycle-configuration-intro.md).

## Identificación de solicitudes de la versión 2 de firma mediante registros de acceso de Amazon S3
<a name="using-s3-access-logs-to-identify-sigv2-requests"></a>

La compatibilidad de Amazon S3 con Signature Version 2 va a finalizar (esta característica quedará obsoleta). Cuando esto suceda, Amazon S3 dejará de aceptar solicitudes que utilicen Signature Version 2, y todas las solicitudes deberán firmarse con Signature Version 4. Puede identificar las solicitudes de Signature Version 2 utilizando los registros de acceso de Amazon S3. 

**nota**  
Para identificar solicitudes de Signature Version 2, le recomendamos que utilice eventos de datos de AWS CloudTrail en lugar de los registros de acceso al servidor de Amazon S3. Los eventos de datos de CloudTrail son más fáciles de configurar y contienen más información que los registros de acceso del servidor. Para obtener más información, consulte [Identificación de solicitudes de firma de Amazon S3 versión 2 mediante CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-sigv2-requests).

**Example — Mostrar todos los solicitantes que envían tráfico de la versión 2 de la firma**  

```
SELECT requester, sigv, Count(sigv) as sigcount 
FROM s3_access_logs_db.mybucket_logs
GROUP BY requester, sigv;
```

## Identificación de solicitudes de acceso a objetos mediante los registros de acceso de Amazon S3
<a name="using-s3-access-logs-to-identify-objects-access"></a>

Puede usar consultas en registros de acceso al servidor de Amazon S3 para identificar las solicitudes de acceso a objetos de Amazon S3 para operaciones como `GET`, `PUT` y `DELETE` y obtener información sobre esas solicitudes.

El siguiente ejemplo de consulta de Amazon Athena muestra cómo obtener todas las solicitudes de objetos `PUT` para Amazon S3 desde un registro de acceso al servidor. 

**Example — Mostrar todos los solicitantes que envían solicitudes de objetos `PUT` en un periodo determinado**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.PUT.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42',yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

El siguiente ejemplo de consulta de Amazon Athena muestra cómo obtener todas las solicitudes de objetos `GET` para Amazon S3 desde el registro de acceso al servidor. 

**Example — Mostrar todos los solicitantes que envían solicitudes de objetos `GET` en un periodo determinado**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.GET.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

La siguiente consulta de ejemplo de Amazon Athena muestra cómo obtener todas las solicitudes anónimas realizadas a los buckets de S3 desde el registro de acceso al servidor. 

**Example — Mostrar todos los solicitantes anónimos que hacen solicitudes a un bucket durante un periodo determinado**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE requester IS NULL 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

La siguiente consulta de Amazon Athena muestra cómo identificar todas las solicitudes realizadas a los buckets de S3 que requerían una lista de control de acceso (ACL) para la autorización. Puede usar esta información para migrar esos permisos de ACL a las políticas de bucket adecuadas y desactivar las ACL. Una vez que haya creado estas políticas de bucket, puede desactivar las ACL de estos buckets. Para obtener más información acerca de la desactivación de las ACL, consulte [Requisitos previos para desactivar las ACL](object-ownership-migrating-acls-prerequisites.md). 

**Example — Identificar todas las solicitudes que requerían una ACL para la autorización**  

```
SELECT bucket_name, requester, key, operation, aclrequired, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE aclrequired = 'Yes' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-05-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2022-08-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
```

**nota**  
Puede modificar el intervalo de fechas según sea necesario.
Estos ejemplos de consulta también pueden ser útiles para la monitorización de la seguridad. Puede revisar los resultados de las llamadas a las operaciones `PutObject` o `GetObject` desde solicitantes o direcciones IP inesperados o no autorizados con el fin de identificar cualquier solicitud anónima que se realice a los buckets.
Esta consulta solo recupera información de la hora a la que se habilitó el registro. 
Si utiliza registros de AWS CloudTrail, consulte [Identificación del acceso a objetos S3 mediante CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-object-access). 

# Solucionar problemas de registro de acceso al servidor
<a name="troubleshooting-server-access-logging"></a>

Los siguientes temas pueden ayudarlo a solucionar problemas que pueden surgir al configurar el registro con Amazon S3.

**Topics**
+ [

## Mensajes de error comunes al configurar el registro
](#common-errors)
+ [

## Solución de los errores de entrega
](#delivery-failures)

## Mensajes de error comunes al configurar el registro
<a name="common-errors"></a>

Al habilitar el registro a través de la AWS Command Line Interface (AWS CLI) y los SDK de AWS, pueden aparecer los siguientes mensajes de error: 

Error: Registro entre ubicaciones de S3 no permitido

Si el bucket de destino **se encuentra en una región diferente a la del bucket de origen, se produce un error de Registro entre ubicaciones de S3 no permitido. Para resolver este error, asegúrese de que el bucket de destino configurado para recibir los registros de acceso esté en la misma Región de AWS y Cuenta de AWS que el bucket de origen.

Error: El propietario del bucket que se va a registrar y el bucket de destino deben ser iguales

Al habilitar el registro de acceso al servidor, este error se produce si el bucket de destino especificado pertenece a una cuenta diferente. Para resolver este error, asegúrese de que el bucket de destino esté en la misma Cuenta de AWS que el bucket de origen.

**nota**  
Le recomendamos que elija un bucket de destino diferente al bucket de origen. Cuando los buckets de origen y destino son el mismo, se crean registros adicionales para los registros que se escriben en el bucket, lo que puede incrementar la factura de almacenamiento. Estos registros adicionales sobre los registros también pueden dificultar la búsqueda de los registros concretos que está buscando. Para que la administración de registros sea más sencilla, le recomendamos que guarde los registros de acceso en un bucket distinto. Para obtener más información, consulte [¿Cómo habilito la entrega de registros?](ServerLogs.md#server-access-logging-overview).

Error: El bucket de destino para el registro no existe

El bucket de destino debe existir antes de definir la configuración. Este error indica que el bucket de destino no existe o no se encuentra. Asegúrese de el nombre del bucket esté bien escrito y, a continuación, vuelva a intentarlo.

Error: Concesiones de destino no permitidas para los buckets aplicados al propietario del bucket

Este error indica que el bucket de destino utiliza la configuración Aplicada al propietario del bucket en S3 Object Ownership. La configuración Aplicada al propietario del bucket no admite concesiones de destino. Para obtener más información, consulte [Permisos para entrega de registros](enable-server-access-logging.md#grant-log-delivery-permissions-general).

## Solución de los errores de entrega
<a name="delivery-failures"></a>

Para evitar problemas con el registro de acceso al servidor, siga estas prácticas recomendadas:
+ **El grupo de entrega de registros de S3 tiene acceso de escritura al bucket de destino**: el grupo de entrega de registros de S3 entrega los registros de acceso al servidor al bucket de destino. Se puede utilizar una política de bucket o una lista de control de acceso (ACL) para otorgar acceso de escritura al bucket de destino. Sin embargo, le recomendamos que utilice una política de bucket en lugar de una ACL. Para obtener más información acerca de cómo otorgar acceso de escritura al bucket de destino, consulte [Permisos para entrega de registros](enable-server-access-logging.md#grant-log-delivery-permissions-general).
**nota**  
Si el bucket de destino utiliza la configuración Aplicada al propietario del bucket para Propiedad del objeto, tenga en cuenta lo siguiente:   
Las ACL están desactivadas y ya no afectan a los permisos. Esto significa que no puede actualizar la ACL del bucket para conceder acceso al grupo de entrega de registros de S3. En su lugar, debe actualizar la política del bucket de destino para conceder acceso a la entidad principal del servicio de registro. 
Tampoco puede incluir concesiones de destino en la configuración de `PutBucketLogging`. 
+ **La política de bucket para el bucket de destino permite el acceso a los registros**: compruebe la política de bucket para el bucket de destino. En la política de bucket, busque cualquier instrucción que contenga `"Effect": "Deny"`. A continuación, compruebe que la instrucción `Deny` no impida que los registros de acceso se escriban en el bucket.
+ **El bloqueo de objetos de S3 no está activado en el bucket de destino**: compruebe si el bucket de destino tiene activado el bloqueo de objetos. El bloqueo de objetos bloquea la entrega del registro de acceso al servidor. Debe elegir un bucket de destino que no tenga activado el bloqueo de objetos.
+ **Se seleccionan claves administradas de Amazon S3 (SSE-S3) si el cifrado predeterminado está habilitado en el bucket de destino**: puede usar el cifrado del bucket predeterminado en el bucket de destino solo si utiliza el cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3). El cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) no se admite para los buckets de destino de registro de acceso al servidor. Para obtener más información acerca de cómo habilitar el cifrado predeterminado, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md).
+ **El bucket de destino no tiene la opción Pago por solicitante habilitada**: no se admite el uso de un bucket de Pago por solicitante como bucket de destino para el registro de acceso al servidor. Para permitir la entrega de los registros de acceso al servidor, desactive la opción Pago por solicitante en el bucket de destino.
+ **Revise las políticas de control de servicios (SCP) y las políticas de control de recursos (RCP) de AWS Organizations**: cuando use AWS Organizations, compruebe las políticas de control de servicios y las políticas de control de recursos para asegurarse de que se permite el acceso a Amazon S3. Estas políticas especifican los permisos máximos para las entidades principales y los recursos en las cuentas afectadas. Busque en las políticas busque cualquier instrucción que contenga `"Effect": "Deny"` y verifique que las instrucciones `Deny` no impidan que se escriban registros de acceso en el bucket. Para obtener más información, consulte [Políticas de autorización en AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html) en la *Guía del usuario de AWS Organizations*.
+ **Espere un tiempo hasta que surtan efecto los cambios recientes en la configuración del registro**: habilitar el registro de acceso al servidor por primera vez o cambiar el bucket de destino para los registros requieren un tiempo hasta que surtan efecto. Es posible que todas las solicitudes tarden más de una hora en registrarse y entregarse correctamente. 

  Para comprobar los fallos de entrega de registros, active las métricas de solicitudes en Amazon CloudWatch. Si los registros no se entregan en unas pocas horas, busque la métrica `4xxErrors`, que puede indicar errores en la entrega de registros. Para obtener más información acerca de la activación de las métricas de solicitudes, consulte [Creación de una configuración de métricas de CloudWatch para todos los objetos del bucket](configure-request-metrics-bucket.md).