Erstellen Sie eine Tabelle für CloudTrail Logs in Athena mit manueller Partitionierung - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie eine Tabelle für CloudTrail Logs in Athena mit manueller Partitionierung

Sie können manuell Tabellen für CloudTrail Protokolldateien in der Athena-Konsole erstellen und dann Abfragen in Athena ausführen.

So erstellen Sie mit der Athena-Konsole eine Athena-Tabelle für einen CloudTrail Trail
  1. Kopieren Sie die folgende DDL Anweisung und fügen Sie sie in den Abfrageeditor der Athena-Konsole ein.

    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, eventCategory 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/CloudTrail/';
    Anmerkung

    Wir empfehlen, die im Beispiel org.apache.hive.hcatalog.data.JsonSerDe gezeigte Methode zu verwenden. Obwohl a com.amazon.emr.hive.serde.CloudTrailSerde existiert, verarbeitet es derzeit einige der neueren CloudTrail Felder nicht.

  2. (Optional) Entfernen Sie alle für Ihre Tabelle nicht benötigten Felder. Wenn Sie nur eine bestimmte Gruppe von Spalten lesen müssen, kann Ihre Tabellendefinition die anderen Spalten ausschließen.

  3. Ändern Sie s3://amzn-s3-demo-bucket/AWSLogs/Account_ID/CloudTrail/ so, dass auf den Amazon-S3-Bucket gezeigt wird, der Ihre Protokolldaten enthält.

  4. Überprüfen Sie, ob die Felder korrekt aufgeführt werden. Weitere Informationen zur vollständigen Liste der Felder in einem CloudTrail Datensatz finden Sie unter CloudTrail Datensatzinhalt.

    Die CREATE TABLE Beispielanweisung in Schritt 1 verwendet dieBienenstock JSON SerDe. Im Beispiel additionaleventdata sind die Felder requestparametersresponseelements, und als Typ STRING in der Abfrage aufgeführt, es handelt sich jedoch um den STRUCT Datentyp, der in verwendet wirdJSON. Um aus diesen Feldern Daten zu extrahieren, müssen Sie daher JSON_EXTRACT-Funktionen verwenden. Weitere Informationen finden Sie unter Extrahieren Sie JSON Daten aus Zeichenketten. Um die Leistung zu verbessern, partitioniert das Beispiel die Daten nach Jahr AWS-Region, Monat und Tag.

  5. Führen Sie die CREATE TABLE-Anweisung in der Athena-Konsole aus.

  6. Verwenden Sie den Befehl ALTER TABLE ADD PARTITION, um die Partitionen zu laden, sodass Sie sie abfragen können, wie im folgenden Beispiel.

    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/'