Menu
Logs do Amazon CloudWatch
Guia do usuário

Exportação de dados de log para o Amazon S3 com a AWS CLI

No exemplo a seguir, você usará uma tarefa de exportação para exportar todos os dados de um grupo de logs do CloudWatch Logs 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".

Etapa 1: Criar um bucket do Amazon 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 Amazon S3 deve residir na mesma região que os dados de log a serem exportados. O CloudWatch Logs não oferece suporte à exportação de dados para buckets do Amazon S3 em uma região diferente.

Para criar um bucket do Amazon S3 com a 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:

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

O seguinte é uma saída de exemplo:

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

Etapa 2: Definir permissões em um bucket do Amazon S3

Por padrão, todos os buckets e objetos do Amazon S3 são privados. Somente o proprietário do recurso, a conta da AWS que criou o bucket, pode 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.

Para definir permissões em um bucket do Amazon S3

  1. Crie um arquivo chamado policy.json e adicione a seguinte política de acesso, mudando Resource para o nome do seu bucket do S3 e Principal para o endpoint da região onde você está exportando dados de log.

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.us-west-2.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-west-2.amazonaws.com" } } ] }
  2. Defina a política que você acabou de adicionar como política de acesso ao seu bucket usando o comando put-bucket-policy. Essa política permite que o CloudWatch Logs exporte dados de log para o seu bucket do Amazon S3. O proprietário do bucket terá permissões completas sobre todos os objetos exportados.

    Copy
    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 declarações de acesso do CloudWatch Logs a essa política ou a essas 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.

Etapa 3: Criar uma tarefa de exportação

Depois de criar a tarefa de exportação para exportar os logs de um grupo de logs, a tarefa poderá demorar de alguns segundos a algumas horas, dependendo do tamanho dos dados a serem exportados.

Para criar uma tarefa de exportação usando a AWS CLI

Em um prompt de comando, use o seguinte comando create-export-task para criar a tarefa de exportação:

Copy
aws logs create-export-task --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 é uma saída de exemplo:

Copy
{ "task-id": "cda45419-90ea-4db5-9833-aade86253e66" }

Etapa 4: Descrever tarefas de exportação

Depois de criar uma tarefa de exportação, você pode obter o status atual da tarefa.

Para descrever as tarefas de exportação usando a AWS CLI

No prompt de comando, use o seguinte comando describe-export-tasks:

Copy
aws logs describe-export-tasks --task-id "cda45419-90ea-4db5-9833-aade86253e66"

O seguinte é uma saída de exemplo:

Copy
{ "ExportTasks": [ { "Destination": "my-exported-logs", "DestinationPrefix": "export-task-output", "ExecutionInfo": { "CreationTime": 1441495400000 }, "From": 1441490400000, "LogGroupName": "my-log-group", "Status": { "Code": "RUNNING", "Message": "Started Successfully" }, "TaskId": "cda45419-90ea-4db5-9833-aade86253e66", "TaskName": "my-log-group-09-10-2015", "To": 1441494000000 }] }

Você pode usar o comando describe-export-tasks de três maneiras diferentes:

  • Sem filtros: lista todas as suas tarefas de exportação, na ordem inversa de criação.

  • Filtrar com base na ID de tarefa: lista a tarefa de exportação, se houver, com a ID especificada.

  • Filtrar com base no status da tarefa: lista as tarefas de exportação com o status especificado.

Por exemplo, use o comando a seguir para filtrar com base no status COM FALHA:

Copy
aws logs describe-export-tasks --status-code "FAILED"

O seguinte é uma saída de exemplo:

Copy
{ "ExportTasks": [ { "Destination": "my-exported-logs", "DestinationPrefix": "export-task-output", "ExecutionInfo": { "CompletionTime": 1441498600000 "CreationTime": 1441495400000 }, "From": 1441490400000, "LogGroupName": "my-log-group", "Status": { "Code": "FAILED", "Message": "FAILED" }, "TaskId": "cda45419-90ea-4db5-9833-aade86253e66", "TaskName": "my-log-group-09-10-2015", "To": 1441494000000 }] }

Etapa 5: Cancelar uma tarefa de exportação

Você pode cancelar uma tarefa de exportação se ela estiver no estado EM EXECUÇÃO ou PENDENTE.

Para cancelar uma tarefa de exportação usando a AWS CLI

No prompt de comando, use o seguinte comando cancel-export-task:

Copy
aws logs cancel-export-task --task-id "cda45419-90ea-4db5-9833-aade86253e66"

Você pode usar o comando describe-export-task para verificar se a tarefa foi cancelada com êxito.