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

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 Logs my-log-group a un bucket de Amazon S3 denominadomy-exported-logs. 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 buckets de S3 cifrados mediante AWS KMS . No se admite la exportación a depósitos 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.

Exportación en la misma cuenta

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

Paso 1: crear un bucket de S3

Le recomendamos que utilice un depósito 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 depósito 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 my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

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

{ "Location": "/my-exported-logs" }

Paso 2: Configurar los permisos de acceso

Para crear la tarea de exportación en el paso 5, tendrás que iniciar sesión con el AmazonS3ReadOnlyAccess IAM rol y 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:

Paso 3: definir permisos en un bucket de S3

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 cuentas IDs de la aws:SourceAccount clave 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 my-exported-logs 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-west-1. Utilice un editor de texto para crear este archivo de política. No utilice la consola de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } } ] }
  2. Defina la política que acaba de añadir como política de acceso a su bucket mediante el put-bucket-policycomando. 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 my-exported-logs --policy file://policy.json
    aviso

    Si el bucket existente ya tiene una o más políticas asociadas, añada las instrucciones para que CloudWatch Logs acceda 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) Paso 4: Exportar a un depósito cifrado con SSE - KMS

Este paso 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 depósito 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úyalo por la región de tus registros.

    • account-ARNARNSustitúyala por la de la cuenta propietaria de la KMS clave.

    { "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. Escriba 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_id: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 bucket-name sustitúyalo por el nombre del depósito al que va a exportar los registros.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

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

Paso 5: crear una tarea de exportación

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 Paso 2: Configurar los permisos de acceso.

  2. En una línea de comandos, utilice el siguiente create-export-taskcomando 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 "my-exported-logs" --destination-prefix "export-task-output"

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

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

Exportación entre cuentas

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.

Paso 1: crear un bucket de S3

Le recomendamos que utilice un depósito 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 depósito 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 my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

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

{ "Location": "/my-exported-logs" }

Paso 2: Configurar los permisos de acceso

En primer lugar, debe crear una nueva IAM política para permitir que CloudWatch Logs tenga el s3:PutObject permiso para el bucket de Amazon S3 de destino.

Para crear la tarea de exportación en el paso 5, tendrás que iniciar sesión con el AmazonS3ReadOnlyAccess IAM rol y algunos otros permisos. Puede crear una política que contenga algunos de estos otros permisos necesarios.

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" } ] }

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

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }

Para crear la tarea de exportación en el paso 5, debe iniciar sesión con el AmazonS3ReadOnlyAccess IAM rol, la IAM política que acaba de crear 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:

Paso 3: definir permisos en un bucket de S3

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 cuentas IDs de la aws:SourceAccount clave 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 my-exported-logs 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-west-1. Utilice un editor de texto para crear este archivo de política. No utilice la consola de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*", "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 a su bucket mediante el put-bucket-policycomando. 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 my-exported-logs --policy file://policy.json
    aviso

    Si el bucket existente ya tiene una o más políticas asociadas, añada las instrucciones para que CloudWatch Logs acceda 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) Paso 4: Exportar a un depósito cifrado con SSE - KMS

Este paso 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 depósito 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úyalo por la región de tus registros.

    • account-ARNARNSustitúyala por la de la cuenta propietaria de la KMS clave.

    { "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": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  2. Escriba 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_id: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 bucket-name sustitúyalo por el nombre del depósito al que va a exportar los registros.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

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

Paso 5: crear una tarea de exportación

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 Paso 2: Configurar los permisos de acceso.

  2. En una línea de comandos, utilice el siguiente create-export-taskcomando 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 "my-exported-logs" --destination-prefix "export-task-output"

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

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