この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、臼田です。
みなさん、CloudTrailの調査してますか?(挨拶
今回は私のただの備忘録ですが、AthenaでCloudTrailのログをクエリしてcsvでダウンロードするときに、構造データ(つまりuserIdentity)をフラットにしておきたいと思ったのでそのSELECT文を置いておきます。
ちょっと前置き
テーブル作成は以下を参照しています。パーティションが自動で切れるのでサイコーですよね。
クエリ
以下のようになります。
SELECT eventVersion,
userIdentity.type AS userIdentity_type,
userIdentity.principalId AS userIdentity_principalId,
userIdentity.arn AS userIdentity_arn,
userIdentity.accountId AS userIdentity_accountId,
userIdentity.invokedBy AS userIdentity_invokedBy,
userIdentity.accessKeyId AS userIdentity_accessKeyId,
userIdentity.userName AS userIdentity_userName,
userIdentity.sessionContext.attributes.mfaAuthenticated AS userIdentity_sessionContext_attributes_mfaAuthenticated,
userIdentity.sessionContext.attributes.creationDate AS userIdentity_sessionContext_attributes_creationDate,
userIdentity.sessionContext.sessionIssuer.type AS userIdentity_sessionContext_sessionIssuer_type,
userIdentity.sessionContext.sessionIssuer.principalId AS userIdentity_sessionContext_sessionIssuer_principalId,
userIdentity.sessionContext.sessionIssuer.arn AS userIdentity_sessionContext_sessionIssuer_arn,
userIdentity.sessionContext.sessionIssuer.accountId AS userIdentity_sessionContext_sessionIssuer_accountId,
userIdentity.sessionContext.sessionIssuer.userName AS userIdentity_sessionContext_sessionIssuer_userNam,
eventTime,
eventSource,
eventName,
awsRegion,
sourceIpAddress,
userAgent,
errorCode,
errorMessage,
requestParameters,
responseElements,
additionalEventData,
requestId,
eventId,
resources,
eventType,
apiVersion,
readOnly,
recipientAccountId,
serviceEventDetails,
sharedEventID,
vpcEndpointId
FROM cloudtrail_logs_partition_projection;
特別なことは何もしてないです。単純にこれ作るのが面倒なので、残しておこうと思いました。
AS
を利用していますが、これがないとtype
などのカラムが複数出来上がるためです。カラム名は.
の代わりに_
を利用しています。
これでCSVでダウンロードして簡単にこねこねできます。
なお、これが最適化はわからないので、もっといいやり方を知っている人がいたら教えて下さい。
まとめ
とりあえず自分の役に立つと思うのでまとめました。
使いたい人がいたらどうぞ。