[新機能]ワンクリックでAmazon AthenaのAWS CloudTrail用テーブルが作成できるようになりました

この記事は公開されてから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を自分で用意する必要がありましたが、ワンクリックで簡単に作れるようになりました。すばらしいですね。

私もはじめて作ろうとした際に右往左往した記憶があります。これから始めようという方達にとってうれしいアップデートでした!