

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
<a name="sal-cw-enabling"></a>

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 ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html) 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](enable-server-access-logging.md)

## Prerequisiti
<a name="sal-cw-prerequisites"></a>

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)
<a name="sal-cw-setup-cli"></a>

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
   ```

1. **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}}"}'
   ```

1. **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)
<a name="sal-cw-setup-console"></a>

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

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

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

1. Scegliere la scheda **Properties (Proprietà)**.

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

1. Scegli **Abilita **.

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

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

1. 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)
<a name="sal-cw-setup-cfn"></a>

È 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)
<a name="sal-cw-tables-integration"></a>

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:integrateWithS3Table`autorizzazione. 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}}"
           }
         }
       }
     ]
   }
   ```

1. **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](sal-cw-querying-s3tables.md)

## Cross-account e aggregazione interregionale
<a name="sal-cw-cross-account"></a>

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)
<a name="sal-cw-encryption"></a>

È 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
<a name="sal-cw-disabling"></a>

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.