View a markdown version of this page

Invio dei log di accesso al server a Logs CloudWatch - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Invio dei log di accesso al server a Logs CloudWatch

Puoi fornire i log di accesso al server Amazon S3 a un gruppo di log Logs utilizzando Amazon CloudWatch Logs vended log delivery. CloudWatch Una volta che i log sono in CloudWatch Logs, puoi interrogarli con CloudWatch Logs Insights, aggregarli tra account e regioni, crittografarli con AWS Key Management Service (AWS KMS) e, facoltativamente, inviarli alle tabelle Amazon S3 in formato Apache Iceberg per l'analisi SQL. Puoi anche inviare i log ad Amazon S3 in formato JSON o Apache Parquet o indirizzarli tramite Amazon Data Firehose.

La distribuzione viene configurata utilizzando le API CloudWatch Logs, non le API di Amazon S3. Specifichi un gruppo di log per ogni bucket di origine. Più bucket possono condividere lo stesso gruppo di log oppure ogni bucket può consegnare il proprio.

Suggerimento

Puoi configurare più destinazioni per lo stesso bucket. Ad esempio, esegui la consegna a un gruppo di CloudWatch log Logs per eseguire query interattive e contemporaneamente distribuisci ad Amazon S3 in formato Parquet per la conservazione a lungo termine a costi inferiori.

Nota

CloudWatch Logs vended log delivery supporta anche Amazon Data Firehose e Amazon S3 come destinazioni di consegna, incluso il formato di output Apache Parquet. Questa pagina descrive la destinazione del gruppo di CloudWatch log Logs, che supporta anche l'integrazione di S3 Tables per l'analisi SQL. Per informazioni sulle destinazioni Firehose e Amazon S3, consulta Enable logging from AWS services nella Amazon CloudWatch Logs User Guide.

Nota

Per informazioni sulla distribuzione dei log di accesso al server a un bucket generico Amazon S3, consulta invece. Abilitazione della registrazione degli accessi al server Amazon S3

Prerequisiti

Prima di configurare la consegna, è necessario quanto segue:

  • Un bucket Amazon S3 per uso generico (il bucket di origine che desideri registrare).

  • Un gruppo di CloudWatch log Logs nello stesso del bucket Regione AWS di origine.

  • Autorizzazioni IAM per il chiamante. Come minimo, sono necessarie le seguenti autorizzazioni:

    • logs:PutDeliverySource

    • logs:PutDeliveryDestination

    • logs:CreateDelivery

    • s3:AllowVendedLogDeliveryForResource(nel bucket di origine)

    Se intendi abilitare l'integrazione con S3 Tables, avrai bisogno anche di:

    • observabilityadmin:CreateS3TableIntegration

    • logs:AssociateSourceToS3TableIntegration

    • s3tables:CreateTableBucket

    • s3tables:PutTableBucketEncryption

    • s3tables:PutTableBucketPolicy

Impostazione della consegna (AWS CLI)

Per configurare l'invio dei log di accesso al server a CloudWatch Logs utilizzando il AWS Command Line Interface, completare i tre passaggi seguenti.

  1. Crea una fonte di consegna. Questo registra il tuo bucket Amazon S3 come fonte di log con Logs. CloudWatch

    aws logs put-delivery-source \ --name my-sal-source \ --resource-arn arn:aws:s3:::my-bucket \ --log-type S3_SERVER_ACCESS_LOGS
  2. Crea una destinazione di consegna. Specifica il gruppo di CloudWatch log Logs in cui verranno consegnati i log.

    aws logs put-delivery-destination \ --name my-sal-destination \ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}'
  3. Crea una consegna. Questo collega l'origine alla destinazione e avvia la consegna del registro.

    aws logs create-delivery \ --delivery-source-name my-sal-source \ --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:my-sal-destination

Dopo aver completato questi passaggi, Amazon S3 inizia a fornire i log di accesso al server al tuo gruppo di CloudWatch log Logs. La propagazione della configurazione richiede 15-20 minuti. Dopo la propagazione, la consegna dei log inizia in genere entro poche ore. Vengono registrate solo le nuove richieste: non è previsto il backfill dei dati storici.

Configurazione della consegna (console Amazon S3)

  1. Accedi alla console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Scegli il nome del bucket di origine per il quale desideri abilitare la registrazione.

  4. Scegliere la scheda Properties (Proprietà).

  5. Nella sezione Invio dei log di accesso al server ai CloudWatch log, scegli Modifica.

  6. Scegli Abilita .

  7. Seleziona o crea un gruppo di CloudWatch log Logs come destinazione di consegna.

  8. (Facoltativo) Per inviare i log a S3 Tables in formato Apache Iceberg, seleziona Abilita l'integrazione con S3 Tables.

  9. Scegli Save changes (Salva modifiche).

Dopo il salvataggio, la sezione Consegna dei log di accesso al server ai log mostra il gruppo di CloudWatch log abilitato.

Impostazione della consegna (CloudFormation)

È possibile utilizzarlo AWS CloudFormation per automatizzare la configurazione della consegna dei log di accesso al server ai CloudWatch log. Il modello seguente crea le risorse richieste: un ruolo IAM, un gruppo di CloudWatch log Logs, una fonte di consegna, una destinazione di consegna e una consegna.

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

Abilitazione dell'integrazione con S3 Tables (opzionale)

Quando abiliti l'integrazione con S3 Tables, CloudWatch Logs invia automaticamente i log di accesso al server in formato Apache Iceberg al bucket di tabelle aws-cloudwatch gestito nel tuo account. Puoi quindi interrogare questi dati utilizzando Amazon Athena, Amazon Redshift o qualsiasi strumento. Iceberg-compatible

Non sono previsti costi aggiuntivi per l'archiviazione o la manutenzione delle tabelle nell'integrazione di S3 Tables. Paghi solo per l'inserimento CloudWatch dei log e per le richieste di query ai prezzi di S3 Tables.

  1. Crea l'integrazione di S3 Tables (una volta per account per regione).

    aws observabilityadmin create-s3-table-integration \ --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole \ --encryption '{"SseAlgorithm": "AES256"}'

    Il ruolo IAM deve fidarsi del responsabile del logs.amazonaws.com servizio e concedere l'logs:integrateWithS3Tableautorizzazione. Di seguito è illustrato un esempio di policy di attendibilità:

    { "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" } } } ] }

    Il ruolo richiede anche la seguente politica di autorizzazione:

    { "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" } } } ] }
  2. Associa la fonte di consegna all'integrazione.

    aws logs associate-source-to-s3-table-integration \ --integration-arn integration-arn \ --data-source '{"name":"amazon_s3","type":"server_access"}'

Dopo questi passaggi, CloudWatch Logs crea il bucket di tabelle aws-cloudwatch gestite e inizia a fornire i log in formato Iceberg. I dati vengono in genere visualizzati entro un'ora dalla prima consegna a CloudWatch Logs.

Per informazioni sull'interrogazione dell'integrazione con S3 Tables, consulta. Interrogazione dei log di accesso nelle tabelle S3

Cross-account e aggregazione interregionale

Il percorso di consegna CloudWatch dei log supporta l'aggregazione dei log tra account e tra regioni con due opzioni:

  • CloudWatch L'osservabilità tra più account consente di interrogare i log esistenti tra gli account senza copiare i dati.

  • CloudWatch La centralizzazione dei log consente di consolidare i log di più account e regioni in un gruppo di log centrale, utilizzando opzionalmente filtri di abbonamento per l'inoltro selettivo.

Per le configurazioni con più account, gli amministratori possono utilizzare le regole di abilitazione di CloudWatch Telemetry Config per abilitare automaticamente la distribuzione dei log di accesso al server tra gli account membri. AWS Organizations

Nota

Le regole di abilitazione attualmente non supportano l'abilitazione automatica dell'integrazione con S3 Tables. È necessario abilitare l'integrazione separatamente in ciascun account.

Encryption (Crittografia)

È possibile crittografare i log di accesso al server inviati a CloudWatch Logs configurando AWS KMS la crittografia nel gruppo di log. Quando i log di accesso al server vengono inviati a quel gruppo di log, vengono crittografati con la tua AWS KMS chiave. Ciò risolve una limitazione fondamentale del percorso di distribuzione dei bucket generici di Amazon S3, che supporta solo SSE-S3 la crittografia.

Se abiliti l'integrazione di S3 Tables con un gruppo AWS KMS di log crittografato, devi concedere autorizzazioni aggiuntive nella tua policy AWS KMS chiave ai seguenti service principal:

{ "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/*" } } } ] }

Il systemtables.cloudwatch.amazonaws.com principale viene utilizzato da CloudWatch Logs per scrivere i log su S3 Tables. Il maintenance.s3tables.amazonaws.com principale viene utilizzato da S3 Tables per operazioni Iceberg come la compattazione.

Disattivazione della consegna

Per interrompere l'invio dei log di accesso al server a CloudWatch Logs, puoi eliminare la consegna o la fonte di consegna:

  • Elimina la consegna: interrompe la consegna dei log ma mantiene intatta la configurazione dell'origine di consegna. Puoi creare una nuova consegna in un secondo momento senza riconfigurare l'origine.

    aws logs delete-delivery \ --id delivery-id
  • Elimina l'origine di consegna: rimuove completamente la configurazione di origine. Usalo se non desideri più che il bucket sia associato alla consegna di CloudWatch Logs.

    aws logs delete-delivery-source \ --name delivery-source-name

I log forniti in precedenza rimangono nel gruppo di log e nell'integrazione di S3 Tables (se abilitata). L'eliminazione della consegna non rimuove i dati di registro esistenti.