Exporte dados de log para o Amazon S3 usando o AWS CLI - CloudWatch Registros da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exporte dados de log para o Amazon S3 usando o AWS CLI

No exemplo a seguir, você usa uma tarefa de exportação para exportar todos os dados de um grupo de CloudWatch logs de registros chamado my-log-group para um bucket do Amazon S3 chamado. my-exported-logs Este exemplo pressupõe que você já tenha criado um grupo de logs denominado my-log-group.

Há suporte para a exportação de dados de log para buckets do S3 que são criptografados pelo AWS KMS . A exportação para buckets criptografados com DSSE - não KMS é suportada.

Os detalhes de como configurar a exportação dependem se o bucket do Amazon S3 para o qual você deseja exportar está na mesma conta que os logs que estão sendo exportados ou em uma conta diferente.

Exportação para a mesma conta

Se o bucket do Amazon S3 estiver na mesma conta dos logs que estão sendo exportados, use as instruções nesta seção.

Etapa 1: criar um bucket do S3

Recomendamos que você use um bucket criado especificamente para o CloudWatch Logs. No entanto, se você desejar usar um bucket existente, vá para a etapa 2.

nota

O bucket do S3 deve residir na mesma região dos dados de log a serem exportados. CloudWatch O Logs não oferece suporte à exportação de dados para buckets do S3 em uma região diferente.

Para criar um bucket S3 usando o AWS CLI

Em um prompt de comando, execute o seguinte comando create-bucket, em que LocationConstraint é a região onde você está exportando dados de log.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

O seguinte é um exemplo de saída.

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

Etapa 2: configurar permissões de acesso

Para criar a tarefa de exportação na etapa 5, você precisará estar conectado com a AmazonS3ReadOnlyAccess IAM função e com as seguintes permissões:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:

Etapa 3: Definir permissões em um bucket do S3.

Por padrão, todos os buckets e objetos do S3 são privados. Somente o proprietário do recurso e a conta que criou o bucket podem acessar o bucket e todos os objetos que ele contém. No entanto, o proprietário do recurso pode optar por conceder permissões de acesso a outros recursos e usuários ao criar uma política de acesso padrão.

Importante

Para tornar as exportações para buckets S3 mais seguras, agora exigimos que você especifique a lista de contas de origem que têm permissão para exportar dados de log para seu bucket S3.

No exemplo a seguir, a lista de contas IDs na aws:SourceAccount chave seriam as contas das quais um usuário pode exportar dados de log para seu bucket do S3. A chave aws:SourceArn seria o recurso para o qual a ação está sendo realizada. Você pode restringir isso a um grupo de logs específico ou usar um curinga, como mostrado neste exemplo.

Recomendamos que você inclua também o ID da conta na qual o bucket do S3 foi criado para permitir a exportação dentro da mesma conta.

Para definir permissões em um bucket do S3.
  1. Crie um arquivo denominado policy.json e adicione a seguinte política de acesso, alterando my-exported-logs para o nome do bucket do S3 e Principal para o endpoint da região na qual você está exportando dados de log, como, por exemplo, us-west-1. Use um editor de texto para criar este arquivo de política. Não use o console do 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 a política que você acabou de adicionar como política de acesso no seu bucket usando o put-bucket-policycomando. Essa política permite que o CloudWatch Logs exporte dados de log para seu bucket do S3. O proprietário do bucket terá permissões completas sobre todos os objetos exportados.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    Atenção

    Se o bucket existente já tiver uma ou mais políticas anexadas, adicione as instruções de acesso de CloudWatch registros a essa política ou políticas. Recomendamos avaliar o conjunto resultante de permissões para ter certeza de que elas são apropriadas para os usuários que acessarão o bucket.

(Opcional) Etapa 4: exportar para um bucket criptografado com SSE - KMS

Essa etapa é necessária somente se você estiver exportando para um bucket do S3 que usa criptografia do lado do servidor com. AWS KMS keys Essa criptografia é conhecida como SSE -KMS.

Para exportar para um bucket criptografado com SSE - KMS
  1. Use um editor de texto para criar um arquivo chamado key_policy.json e adicione a seguinte política de acesso. Ao adicionar a política, faça as seguintes alterações:

    • Substituir Region com a região dos seus registros.

    • Substituir account-ARN com a ARN da conta que possui a KMS chave.

    { "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. Digite o comando :

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

    A seguir está um exemplo de saída deste 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. Use um editor de texto para criar um arquivo chamado bucketencryption.json com o seguinte conteúdo:

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Digite o comando a seguir, substituindo bucket-name com o nome do bucket para o qual você está exportando registros.

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

    Se o comando não retornar um erro, o processo foi bem-sucedido.

Etapa 5: Criar uma tarefa de exportação

Use o comando a seguir para criar a tarefa de exportação. Depois de criada, a tarefa de exportação pode levar de alguns segundos a algumas horas, dependendo do tamanho dos dados a serem exportados.

Para exportar dados para o Amazon S3 usando o AWS CLI
  1. Faça login com permissões suficientes, conforme documentado em Etapa 2: configurar permissões de acesso.

  2. Em um prompt de comando, use o create-export-taskcomando a seguir para criar a tarefa de exportação.

    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"

    O seguinte é um exemplo de saída.

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

Exportação entre contas

Se o bucket do Amazon S3 estiver em uma conta diferente da conta dos logs que estão sendo exportados, use as instruções nesta seção.

Etapa 1: criar um bucket do S3

Recomendamos que você use um bucket criado especificamente para o CloudWatch Logs. No entanto, se você desejar usar um bucket existente, vá para a etapa 2.

nota

O bucket do S3 deve residir na mesma região dos dados de log a serem exportados. CloudWatch O Logs não oferece suporte à exportação de dados para buckets do S3 em uma região diferente.

Para criar um bucket S3 usando o AWS CLI

Em um prompt de comando, execute o seguinte comando create-bucket, em que LocationConstraint é a região onde você está exportando dados de log.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

O seguinte é um exemplo de saída.

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

Etapa 2: configurar permissões de acesso

Primeiro, você deve criar uma nova IAM política para permitir que CloudWatch os Logs tenham a s3:PutObject permissão para o bucket Amazon S3 de destino.

Para criar a tarefa de exportação na etapa 5, você precisará estar conectado com a AmazonS3ReadOnlyAccess IAM função e com algumas outras permissões. Você pode criar uma política que contenha algumas dessas outras permissões necessárias.

A política que você cria depende se o bucket de destino usa AWS KMS criptografia. Se não usar AWS KMS criptografia, crie uma política com o conteúdo a seguir.

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

Se o bucket de destino usar AWS KMS criptografia, crie uma política com o conteúdo a seguir.

{ "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 criar a tarefa de exportação na etapa 5, você deve estar conectado com a AmazonS3ReadOnlyAccess IAM função, a IAM política que acabou de criar e também com as seguintes permissões:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:

Etapa 3: Definir permissões em um bucket do S3.

Por padrão, todos os buckets e objetos do S3 são privados. Somente o proprietário do recurso e a conta que criou o bucket podem acessar o bucket e todos os objetos que ele contém. No entanto, o proprietário do recurso pode optar por conceder permissões de acesso a outros recursos e usuários ao criar uma política de acesso padrão.

Importante

Para tornar as exportações para buckets S3 mais seguras, agora exigimos que você especifique a lista de contas de origem que têm permissão para exportar dados de log para seu bucket S3.

No exemplo a seguir, a lista de contas IDs na aws:SourceAccount chave seriam as contas das quais um usuário pode exportar dados de log para seu bucket do S3. A chave aws:SourceArn seria o recurso para o qual a ação está sendo realizada. Você pode restringir isso a um grupo de logs específico ou usar um curinga, como mostrado neste exemplo.

Recomendamos que você inclua também o ID da conta na qual o bucket do S3 foi criado para permitir a exportação dentro da mesma conta.

Para definir permissões em um bucket do S3.
  1. Crie um arquivo denominado policy.json e adicione a seguinte política de acesso, alterando my-exported-logs para o nome do bucket do S3 e Principal para o endpoint da região na qual você está exportando dados de log, como, por exemplo, us-west-1. Use um editor de texto para criar este arquivo de política. Não use o console do 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 a política que você acabou de adicionar como política de acesso no seu bucket usando o put-bucket-policycomando. Essa política permite que o CloudWatch Logs exporte dados de log para seu bucket do S3. O proprietário do bucket terá permissões completas sobre todos os objetos exportados.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    Atenção

    Se o bucket existente já tiver uma ou mais políticas anexadas, adicione as instruções de acesso de CloudWatch registros a essa política ou políticas. Recomendamos avaliar o conjunto resultante de permissões para ter certeza de que elas são apropriadas para os usuários que acessarão o bucket.

(Opcional) Etapa 4: exportar para um bucket criptografado com SSE - KMS

Essa etapa é necessária somente se você estiver exportando para um bucket do S3 que usa criptografia do lado do servidor com. AWS KMS keys Essa criptografia é conhecida como SSE -KMS.

Para exportar para um bucket criptografado com SSE - KMS
  1. Use um editor de texto para criar um arquivo chamado key_policy.json e adicione a seguinte política de acesso. Ao adicionar a política, faça as seguintes alterações:

    • Substituir Region com a região dos seus registros.

    • Substituir account-ARN com a ARN da conta que possui a KMS chave.

    { "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. Digite o comando :

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

    A seguir está um exemplo de saída deste 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. Use um editor de texto para criar um arquivo chamado bucketencryption.json com o seguinte conteúdo:

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Digite o comando a seguir, substituindo bucket-name com o nome do bucket para o qual você está exportando registros.

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

    Se o comando não retornar um erro, o processo foi bem-sucedido.

Etapa 5: Criar uma tarefa de exportação

Use o comando a seguir para criar a tarefa de exportação. Depois de criada, a tarefa de exportação pode levar de alguns segundos a algumas horas, dependendo do tamanho dos dados a serem exportados.

Para exportar dados para o Amazon S3 usando o AWS CLI
  1. Faça login com permissões suficientes, conforme documentado em Etapa 2: configurar permissões de acesso.

  2. Em um prompt de comando, use o create-export-taskcomando a seguir para criar a tarefa de exportação.

    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"

    O seguinte é um exemplo de saída.

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