Entrega de registros de acceso al servidor a Registros de CloudWatch
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 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.
Requisitos previos
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)
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.
-
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 \ --namemy-sal-source\ --resource-arn arn:aws:s3:::my-bucket\ --log-type S3_SERVER_ACCESS_LOGS -
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 \ --namemy-sal-destination\ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}' -
Cree una entrega. Esto vincula el origen con el destino e inicia la entrega del registro.
aws logs create-delivery \ --delivery-source-namemy-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)
-
Inicie sesión en la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el panel de navegación izquierdo, elija Buckets.
-
Elija el nombre del bucket de origen para el que desea habilitar el registro.
-
Elija la pestaña Propiedades.
-
En la sección Entrega de registros de acceso al servidor a Registros de CloudWatch, elija Editar.
-
Seleccione Habilitar.
-
Seleccione o cree un grupo de registros de Registros de CloudWatch como destino de entrega.
-
(Opcional) Para entregar los registros a las tablas de S3 en formato Apache Iceberg, seleccione Habilitar la integración de tablas de S3.
-
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)
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)
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.
-
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.rproxy.govskope.cay conceder el permisologs: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" } } } ] } -
Asocie el origen de entrega a la integración.
aws logs associate-source-to-s3-table-integration \ --integration-arnintegration-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.
Agregación entre cuentas y entre regiones
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
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
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 \ --iddelivery-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 \ --namedelivery-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.