AWS CloudTrail のデータをAthenaで確認するサンプル

AWSのCloudTrailのデータをAthenaテーブルで確認するサンプルです。

目次

サンプル 目的
  Athenaテーブルを設定する
Athenaテーブルでデータを確認する
取得した項目の例
作成されるAthenaテーブルの項目

目的

  • CloudTrailのデータをAthenaテーブルに入れSQLで確認できます。
  • CloudTrail Lakeと異なり過去のデータも確認できます。
  • クエリでスキャンされるデータ量に基づいて課金されます。
    https://aws.amazon.com/jp/athena/pricing/
  • データイベントはWeb画面のイベント履歴上に出力されませんがAthenaでは表示されます。
    https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudtrail-data-management-events/?utm_source=pocket_mylist

 

Athenaテーブルを設定する

1.検索入力欄で「CloudTrail」と入力し、表示された「CloudTrail」をクリックします。

2.「イベント履歴」をクリックします。

3.「Athenaテーブルを作成」をクリックします。

 

4.ストレージの場所を指定します。テーブルのCreate文は自動で生成されます。

 

5.「設定を表示」をクリックします。

 

6.「管理」をクリックします。

 

7.バケットを選択します。

 

8.クエリ結果の場所と予期されるバケット所有者を入力し保存をクリックします。

 

Athenaテーブルでデータを確認する

1.検索入力欄で「Athena」と入力し、表示された「Athena」をクリックします。

2.「クエリ」の箇所にSQLを入力できます。

 

3.実行結果は下にスクロールすると表示されます。

「結果をダウンロード」ボタンからデータをCSV形式でダウンロードできます。

 

取得した項目の例

Lambdaの関数を実行したときのeventnameとuseragentとrequestparametersです。

eventname

PutObject

useragent

[Boto3/1.20.32 Python/3.9.13 Linux/4.14.255-276-224.499.amzn2.x86_64 exec-env/AWS_Lambda_python3.9 Botocore/1.23.32 Resource]

OSはAmazon Linux2でPython3.9を使用していることがわかります。

requestparameters

{"bucketName":"test-s3-data-2022","Host":"test-s3-data-2022.s3.ap-northeast-1.amazonaws.com","key":"testData1.txt"}

バケット名、ホスト、keyが表示されています。

 

作成される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 [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');

関連の記事

AWS CloudTrailでEC2の起動を確認する
AWS CloudTrail Lakeでデータを確認するサンプル

△上に戻る