Entrega de logs de acesso ao servidor para o CloudWatch Logs
Você pode entregar logs de acesso ao servidor do Amazon S3 para um grupo de logs do CloudWatch Logs usando a entrega de logs fornecidos do Amazon CloudWatch Logs. Depois que os logs estiverem no CloudWatch Logs, você poderá consultá-los com o CloudWatch Logs Insights, agregá-los em contas e regiões, criptografá-los com o AWS Key Management Service (AWS KMS) e, se desejar, entregá-los às Tabelas do Amazon S3 no formato Apache Iceberg para análise de SQL. Você também pode entregar logs para o Amazon S3 no formato JSON ou Apache Parquet ou roteá-los pelo Amazon Data Firehose.
Você configura a entrega usando as APIs do CloudWatch Logs, não as APIs do Amazon S3. Você especifica um grupo de logs para cada bucket de origem. Vários buckets podem compartilhar o mesmo grupo de logs, ou cada bucket pode entregar para si mesmo.
dica
Você pode configurar vários destinos para o mesmo bucket. Por exemplo, entregue a um grupo de logs do CloudWatch Logs para consultas interativas e entregue simultaneamente ao Amazon S3 no formato Parquet para retenção de longo prazo por um custo menor.
nota
A entrega de logs fornecidos do CloudWatch Logs também oferece suporte ao Amazon Data Firehose e ao Amazon S3 como destinos de entrega, incluindo o formato de saída Apache Parquet. Esta página aborda o destino do grupo de logs do CloudWatch Logs, que também oferece suporte à integração de Tabelas do S3 para análise de SQL. Para obter informações sobre os destinos do Firehose e do Amazon S3, consulte Habilitar o registro em log de serviços da AWS no Guia do usuário do Amazon CloudWatch Logs.
nota
Para obter informações sobre como entregar logs de acesso ao servidor para um bucket de uso geral do Amazon S3, consulte Habilitar o log de acesso ao servidor do Amazon S3.
Pré-requisitos
Antes de configurar a entrega, é necessário o seguinte:
-
Um bucket de uso geral do Amazon S3 (o bucket de origem que você deseja registrar).
-
Um grupo de logs do CloudWatch Logs na mesma Região da AWS do bucket de origem.
-
Permissões do perfil do IAM do chamador. No mínimo, são necessárias as seguintes permissões:
-
logs:PutDeliverySource -
logs:PutDeliveryDestination -
logs:CreateDelivery -
s3:AllowVendedLogDeliveryForResource(no bucket de origem)
Se você pretende habilitar a integração de Tabelas do S3, também precisará:
-
observabilityadmin:CreateS3TableIntegration -
logs:AssociateSourceToS3TableIntegration -
s3tables:CreateTableBucket -
s3tables:PutTableBucketEncryption -
s3tables:PutTableBucketPolicy
-
Configuração da entrega (AWS CLI)
Para configurar a entrega de logs de acesso ao servidor para o CloudWatch Logs usando o AWS Command Line Interface, conclua as três etapas a seguir.
-
Crie uma origem de entrega. Isso registra seu bucket do Amazon S3 como uma origem de log com o CloudWatch Logs.
aws logs put-delivery-source \ --namemy-sal-source\ --resource-arn arn:aws:s3:::my-bucket\ --log-type S3_SERVER_ACCESS_LOGS -
Crie um destino de entrega. Isso especifica o grupo de logs do CloudWatch Logs onde os logs serão entregues.
aws logs put-delivery-destination \ --namemy-sal-destination\ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}' -
Crie uma entrega. Isso vincula a origem ao destino e inicia a entrega de logs.
aws logs create-delivery \ --delivery-source-namemy-sal-source\ --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:my-sal-destination
Depois de concluir essas etapas, o Amazon S3 começa a entregar logs de acesso ao servidor para seu grupo de logs do CloudWatch Logs. A configuração leva de 15 a 20 minutos para ser propagada. Depois da propagação, a entrega de logs normalmente começa dentro de algumas horas. Somente novas solicitações são registradas; não há preenchimento de dados históricos.
Configuração da entrega (console do Amazon S3)
-
Faça login no console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
No painel de navegação à esquerda, escolha Buckets.
-
Selecione o nome do bucket de origem para o qual você deseja habilitar o registro em log.
-
Escolha a guia Properties (Propriedades).
-
Na seção Entrega de logs de acesso ao servidor para o CloudWatch Logs, escolha Editar.
-
Escolha Habilitar.
-
Selecione ou crie um grupo de logs do CloudWatch Logs como o destino de entrega.
-
(Opcional) Para entregar logs às Tabelas do S3 no formato Apache Iceberg, selecione Habilitar integração das Tabelas do S3.
-
Escolha Salvar alterações.
Depois de salvar, a seção Entrega de logs de acesso ao servidor para o CloudWatch Logs exibe o grupo de logs habilitado.
Configuração da entrega (CloudFormation)
Você pode usar o AWS CloudFormation para automatizar a configuração da entrega de logs de acesso ao servidor para o CloudWatch Logs. O modelo a seguir cria os recursos necessários: um perfil do IAM, um grupo de logs do CloudWatch Logs, uma origem de entrega, um destino de entrega e uma 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
Como habilitar a integração das Tabelas do S3 (opcional)
Quando você habilita a integração das Tabelas do S3, o CloudWatch Logs entrega automaticamente seus logs de acesso ao servidor no formato Apache Iceberg para o bucket de tabelas gerenciado aws-cloudwatch em sua conta. Você pode consultar esses dados usando o Amazon Athena, o Amazon Redshift ou qualquer ferramenta compatível com o Iceberg.
Não há custo adicional para armazenamento ou manutenção da tabela na integração das Tabelas do S3. Você paga somente pela ingestão do CloudWatch Logs e pelas solicitações de consulta de acordo com os preços de Tabelas do S3.
-
Crie a integração das Tabelas do S3 (uma vez por conta por região).
aws observabilityadmin create-s3-table-integration \ --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole\ --encryption '{"SseAlgorithm": "AES256"}'O perfil do IAM deve confiar na entidade principal de serviço
logs.amazonaws.com.rproxy.govskope.cae conceder a permissãologs:integrateWithS3Table. Veja abaixo um exemplo de política de confiança:{ "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" } } } ] }O perfil também precisa da seguinte política de permissões:
{ "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" } } } ] } -
Associe sua origem de entrega à integração.
aws logs associate-source-to-s3-table-integration \ --integration-arnintegration-arn\ --data-source '{"name":"amazon_s3","type":"server_access"}'
Após essas etapas, o CloudWatch Logs cria o bucket de tabelas gerenciado aws-cloudwatch e começa a entregar os logs no formato Iceberg. Os dados geralmente aparecem em até uma hora após a primeira entrega ao CloudWatch Logs.
Para obter informações sobre como consultar a integração das Tabelas do S3, consulte Consulta de logs de acesso nas Tabelas do S3.
Agregação entre contas e entre regiões
O caminho de entrega do CloudWatch Logs oferece suporte à agregação de logs entre contas e entre regiões com duas opções:
-
A observabilidade entre contas do CloudWatch permite que você consulte os logs existentes em todas as contas sem copiar dados.
-
A centralização do CloudWatch Logs permite consolidar logs de várias contas e regiões em um grupo de logs central, usando filtros de assinatura para encaminhamento seletivo (opcional).
Para configurações de várias contas, os administradores podem usar as regras de habilitação do CloudWatch Telemetry Config com o AWS Organizations para habilitar automaticamente a entrega de logs de acesso ao servidor em todas as contas de membro.
nota
Atualmente, as regras de habilitação não oferecem suporte à ativação automática da integração das Tabelas do S3. Você deve habilitar a integração separadamente em cada conta.
Criptografia
Você pode criptografar os logs de acesso ao servidor entregues ao CloudWatch Logs configurando a criptografia do AWS KMS no seu grupo de logs. Quando os logs de acesso ao servidor são entregues a esse grupo de logs, eles são criptografados com sua chave do AWS KMS. Isso aborda uma limitação importante do caminho de entrega de buckets de uso geral do Amazon S3, que aceita somente a criptografia SSE-S3.
Se você habilitar a integração das Tabelas do S3 com um grupo de logs criptografado pelo AWS KMS, deverá conceder permissões adicionais em sua política de chave do AWS KMS para as seguintes entidades principais de serviço:
{ "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/*" } } } ] }
A entidade principal systemtables.cloudwatch.amazonaws.com é usada pelo CloudWatch Logs para gravar logs nas Tabelas do S3. A entidade principal maintenance.s3tables.amazonaws.com é usada pelas Tabelas do S3 para operações do Iceberg, como compactação.
Como desabilitar a entrega
Para interromper a entrega de logs de acesso ao servidor para o CloudWatch Logs, você pode excluir a entrega ou a origem de entrega:
-
Excluir a entrega: interrompe a entrega de logs, mas mantém a configuração da origem de entrega intacta. Você pode criar uma nova entrega posteriormente sem reconfigurar a origem.
aws logs delete-delivery \ --iddelivery-id -
Excluir a origem de entrega: remove totalmente a configuração da origem. Use isso se você não quiser mais o bucket associado à entrega do CloudWatch Logs.
aws logs delete-delivery-source \ --namedelivery-source-name
Os logs entregues anteriormente permanecem no grupo de logs e na integração das Tabelas do S3 (se habilitado). A exclusão da entrega não remove os dados de log existentes.