View a markdown version of this page

Exporte los datos de registro a Amazon S3 mediante AWS CLI - CloudWatch Registros de Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Exporte los datos de registro a Amazon S3 mediante AWS CLI

En el siguiente ejemplo, utiliza una tarea de exportación para exportar todos los datos de un grupo de CloudWatch registros denominado my-log-group a un bucket de Amazon S3 denominadoamzn-s3-demo-bucket. En este ejemplo se presupone que ya ha creado un grupo denominado my-log-group.

Se admite la exportación de datos de registro a cubos de S3 cifrados por AWS KMS . No se admite la exportación a cubos cifrados con DSSE-KMS .

Los detalles de cómo configurar la exportación dependen de si el bucket de Amazon S3 al que desea exportar está en la misma cuenta que los registros que se están exportando o en una diferente.

Same-account exportar (CLI)

Si el bucket de Amazon S3 está en la misma cuenta que los registros que se exportan, siga las instrucciones de esta sección.

Cree un bucket de S3 (CLI)

Le recomendamos que utilice un bucket creado específicamente para CloudWatch Logs. Sin embargo, si quieres usar un depósito existente, puedes omitir este procedimiento.

nota

El bucket de S3 debe residir en la misma región que los datos de registro que se van a exportar. CloudWatch Los registros no admiten la exportación de datos a depósitos de S3 en una región diferente.

Para crear un bucket de S3 mediante el AWS CLI

En el símbolo del sistema, ejecute el siguiente comando create-bucket, donde LocationConstraint es la región en la que se exportan los datos de registro.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

A continuación, se muestra un ejemplo del resultado.

{ "Location": "/amzn-s3-demo-bucket" }

Configure los permisos de acceso (CLI)

Para crear la tarea de exportación más adelante, tendrás que iniciar sesión con el rol de AmazonS3ReadOnlyAccess IAM y tener los siguientes permisos:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Para dar acceso, agregue permisos a los usuarios, grupos o roles:

Establezca los permisos en un bucket de S3 (CLI)

De forma predeterminada, los buckets y los objetos de S3 son privados. Solo el propietario del recurso y la cuenta que creó el bucket pueden tener acceso a ese bucket y a los objetos que contiene. No obstante, el propietario del recurso puede elegir conceder permisos de acceso a otros recursos y usuarios escribiendo una política de acceso.

importante

Para que las exportaciones a los buckets de S3 sean más seguras, ahora debe especificar la lista de cuentas de origen que pueden exportar datos de registro a su bucket de S3.

En el siguiente ejemplo, la lista de ID de cuenta de la clave aws:SourceAccount serían las cuentas desde las que un usuario puede exportar los datos de registro a su bucket de S3. La clave aws:SourceArn sería el recurso para el que se está tomando la acción. Puede restringirla a un grupo de registro específico o utilizar un comodín como se muestra en este ejemplo.

Le recomendamos que también incluya el ID de cuenta de la cuenta en la que se creó el bucket de S3 para permitir la exportación dentro de la misma cuenta.

Para definir permisos en un bucket de S3
  1. Cree un archivo denominado policy.json y agregue la siguiente política de acceso, cambiando amzn-s3-demo-bucket por el nombre de su bucket de S3 y Principal por el punto de conexión de la región a la que va a exportar los datos de registro, como us-east-1. Utilice un editor de texto para crear este archivo de política. No utilice la consola de IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGetBucketAcl", "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Sid": "AllowPutObject", "Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } } ] }
  2. Defina la política que acaba de añadir como política de acceso en su bucket con el comando put-bucket-policy. Esta política permite a CloudWatch Logs exportar los datos de registro a su bucket de S3. El propietario del bucket tendrá permisos completos en todos los objetos exportados.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    aviso

    Si el bucket existente ya tiene una o más políticas adjuntas, agrega las instrucciones de acceso a los CloudWatch registros a esa política o políticas. Le recomendamos que evalúe el conjunto de permisos resultante para asegurarse de que sean adecuados para los usuarios que van a tener acceso al bucket.

(Opcional) Exportación a un bucket de Amazon S3 de destino cifrado con SSE-KMS (CLI)

Este procedimiento solo es necesario si va a exportar a un bucket de S3 que utilice el cifrado del lado del servidor con. AWS KMS keys Este cifrado se conoce como. SSE-KMS

Para exportar a un bucket cifrado con SSE-KMS
  1. Utilice un editor de texto para crear un archivo denominado key_policy.json y agregue la siguiente política de acceso. Al agregar la política, realice los siguientes cambios:

    • RegionSustitúyala por la región de tus registros.

    • account-ARNSustitúyalo por el ARN de la cuenta que posee la clave de KMS.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  2. Introduzca el siguiente comando:

    aws kms create-key --policy file://key_policy.json

    A continuación, se muestra un ejemplo de salida de este comando:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account-ARN:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Utilice un editor de texto para crear un archivo denominado bucketencryption.json con los siguientes contenidos.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Ingresa el siguiente comando y amzn-s3-demo-bucket sustitúyelo por el nombre del bucket al que vas a exportar los registros.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Si el comando no devuelve ningún error, el proceso se ha realizado correctamente.

Crear una tarea de exportación (CLI)

Utilice el siguiente comando para crear la política. Después de crearla, la tarea de exportación podría llevar de unos segundos a unas horas, en función del tamaño de los datos que se van a exportar.

Para exportar datos a Amazon S3 mediante el AWS CLI
  1. Inicie sesión con los permisos necesarios, tal y como se indica en Configure los permisos de acceso (CLI).

  2. En el símbolo del sistema, utilice el siguiente comando create-export-task para crear la tarea de exportación.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    A continuación, se muestra un ejemplo del resultado.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }

Cross-account exportar (CLI)

Si el bucket de Amazon S3 está en una cuenta diferente a la de los registros que se exportan, siga las instrucciones de esta sección.

Cree un bucket de S3 para la exportación entre cuentas (CLI)

Le recomendamos que utilice un bucket que se haya creado específicamente para CloudWatch los registros. Sin embargo, si desea utilizar un bucket existente, puede pasar al paso 2.

nota

El bucket de S3 debe residir en la misma región que los datos de registro que se van a exportar. CloudWatch Logs no admite la exportación de datos a depósitos de S3 en otra región.

Para crear un bucket de S3 mediante el AWS CLI

En el símbolo del sistema, ejecute el siguiente comando create-bucket, donde LocationConstraint es la región en la que se exportan los datos de registro.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

A continuación, se muestra un ejemplo del resultado.

{ "Location": "/amzn-s3-demo-bucket" }

Configure los permisos de acceso para la exportación entre cuentas (CLI)

En primer lugar, debe crear una nueva política de IAM para permitir que CloudWatch Logs incluya la s3:PutObject acción correspondiente al bucket de Amazon S3 de destino en la cuenta de destino.

Además de la s3:PutObject acción, las acciones adicionales incluidas en la política dependen de si el bucket de destino utiliza el AWS KMS cifrado o tiene habilitadas las ACL mediante la configuración de propiedad del objeto de S3.

  • Si utiliza el cifrado de KMS, añada las acciones kms:GenerateDataKey y kms:Decrypt para el recurso clave

  • Si las ACL están habilitadas en el bucket, añada la acción s3:PutObjectAcl para el recurso del bucket

Cambie amzn-s3-demo-bucket el nombre de su bucket de S3 de destino en las siguientes políticas.

La política que cree depende de si el bucket de destino utiliza el cifrado de  AWS KMS . Si no utiliza el AWS KMS cifrado, cree una política con el siguiente contenido.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Si el bucket de destino usa AWS KMS cifrado, cree una política con el siguiente contenido.

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Si las ACL están habilitadas en el bucket de destino, agrega s3: PutObjectAcl a s3: PutObject Action block en las políticas anteriores.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Para crear una tarea de exportación, debes iniciar sesión con un rol de IAM que tenga la política AmazonS3ReadOnlyAccess gestionada adjunta, la política de IAM creada anteriormente y también con los siguientes permisos:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Para dar acceso, agregue permisos a los usuarios, grupos o roles:

Establezca los permisos en un bucket de S3 para la exportación entre cuentas (CLI)

De forma predeterminada, los buckets y los objetos de S3 son privados. Solo el propietario del recurso y la cuenta que creó el bucket pueden tener acceso a ese bucket y a los objetos que contiene. No obstante, el propietario del recurso puede elegir conceder permisos de acceso a otros recursos y usuarios escribiendo una política de acceso.

importante

Para que las exportaciones a los buckets de S3 sean más seguras, ahora debe especificar la lista de cuentas de origen que pueden exportar datos de registro a su bucket de S3.

En el siguiente ejemplo, la lista de ID de cuenta de la clave aws:SourceAccount serían las cuentas desde las que un usuario puede exportar los datos de registro a su bucket de S3. La clave aws:SourceArn sería el recurso para el que se está tomando la acción. Puede restringirla a un grupo de registro específico o utilizar un comodín como se muestra en este ejemplo.

Le recomendamos que también incluya el ID de cuenta de la cuenta en la que se creó el bucket de S3 para permitir la exportación dentro de la misma cuenta.

Para definir permisos en un bucket de S3
  1. Crea un archivo con el nombre policy.json y agrega la siguiente política de acceso, cambiando amzn-s3-demo-bucket por el nombre de tu bucket de S3 de destino, Principal al punto final de la región a la que vas a exportar los datos de registro, por ejemplo. us-west-1 Utilice un editor de texto para crear este archivo de política. No utilice la consola de IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::>amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  2. Defina la política que acaba de añadir como política de acceso en su bucket con el comando put-bucket-policy. Esta política permite a CloudWatch Logs exportar los datos de registro a tu bucket de S3. El propietario del bucket tendrá permisos completos en todos los objetos exportados.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    aviso

    Si el bucket existente ya tiene una o más políticas adjuntas, agrega las instrucciones de acceso a los CloudWatch registros a esa política o políticas. Le recomendamos que evalúe el conjunto de permisos resultante para asegurarse de que sean adecuados para los usuarios que van a tener acceso al bucket.

(Opcional) Exportación a un bucket de Amazon S3 de destino cifrado SSE-KMS para la exportación entre cuentas (CLI)

Este procedimiento solo es necesario si va a exportar a un bucket de S3 que utilice el cifrado del lado del servidor con. AWS KMS keys Este cifrado se conoce como. SSE-KMS

Para exportar a un bucket cifrado con SSE-KMS
  1. Utilice un editor de texto para crear un archivo denominado key_policy.json y agregue la siguiente política de acceso. Al agregar la política, realice los siguientes cambios:

    • us-east-1Sustitúyala por la región de tus registros.

    • account-ARNSustitúyalo por el ARN de la cuenta que posee la clave de KMS.

    • 123456789012Sustitúyalo por el número de cuenta que posee la clave de KMS.

    • key_idcon el identificador de la clave de KMS.

    • role_namecon la función utilizada para crear la tarea de exportación.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCWLServicePrincipalUsage", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMRolePermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
  2. Introduzca el siguiente comando:

    aws kms create-key --policy file://key_policy.json

    A continuación, se muestra un ejemplo de salida de este comando:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-1:123456789012:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Utilice un editor de texto para crear un archivo denominado bucketencryption.json con los siguientes contenidos.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Introduzca el siguiente comando y amzn-s3-demo-bucket sustitúyalo por el nombre del bucket al que está exportando los registros.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Si el comando no devuelve ningún error, el proceso se ha realizado correctamente.

Crea una tarea de exportación para la exportación entre cuentas (CLI)

Utilice el siguiente comando para crear la política. Después de crearla, la tarea de exportación podría llevar de unos segundos a unas horas, en función del tamaño de los datos que se van a exportar.

Para exportar datos a Amazon S3 mediante el AWS CLI
  1. Inicie sesión con los permisos necesarios, tal y como se indica en Configure los permisos de acceso (CLI).

  2. En el símbolo del sistema, utilice el siguiente comando create-export-task para crear la tarea de exportación.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    A continuación, se muestra un ejemplo del resultado.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }