Criar uma tabela de logs do CloudTrail no Athena usando particionamento manual
É possível criar manualmente tabelas de arquivos de log do CloudTrail no console do Athena e executar consultas no Athena.
Para criar uma tabela do Athena para uma trilha do CloudTrail no console do Athena
-
Copie e cole a instrução DDL a seguir em um editor de consultas do console do Athena e modifique-a de acordo com seus requisitos. Observe que, como os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API públicas, os campos dos arquivos de log não aparecem em nenhuma ordem específica.
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 o
org.apache.hive.hcatalog.data.JsonSerDe
exibido no exemplo. Embora exista umcom.amazon.emr.hive.serde.CloudTrailSerde
, no momento ele não processa alguns dos campos mais recentes do CloudTrail. -
(Opcional) Remova quaisquer campos não obrigatórios para a tabela. Se for necessário ler somente um determinado conjunto de colunas, sua definição de tabela poderá excluir as outras colunas.
-
Modifique
s3://amzn-s3-demo-bucket/AWSLogs/
para apontar para o bucket do Amazon S3 que contém os dados de log que você deseja consultar. O exemplo usa um valorAccount_ID
/LOCATION
de logs para uma determinada conta, mas você pode usar o grau de especificidade adequado ao aplicativo. Por exemplo:-
Para analisar dados de várias contas, você pode reverter o especificador
LOCATION
para indicar todos osAWSLogs
usandoLOCATION 's3://amzn-s3-demo-bucket/AWSLogs/'
. -
Para analisar dados de uma data, conta e região específica, use
LOCATION 's3://amzn-s3-demo-bucket/123456789012/CloudTrail/us-east-1/2016/03/14/'.
-
Para analisar dados de atividade de rede em vez de eventos de gerenciamento, substitua
/CloudTrail/
na cláusulaLOCATION
por/CloudTrail-NetworkActivity/
.
O uso do nível mais alto na hierarquia de objetos proporciona maior flexibilidade ao consultar usando o Athena.
-
-
Verifique se os campos estão listados corretamente. Para obter mais informações sobre a lista completa de campos em um registro do CloudTrail, consulte Conteúdo do registro do CloudTrail.
A declaração de exemplo
CREATE TABLE
na Etapa 1 usa Hive JSON SerDe. No exemplo, os camposrequestparameters
,responseelements
eadditionaleventdata
são listados como tipoSTRING
na consulta, mas são tipos de dadosSTRUCT
usados em JSON. Portanto, para obter dados desses campos, use funçõesJSON_EXTRACT
. Para ter mais informações, consulte Extrair dados JSON de strings. Para melhorias de performance, o exemplo particiona os dados por Região da AWS, ano, mês e dia. -
Execute a instrução
CREATE TABLE
no console do Athena. -
Use o comando ALTER TABLE ADD PARTITION a fim de carregar as partições para que você consiga consultá-las, conforme o exemplo a seguir.
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/
'