Creación de una tabla para los registros de CloudTrail en Athena mediante la partición manual
Puede crear manualmente tablas para los archivos de registro de CloudTrail en la consola de Athena y, a continuación, ejecutar consultas en Athena.
Para crear una tabla de Athena para un registro de seguimiento de CloudTrail con la consola de Athena
-
Copie y pegue la siguiente instrucción de DDL en el editor de consultas de la consola de Athena y, a continuación, modifíquela según sea necesario para sus propios requisitos de entrada de registros. Tenga en cuenta que, dado que los archivos de registro de CloudTrail no son un seguimiento ordenado de las llamadas a la API públicas, los campos de los archivos de registro no aparecen en ningún orden específico.
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
Sugerimos usar
org.apache.hive.hcatalog.data.JsonSerDe
como se muestra en el ejemplo. Aunque existecom.amazon.emr.hive.serde.CloudTrailSerde
, actualmente no gestiona algunos de los campos más recientes de CloudTrail. -
(Opcional) Elimine los campos que no sean obligatorios para la tabla. Si solo necesita leer un determinado conjunto de columnas, la definición de la tabla puede excluir las demás columnas.
-
Modifique
s3://amzn-s3-demo-bucket/AWSLogs/
de modo que apunte al bucket de Amazon S3 que contiene los datos de registro que desea consultar. En el ejemplo se usa como valor deAccount_ID
/LOCATION
los registros de una cuenta determinada, pero puede especificar tanto como requiera su aplicación. Por ejemplo:-
Para analizar datos de varias cuentas, puede modificar el especificador
LOCATION
para que indique todos losAWSLogs
con el valorLOCATION 's3://amzn-s3-demo-bucket/AWSLogs/'
. -
Para analizar los datos de una fecha, cuenta y región específicas, utilice
LOCATION 's3://amzn-s3-demo-bucket/123456789012/CloudTrail/us-east-1/2016/03/14/'.
-
Para analizar los datos de actividad de la red en lugar de los eventos de administración, sustituya
/CloudTrail/
en la cláusulaLOCATION
por/CloudTrail-NetworkActivity/
.
El uso del máximo nivel en la jerarquía de objetos le ofrece la mayor flexibilidad al ejecutar consultas con Athena.
-
-
Compruebe que los campos se muestran correctamente. Para obtener más información sobre la lista completa de campos de un registro de CloudTrail, consulte Contenido de los registros de CloudTrail.
La instrucción
CREATE TABLE
de ejemplo del paso 1 utiliza El SerDe JSON de Hive. En el ejemplo, los camposrequestparameters
,responseelements
yadditionaleventdata
aparecen como tipoSTRING
en la consulta, pero son del tipo de datosSTRUCT
utilizado en JSON. Por lo tanto, para obtener datos de estos campos puede usar funcionesJSON_EXTRACT
. Para obtener más información, consulte Extracción de datos JSON de cadenas. Para mejorar el rendimiento, este ejemplo particiona los datos por Región de AWS, año, mes y día. -
Ejecutar la instrucción
CREATE TABLE
en la consola de Athena. -
Utilice el comando ALTER TABLE ADD PARTITION para cargar las particiones de modo que pueda consultarlas, como en el ejemplo siguiente.
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/
'