

# Entrega de registros de acceso al servidor a Registros de CloudWatch
<a name="sal-cw-enabling"></a>

Puede entregar los registros de acceso al servidor de Amazon S3 a un grupo de registros de Registros de CloudWatch mediante la entrega de registros del proveedor de Registros de Amazon CloudWatch. Una vez que los registros estén en Registros de CloudWatch, puede consultarlos con información de Registros de CloudWatch, agregarlos entre cuentas y regiones, cifrarlos con AWS Key Management Service (AWS KMS) y, si lo desea, entregarlos a Tablas de Amazon S3 en formato Apache Iceberg para análisis de SQL. También puede entregar registros a Amazon S3 en formato JSON o Apache Parquet o enrutarlos a través de Amazon Data Firehose.

La entrega se configura mediante las API de Registros de CloudWatch, no con las API de Amazon S3. Debe especificar un grupo de registros para cada bucket de origen. Varios buckets pueden compartir el mismo grupo de registros o cada uno puede entregarlo en el suyo propio.

**sugerencia**  
Puede configurar varios destinos para el mismo bucket. Por ejemplo, envíelo a un grupo de registros de Registros de CloudWatch para consultas interactivas y envíelo simultáneamente a Amazon S3 en formato Parquet para una retención a largo plazo a un costo menor.

**nota**  
La entrega de registros del proveedor de Registros de CloudWatch también admite Amazon Data Firehose y Amazon S3 como destinos de entrega, incluido el formato de salida de Apache Parquet. En esta página se describe el destino del grupo de registros de Registros de CloudWatch, que también admite la integración de tablas de S3 para el análisis de SQL. Para obtener información sobre los destinos de Firehose y Amazon S3, consulte [Habilitar el registro desde los servicios de AWS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html) en la *Guía del usuario de Registros de Amazon CloudWatch*.

**nota**  
Para obtener información acerca de cómo entregar registros de acceso al servidor en un bucket de uso general de Amazon S3, consulte [Habilitación del registro de acceso al servidor de Amazon S3](enable-server-access-logging.md).

## Requisitos previos
<a name="sal-cw-prerequisites"></a>

Antes de configurar la entrega, necesita lo siguiente:
+ Un bucket de uso general de Amazon S3 (el bucket de origen que desea registrar).
+ Un grupo de registros de Registros de CloudWatch en la misma Región de AWS que el bucket de origen.
+ Permisos de IAM para el intermediario. Como mínimo, necesita los permisos siguientes:
  + `logs:PutDeliverySource`
  + `logs:PutDeliveryDestination`
  + `logs:CreateDelivery`
  + `s3:AllowVendedLogDeliveryForResource` (en el bucket de origen)

  Si planea habilitar la integración de tablas de S3, también necesitará:
  + `observabilityadmin:CreateS3TableIntegration`
  + `logs:AssociateSourceToS3TableIntegration`
  + `s3tables:CreateTableBucket`
  + `s3tables:PutTableBucketEncryption`
  + `s3tables:PutTableBucketPolicy`

## Configuración de entrega (AWS CLI)
<a name="sal-cw-setup-cli"></a>

Para configurar la entrega de registros de acceso al servidor a Registros de CloudWatch mediante la AWS Command Line Interface, complete los tres pasos siguientes.

1. **Creación de origen de entrega.** Esto registra el bucket de Amazon S3 como origen de registro en Registros de CloudWatch.

   ```
   aws logs put-delivery-source \
     --name {{my-sal-source}} \
     --resource-arn arn:aws:s3:::{{my-bucket}} \
     --log-type S3_SERVER_ACCESS_LOGS
   ```

1. **Cree un destino de entrega.** Esto especifica un grupo de registro de Registros de CloudWatch donde se entregarán los registros.

   ```
   aws logs put-delivery-destination \
     --name {{my-sal-destination}} \
     --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:{{my-sal-logs}}"}'
   ```

1. **Cree una entrega.** Esto vincula el origen con el destino e inicia la entrega del registro.

   ```
   aws logs create-delivery \
     --delivery-source-name {{my-sal-source}} \
     --delivery-destination-arn arn:aws:logs:{{us-east-1}}:{{123456789012}}:delivery-destination:{{my-sal-destination}}
   ```

Tras completar estos pasos, Amazon S3 empezará a entregar los registros de acceso al servidor al grupo de registros de Registros de CloudWatch. La configuración tarda entre 15 y 20 minutos en propagarse. Después de la propagación, la entrega de registros suele comenzar al cabo de unas horas. Solo se registran las solicitudes nuevas; no se rellenan los datos históricos.

## Configuración de la entrega (consola de Amazon S3)
<a name="sal-cw-setup-console"></a>

1. Inicie sesión en 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**.

1. Elija el nombre del bucket de origen para el que desea habilitar el registro.

1. Elija la pestaña **Propiedades**.

1. En la sección **Entrega de registros de acceso al servidor a Registros de CloudWatch**, elija **Editar**.

1. Seleccione **Habilitar**.

1. Seleccione o cree un grupo de registros de Registros de CloudWatch como destino de entrega.

1. (Opcional) Para entregar los registros a las tablas de S3 en formato Apache Iceberg, seleccione **Habilitar la integración de tablas de S3**.

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

Tras guardar, en la sección **Entrega del registro de acceso al servidor a Registros de CloudWatch** se muestra el grupo de registros habilitado.

## Configuración de entrega (CloudFormation)
<a name="sal-cw-setup-cfn"></a>

Puede utilizar AWS CloudFormation para automatizar la configuración de la entrega de registros de acceso al servidor a Registros de CloudWatch. La plantilla siguiente crea los recursos necesarios: un rol de IAM, un grupo de registros de Registros de CloudWatch, un origen de entrega, un destino de entrega y una entrega.

```
AWSTemplateFormatVersion: '2010-09-09'
Description: S3 Access Logs delivery to CloudWatch Logs

Parameters:
  SourceBucketArn:
    Type: String
    Description: ARN of the S3 bucket to enable access logging
  LogGroupName:
    Type: String
    Default: /aws/s3/access-logs
    Description: CloudWatch Log Group name for SAL delivery

Resources:
  SALLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Ref LogGroupName
      RetentionInDays: 180

  SALDeliverySource:
    Type: AWS::Logs::DeliverySource
    Properties:
      Name: !Sub '${AWS::StackName}-sal-source'
      ResourceArn: !Ref SourceBucketArn
      LogType: S3_SERVER_ACCESS_LOGS

  SALDeliveryDestination:
    Type: AWS::Logs::DeliveryDestination
    Properties:
      Name: !Sub '${AWS::StackName}-sal-destination'
      DestinationResourceArn: !GetAtt SALLogGroup.Arn

  SALDelivery:
    Type: AWS::Logs::Delivery
    Properties:
      DeliverySourceName: !Ref SALDeliverySource
      DeliveryDestinationArn: !GetAtt SALDeliveryDestination.Arn
```

## Habilitación de la integración de tablas de S3 (opcional)
<a name="sal-cw-tables-integration"></a>

Al habilitar la integración de tablas de S3, los Registros de CloudWatch entregan automáticamente los registros de acceso al servidor en formato Apache Iceberg al bucket de tabla administrado por `aws-cloudwatch` en la cuenta. A continuación, puede consultar estos datos con Amazon Athena, Amazon Redshift o cualquier herramienta compatible con Iceberg.

No se cobrará ningún cargo adicional por el almacenamiento o el mantenimiento de las tablas en la integración de tablas de S3. Solo paga por la ingesta de Registros de CloudWatch y por las solicitudes de consulta a los precios de las tablas de S3.

1. **Cree la integración de tablas de S3** (una vez por cuenta y región).

   ```
   aws observabilityadmin create-s3-table-integration \
     --role-arn arn:aws:iam::{{123456789012}}:role/{{CWLogsS3TableIntegrationRole}} \
     --encryption '{"SseAlgorithm": "AES256"}'
   ```

   El rol de IAM debe confiar en la entidad principal del servicio de `logs.amazonaws.com` y conceder el permiso `logs:integrateWithS3Table`. A continuación, se muestra un ejemplo de una política de confianza:

   ```
   		 	 	 {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "logs.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "{{123456789012}}"
           },
           "ArnLike": {
             "aws:SourceArn": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:{{log-group-name}}"
           }
         }
       }
     ]
   }
   ```

   El rol también necesita la política de permisos siguiente:

   ```
   		 	 	 {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "logs:integrateWithS3Table",
         "Resource": "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:{{log-group-name}}",
         "Condition": {
           "StringEquals": {
             "aws:ResourceAccount": "{{123456789012}}"
           }
         }
       }
     ]
   }
   ```

1. **Asocie el origen de entrega a la integración.**

   ```
   aws logs associate-source-to-s3-table-integration \
     --integration-arn {{integration-arn}} \
     --data-source '{"name":"amazon_s3","type":"server_access"}'
   ```

Tras estos pasos, los Registros de CloudWatch crean el bucket de tabla administrada por `aws-cloudwatch` y comienzan a entregar los registros en formato Iceberg. Los datos suelen aparecer una hora después de la primera entrega a Registros de CloudWatch.

Para obtener información sobre cómo consultar la integración de tablas de S3, consulte [Consulta de los registros de acceso en las tablas de S3](sal-cw-querying-s3tables.md).

## Agregación entre cuentas y entre regiones
<a name="sal-cw-cross-account"></a>

La ruta de entrega de Registros de CloudWatch admite la agregación de registros entre cuentas y entre regiones con dos opciones:
+ La **observabilidad entre cuentas de CloudWatch** permite consultar los registros existentes en todas las cuentas sin copiar los datos.
+ **La centralización de Registros de CloudWatch** permite consolidar los registros de varias cuentas y regiones en un grupo de registros central y, de forma opcional, usar filtros de suscripción para el reenvío selectivo.

Para las configuraciones de varias cuentas, los administradores pueden usar las reglas de habilitación de Configuración de telemetría de CloudWatch con AWS Organizations para habilitar automáticamente la entrega de registros de acceso al servidor entre las cuentas de miembros.

**nota**  
En la actualidad, las reglas de habilitación no admiten la habilitación automática de la integración de tablas de S3. Debe habilitar la integración de forma independiente en cada cuenta.

## Cifrado
<a name="sal-cw-encryption"></a>

Puede cifrar los registros de acceso al servidor que se envían a Registros de CloudWatch configurando el cifrado de AWS KMS en el grupo de registros. Cuando los registros de acceso al servidor se envían a ese grupo de registro, se cifran con la clave de AWS KMS. Esto soluciona una limitación de claves de la ruta de entrega de buckets de uso general de Amazon S3, que solo admite el cifrado SSE-S3.

Si habilita la integración de tablas de S3 con un grupo de registros cifrado por AWS KMS, debe conceder permisos adicionales en la política de claves de AWS KMS a las entidades principales de servicio siguientes:

```
		 	 	 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnableCWSystemTablesKeyUsage",
      "Effect": "Allow",
      "Principal": {
        "Service": "systemtables.cloudwatch.amazonaws.com"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{key-id}}",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{123456789012}}"
        }
      }
    },
    {
      "Sid": "EnableS3TablesMaintenanceKeyUsage",
      "Effect": "Allow",
      "Principal": {
        "Service": "maintenance.s3tables.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{key-id}}",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:s3:arn": "{{table-bucket-arn}}/*"
        }
      }
    }
  ]
}
```

Los Registros de CloudWatch utilizan la entidad principal de `systemtables.cloudwatch.amazonaws.com` para escribir los registros en las tablas de S3. Las tablas de S3 utilizan la entidad principal de `maintenance.s3tables.amazonaws.com` para operaciones de Iceberg, como la compactación.

## Deshabilitación de la entrega
<a name="sal-cw-disabling"></a>

Para dejar de entregar los registros de acceso al servidor a Registros de CloudWatch, puede eliminar la entrega o el origen de entrega:
+ **Eliminar la entrega**: detiene la entrega de registros pero mantiene intacta la configuración del origen de entrega. Puede crear una nueva entrega más adelante sin tener que volver a configurar el origen.

  ```
  aws logs delete-delivery \
    --id {{delivery-id}}
  ```
+ **Eliminar el origen de entrega**: elimina por completo la configuración del origen. Utilícelo si ya no quiere que el bucket esté asociado a la entrega de Registros de CloudWatch.

  ```
  aws logs delete-delivery-source \
    --name {{delivery-source-name}}
  ```

Los registros entregados anteriormente permanecen en el grupo de registros y en la integración de tablas de S3 (si está habilitada). Al eliminar la entrega, no se eliminan los datos de registro existentes.