Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別
2021/06/06
こちらCloudTrail を使用した Amazon S3 リクエストの識別に書いているとおりに設定しました。
目次
Query result locationバケットの設定
Athenaをはじめて作成するアカウント、リージョンでしたので、Query result locationのS3バケットを設定しました。
Athenaデータベースの作成
|
1 2 |
CREATE DATABASE s3_cloudtrail_events_db |
[Run Query]で実行しました。
テーブルの作成
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
CREATE EXTERNAL TABLE s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table( 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 ) 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://bucketname/AWSLogs/123456789012/'; |
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’
CloudTrail SerDeというのを使っているのですね。
bucketnameはCloudTrailのログを出力しているS3バケットを指定しました。
作成できたので、テストクエリーで確認します。
|
1 2 3 4 |
SELECT * FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table WHERE eventsource='s3.amazonaws.com' LIMIT 2; |
クエリー結果が表示されました。
S3オブジェクトへのリクエストを抽出
期間を指定してGetObjectを抽出してみました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT eventTime, eventName, eventSource, sourceIpAddress, userAgent, json_extract_scalar(requestParameters, '$.bucketName') as bucketName, json_extract_scalar(requestParameters, '$.key') as object, userIdentity.arn as userArn FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket1_table WHERE eventName = 'GetObject' AND eventTime BETWEEN '2021-06-01T00:00:00Z' and '2021-06-03T00:00:00Z' |
出力できました。
1.44GBのデータをスキャンして、1分32秒かかりました。
コストもパフォーマンスもよくないですね。
次のブログでパーティショニングを試します。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
CSVとParquetのデータ比較
データ分析にはParquetのほうが良いとは言いますが、実際のところはどうなのか …
-
-
AWS Summit Tokyo 2017 聴講したセッションのメモ
2017年6月に参加しましたAWS Summitで聴講したセッションのメモを記し …
-
-
AWS認定SAPの執筆開始にあたって環境を構築しました
AWS認定ソリューションアーキテクトプロフェッショナル対策本の執筆開始にあたりま …
-
-
AWS Transit GatewayをResource Access Managerで他アカウントと共有
AWS Transit Gatewayを他アカウントに共有しました。 画面画像で …
-
-
AWS Transfer Family S3向けのSFTP対応サーバー
S3バケットは作成済です。 IAMロールの作成 [crayon-6acdbc69 …
-
-
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー」執筆裏話
今日2019/4/20発売となりました「AWS認定資格試験テキスト AWS認定ク …
-
-
AWS ControlTowerで既存アカウントをまとめて追加
AWS Organizationsに新たに招待したアカウントをAWS Contr …
-
-
Amazon SES, S3で受信したメールをAWS Lambda, SESで別のメールへ転送する
Amazon SESでメール受信で受信したメールを、毎回S3バケットに見に行って …
-
-
Route 53サブドメインホストゾーンを作成したら、元のホストゾーンにNSレコードを作成する自動化
ハンズオン環境でRoute 53のホストゾーンを触ってほしい際に、サブドメインを …
-
-
S3 VPCエンドポイント設定前と設定後を確認
S3のVPCエンドポイントを設定した際に、S3バケットのAPIエンドポイントへの …




