Erstellen einer Tabelle für CloudTrail-Protokolle in Athena mithilfe der manuellen Partitionierung - Amazon Athena

Erstellen einer Tabelle für CloudTrail-Protokolle in Athena mithilfe der manuellen Partitionierung

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

So erstellen Sie eine Athena-Tabelle für einen CloudTrail-Trail mit der Athena-Konsole
  1. Kopieren Sie die folgende DDL-Anweisung, fügen Sie sie in den Abfrage-Editor 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 diesen Dateien nicht um eine geordnete Stapelverfolgung öffentlicher API-Aufrufe 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 gezeigte org.apache.hive.hcatalog.data.JsonSerDe zu verwenden. Obwohl ein 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/ so, dass es auf den Amazon S3-Bucket verweist, der die Log-Daten 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 AWSLogs alle LOCATION 's3://amzn-s3-demo-bucket/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/ in der 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-Datensatzinhalte.

    Die CREATE TABLE-Beispielanweisung in Schritt 1 verwendet Hive JSON SerDe. In diesem Beispiel werden die Felder requestparameters, responseelements und additionaleventdata als STRING-Typ in der Abfrage aufgelistet, stellen jedoch den STRUCT-Datentyp dar, der in JSON verwendet wird. 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 Zeichenfolgen. Zur Leistungsverbesserung werden die Daten in diesem Beispiel nach AWS-Region, Jahr, Monat und Tag partitioniert.

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