Crea una tabella per i registri CloudTrail in Athena utilizzando il partizionamento manuale - Amazon Athena

Crea una tabella per i registri CloudTrail in Athena utilizzando il partizionamento manuale

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

Per creare una tabella Athena per un trail CloudTrail 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. Nota che poiché i file di log di CloudTrail non sono una traccia stack ordinata delle chiamate API pubbliche, i campi nei file di log 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 un com.amazon.emr.hive.serde.CloudTrailSerde esista, attualmente non gestisce alcuni dei campi CloudTrail più recenti.

  2. (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.

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

  4. Verificare che i campi siano elencati correttamente. Per ulteriori informazioni sull'elenco completo dei campi in un registro, consulta i Contenuti del registro di CloudTrail.

    L'istruzione di esempio CREATE TABLE nella Fase 1 utilizza il Hive JSON SerDe. 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. Per migliorare le prestazioni, questo esempio partiziona i dati per Regione AWS, anno, mese e giorno.

  5. Esegui l'istruzione CREATE TABLE nella console Athena.

  6. Utilizzare il comando ALTER TABLE ADD PARTITION 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/'