この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。サービスグループの武田です。
Amazon Athenaは、Amazon S3に保存されたデータを標準的なSQLで分析できるサービスです。またAWS CloudTrailは、AWSアカウント内で行われた操作のイベントログを記録できるサービスで、ログはS3に保存できます。両サービスを組み合わせることで、CloudTrailが取得したログをAthenaで分析できます。
しかしこれまでは分析用のテーブルを自分で作成する必要があり、ややハードルの高さがありました。今回のサービスアップデートで、S3バケットを指定するだけで簡単にテーブルが作れるようになりました。
AWS CloudTrail Log Search Using Amazon Athena
やってみた
さっそくマネジメントコンソールにアクセスしてやってみました。
まずはマネジメントコンソールからCloudTrailにアクセスします。ダッシュボードは変化なしです。
イベント履歴のページに遷移すると「Amazon Athen で高度なクエリを実行します」のリンクが追加されています!
これをポチッとします。
テーブル作成用のダイアログが表示されました。「保存場所」のプルダウンからCloudTrailのログが保存されているバケットを選択します。選択するとテンプレートが自動的に選択したバケットに合わせて書き換わります。
用意されているクエリのテンプレートは次のようになっていました。
CREATE EXTERNAL TABLE [TABLE_NAME] (
eventVersion STRING,
userIdentity STRUCT<
type: STRING,
principalId: STRING,
arn: STRING,
accountId: STRING,
invokedBy: STRING,
accessKeyId: STRING,
userName: STRING,
sessionContext: STRUCT<
attributes: STRUCT<
creationDate: STRING,
mfaAuthenticated: STRING>,
sessionIssuer: STRUCT<
type: STRING,
principalId: STRING,
arn: STRING,
accountId: STRING,
userName: 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
)
COMMENT 'CloudTrail table for [S3_BUCKET_NAME] bucket'
ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '[S3_BUCKET_URL]'
TBLPROPERTIES ('classification'='cloudtrail');
注意点として、このダイアログ上ではSQLを書き換えることができません。そのためPARTITIONED BY
を追加したり、LOCATION
をバケットそのものではなく、特定の日付(/2018/03/15
のような)を指定するといったことはできませんでした。
保存場所を指定したら[テーブルの作成]ボタンをクリックします。
無事に作成されたようです。[Athena に移動]ボタンをクリックするとAthenaのコンソール画面に移動できます。
作成したテーブルをPreview table
で確認すると、きちんとデータが取れています!
まとめ
今まではCloudTrail用のテーブルを作成するのに、CREATE EXTERNAL TABLE
を自分で用意する必要がありましたが、ワンクリックで簡単に作れるようになりました。すばらしいですね。
私もはじめて作ろうとした際に右往左往した記憶があります。これから始めようという方達にとってうれしいアップデートでした!