概要

過去のCloudTrailログに対してAthenaを使用して解析する機会があったのでこちらの記事にまとめたいと思います。
コンソールからテーブルを作成し、クエリを実行するだけで過去のイベントが簡単に検索できます。

テーブル作成

CloudTrailにコンソール上からアクセスし「イベント履歴」ページを開きます。

「Athenaテーブル作成」ボタンをクリック。
スクリーンショット 2020-12-23 0.51.23.png

Athenaテーブル作成ページが表示されるので
ログ保存バケットを選択し、右下の「テーブル作成」をクリック。

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<
                mfaAuthenticated: STRING,
                creationDate: 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 cloudtrail-bucket 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://cloudtrail-bucket/AWSLogs/XXXXXXXXXXXX/CloudTrail/'
TBLPROPERTIES ('classification'='cloudtrail')

※こちらのクエリを直接Athenaに貼り付けても、テーブルの作成はできます。
CREATE EXTERNAL TABLE にテーブルネーム
LOCATION S3に保管しているCloudTrailログのパスを指定

クエリ実行

Athenaを開き、テーブルが作成されているのを確認。
クエリを実行しカラム解析を行う。

よく使うカラム

useridentity
eventtime 
eventsource 
eventname
awsregion 
useragent
requestparameters

カラムの詳細については公式ページの「CloudTrailレコードの詳細」を参考にしてください
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html

クエリ実行例

SELECT "useridentity","eventtime","eventsource","eventname","awsregion","useragent"
,"requestparameters"
FROM "テーブル名"
WHERE eventName ='CreateStuck(検索したいAPI名)'AND 
awsregion ='ap-northeast-1'(検索したいリージョン)AND 
eventTime > '2020-12-01T00:00:00Z(検索したい期間)';

上記の例でクエリを実行すると、12月00日以降、東京リージョンで作成されたCloudFromationのスタック作成イベントを検索します。

まとめ

過去のCloudTrailログを検索するのにAthenaはとても便利です。
まずは中身の内容について知ることでより検索の精度が上がると思うのでまずはSELECTで”*”をかけてみて全カラムの内容を確認してみると良いと思います。

参照ページ

AWS CloudTrail ログのクエリ
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudtrail-logs.html

ご応募はこちら

中途採用Ⅰの募集要項へ
(首都圏に在住の方)

中途採用Ⅰ

中途採用Ⅱの募集要項へ
(地方に在住の方)

中途採用Ⅱ

応募前に会社のことをもっと知りたい方へ

カジュアル面談

インターンの募集要項へ
(高校生から大学院生、社会人経験者の方まで)

インターン採用

フリーランスの募集要項へ
(エンジニア職、マーケティング職等)

フリーランス契約

募集内容や応募に関するご質問はこちらへ

お問い合わせ

おすすめ情報

AWS技術支援

AWS技術支援

AIRz

AWSのコスト管理自動化クラウドサービス「AIRz」

会社情報

会社情報