

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à.

# Creare una tabella per CloudTrail i log in Athena utilizzando il partizionamento manuale
<a name="create-cloudtrail-table"></a>

È possibile creare manualmente tabelle per i file di CloudTrail registro nella console Athena e quindi eseguire query in Athena.

**Per creare una tabella Athena per un CloudTrail percorso utilizzando la console Athena**

1. Copia e incolla la seguente istruzione DDL nell’editor di query della console Athena, quindi modificala in base alle tue esigenze. Tieni presente che, poiché i file di CloudTrail registro non sono una traccia ordinata di chiamate API pubbliche, i campi nei file di registro non vengono visualizzati in un ordine specifico.

   ```
   CREATE EXTERNAL TABLE cloudtrail_logs (
   eventversion STRING,
   useridentity STRUCT<
                  type:STRING,
                  principalid:STRING,
                  arn:STRING,
                  accountid:STRING,
                  invokedby:STRING,
                  accesskeyid:STRING,
                  username:STRING,
                  onbehalfof: STRUCT<
                       userid: STRING,
                       identitystorearn: STRING>,
     sessioncontext:STRUCT<
       attributes:STRUCT<
                  mfaauthenticated:STRING,
                  creationdate:STRING>,
       sessionissuer:STRUCT<  
                  type:STRING,
                  principalid:STRING,
                  arn:STRING, 
                  accountid:STRING,
                  username:STRING>,
       ec2roledelivery:string,
       webidfederationdata: STRUCT<
                  federatedprovider: STRING,
                  attributes: map<string,string>>
     >
   >,
   eventtime STRING,
   eventsource STRING,
   eventname STRING,
   awsregion STRING,
   sourceipaddress STRING,
   useragent STRING,
   errorcode STRING,
   errormessage STRING,
   requestparameters STRING,
   responseelements STRING,
   additionaleventdata STRING,
   requestid STRING,
   eventid STRING,
   resources ARRAY<STRUCT<
                  arn:STRING,
                  accountid:STRING,
                  type:STRING>>,
   eventtype STRING,
   apiversion STRING,
   readonly STRING,
   recipientaccountid STRING,
   serviceeventdetails STRING,
   sharedeventid STRING,
   vpcendpointid STRING,
   vpcendpointaccountid STRING,
   eventcategory STRING,
   addendum STRUCT<
     reason:STRING,
     updatedfields:STRING,
     originalrequestid:STRING,
     originaleventid:STRING>,
   sessioncredentialfromconsole STRING,
   edgedevicedetails STRING,
   tlsdetails STRUCT<
     tlsversion:STRING,
     ciphersuite:STRING,
     clientprovidedhostheader:STRING>
   )
   PARTITIONED BY (region string, year string, month string, day string)
   ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
   OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/{{Account_ID}}/';
   ```
**Nota**  
Suggeriamo di utilizzare il `org.apache.hive.hcatalog.data.JsonSerDe` mostrato nell’esempio. Sebbene a `com.amazon.emr.hive.serde.CloudTrailSerde` esista, attualmente non gestisce alcuni dei campi più recenti. CloudTrail 

1. (Facoltativo) Rimuovi tutti i campi non obbligatori per la tabella. Se è necessario leggere solo un determinato set di colonne, la definizione della tabella può escludere le altre colonne.

1. Modifica `s3://amzn-s3-demo-bucket/AWSLogs/{{Account_ID}}/` perché punti al bucket Amazon S3 che contiene i dati di log che vuoi interrogare. L'esempio utilizza un `LOCATION` valore di log per un determinato account, ma è possibile utilizzare il grado di specificità più adatta alla tua applicazione. Ad esempio:
   + Per analizzare i dati provenienti da più account, puoi eseguire il rollback dell'identificatore `LOCATION` per selezionare tutti gli `AWSLogs` con `LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/'`.
   + Per analizzare i dati provenienti da una data, account e regione specifici, utilizza `LOCATION 's3://amzn-s3-demo-bucket/123456789012/CloudTrail/us-east-1/2016/03/14/'.` 
   + Per analizzare i dati sulle attività di rete anziché gli eventi di gestione, sostituire `/CloudTrail/` nella clausola `LOCATION` con `/CloudTrail-NetworkActivity/`. 

   Indicando il livello più elevato nella gerarchia degli oggetti hai la massima flessibilità nelle query con Athena.

1. Verificare che i campi siano elencati correttamente. Per ulteriori informazioni sull'elenco completo dei campi in un CloudTrail record, vedere il [contenuto del CloudTrail record](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html).

   L’istruzione di esempio `CREATE TABLE` nella Fase 1 utilizza il [JSON Hive SerDe](hive-json-serde.md). Nell’esempio, i campi `requestparameters`, `responseelements` e `additionaleventdata` sono elencati come tipo `STRING` nella query, ma sono dati di tipo `STRUCT` utilizzati in JSON. Pertanto, per estrarre i dati da questi campi, utilizza le funzioni `JSON_EXTRACT`. Per ulteriori informazioni, consulta [Estrarre dati JSON da stringhe](extracting-data-from-JSON.md). Per migliorare le prestazioni, l'esempio partiziona i dati per anno Regione AWS, mese e giorno.

1. Esegui l'istruzione `CREATE TABLE` nella console Athena.

1. Utilizzare il comando [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) per caricare le partizioni in modo da poterle interrogare, come nell'esempio seguente.

   ```
   ALTER TABLE {{table_name}} ADD 
      PARTITION (region='us-east-1',
                 year='2019',
                 month='02',
                 day='01')
      LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/{{Account_ID}}/CloudTrail/{{us-east-1/2019/02/01/}}'
   ```