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
-
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.JsonSerDemostrato nell'esempio. Sebbene uncom.amazon.emr.hive.serde.CloudTrailSerdeesista, attualmente non gestisce alcuni dei campi CloudTrail più recenti. -
(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.
-
Modifica
s3://amzn-s3-demo-bucket/AWSLogs/perché punti al bucket Amazon S3 che contiene i dati di log che vuoi interrogare. L'esempio utilizza unAccount_ID/LOCATIONvalore 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
LOCATIONper selezionare tutti gliAWSLogsconLOCATION '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 clausolaLOCATIONcon/CloudTrail-NetworkActivity/.
Indicando il livello più elevato nella gerarchia degli oggetti hai la massima flessibilità nelle query con Athena.
-
-
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 TABLEnella Fase 1 utilizza il Hive JSON SerDe. Nell’esempio, i campirequestparameters,responseelementseadditionaleventdatasono elencati come tipoSTRINGnella query, ma sono dati di tipoSTRUCTutilizzati in JSON. Pertanto, per estrarre i dati da questi campi, utilizza le funzioniJSON_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. -
Esegui l'istruzione
CREATE TABLEnella console Athena. -
Utilizzare il comando ALTER TABLE ADD PARTITION per caricare le partizioni in modo da poterle interrogare, come nell'esempio seguente.
ALTER TABLEtable_nameADD 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/'