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, fügen Sie sie in den Abfrageeditor der Athena-Konsole ein und ändern Sie sie dann entsprechend Ihren Anforderungen. Beachten Sie, dass die Felder in den CloudTrail Protokolldateien nicht in einer bestimmten Reihenfolge angezeigt werden, da es sich bei den Protokolldateien nicht um einen geordneten Stack-Trace von öffentlichen API Aufrufen handelt.

    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/';
    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/ es so, dass es auf den Amazon S3 S3-Bucket verweist, der die Protokolldaten enthält, die Sie abfragen möchten. Im Beispiel wird der Wert LOCATION für Protokolle eines bestimmten Kontos verwendet, aber Sie können den Grad an Spezifität angeben, der für Ihre Anwendung erforderlich ist. Beispiel:

    • Für die Datenanalyse von mehreren Konten können Sie den Bezeichner LOCATION zurücksetzen und dann mit LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/' alle AWSLogs angeben.

    • Zur Analyse der Daten von einem bestimmten Datum, Konto und Region verwenden Sie LOCATION 's3://amzn-s3-demo-bucket/123456789012/CloudTrail/us-east-1/2016/03/14/'.

    • Um Netzwerkaktivitätsdaten anstelle von Verwaltungsereignissen zu analysieren, ersetzen Sie /CloudTrail/ die LOCATION Klausel durch/CloudTrail-NetworkActivity/.

    Die oberste Ebene der Objekthierarchie bietet bei Abfragen mit Athena die größte Flexibilität.

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