S3オブジェクトへのリクエストをCloudTrail, Athenaで識別する(パーティショニング)
2021/07/21
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別では、クエリーのために1.44GBのデータをスキャンして、1分32秒かかっていてコストもパフォーマンスもよくないのでパーティショニングを試してみました。
目次
テーブルの作成
こちらCloudTrail を使用した Amazon S3 リクエストの識別の「署名バージョン 2 データのパーティション化」記載のテーブル作成クエリを実行しました。
|
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 53 |
CREATE EXTERNAL TABLE s3_cloudtrail_events_db.cloudtrail_yamamugi_partiion_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 ) PARTITIONED BY (region string, year string, month string, day 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'; |
PARTITIONED BYでリージョン、年、月、日でパーティションを設定しました。
テーブル名に(Partitined)がつきました。
パーティションの追加
|
1 2 3 4 |
ALTER TABLE s3_cloudtrail_events_db.cloudtrail_yamamugi_partiion_table ADD PARTITION (region= 'ap-northeast-3', year= '2021', month= '06', day= '01') LOCATION 's3://yamamugi-blog-log/AWSLogs/142639723455/CloudTrail/ap-northeast-3/2021/06/01/' PARTITION (region= 'ap-northeast-3', year= '2021', month= '06', day= '02') LOCATION 's3://yamamugi-blog-log/AWSLogs/142639723455/CloudTrail/ap-northeast-3/2021/06/02/'; |
テーブルができのでパーティションを追加しました。
クエリの実行
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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_yamamugi_partiion_table WHERE eventName = 'GetObject' AND region= 'ap-northeast-3' AND year= '2021' AND month= '06' AND day= '01' |
WHERE句で、パーティションを加えています。
対象のパーティションだけを検索したので、1.67MBのデータをスキャンして、1.89秒で結果が返ってきました。
顕著にパーティションの効果が確認できました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
EC2にSystems MangerからCloudWatchエージェントをインストール
CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …
-
-
ECR(Amazon Elastic Container Registry)にコンテナイメージをアップロードする
「Pandocサーバーのコンテナイメージを作成する」で作成したイメージをAWS …
-
-
AWS Secrets ManagerのローテーションでLambda関数の管理が必要なくなりました
Amazon RDS と AWS Secrets Manager の統合を発表と …
-
-
AWS複数アカウントのリソースをLambda(Python)から一括操作したくて
AWSの複数アカウント(30ちょい)のリソースをまとめて自動処理したくて。 とり …
-
-
AWS Trusted Advisorの2023/11/17発表のAPI
2023/11/17に発表されたAWS Trusted Advisor の新しい …
-
-
Amazon VPCでIPv6を使用する
VPCのIPv6を設定してみました。 設定 [Amazon 提供の IPv6 C …
-
-
AWS Certificate Manager(ACM)メール検証をDNS検証の証明書に差し替えました
ブログの証明書 このブログの証明書の有効期限があと1週間です。 証明書はAWS …
-
-
Windows EC2インスタンスでEBSとインスタンスストアを使用する
Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …
-
-
ブログの画像を別アカウントのS3に移動するためにIAMロールでクロスアカウントアクセス
ずっと先延ばしにしていたのですが、このブログの画像はEC2から直接配信しています …
-
-
AWS Lambda KMSを使って環境変数を暗号化、復号化する(Python)
Lambda内で外部APIを使用する場合などをユースケースとして、環境変数をKM …



