1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VPC LatticeのログをAthenaで見よう

Posted at

はじめに

VPC LatticeのログをS3に出力して、Athenaで見られるようにしたときのメモです。

Latticeログの種類

以下2つのログを出力させることができます。

  • サービスのログ
  • サービスネットワークのログ

細かい違いは以下に書きますが、ログファイルの内容は同じものでした。

サービスのログ

Latticeサービス固有のログです。

S3上の保存先のパスは以下のようになっていました。
s3://{バケット名}/AWSLogs/{アカウントID}/VpcLattice/AccessLogs/{リージョン}/svc-xxxxxxxxxxx/

サービスネットワークのログ

紐づくサービスすべてのログが含まれます。

S3上の保存先のパスは以下のようになっていました。
s3://{バケット名}/AWSLogs/{アカウントID}/VpcLattice/AccessLogs/{リージョン}/sn-xxxxxxxxxxxx/svc-xxxxxxxxxxx/

Athenaでのテーブル作成

以下の DDL でテーブルを作成することができました。

CREATE EXTERNAL TABLE IF NOT EXISTS {データベース}.{テーブル名} (
  `hostHeader` string,
  `sslCipher` string,
  `serviceNetworkArn` string,
  `resolvedUser` string,
  `authDeniedReason` string,
  `requestMethod` string,
  `targetGroupArn` string,
  `tlsVersion` string,
  `userAgent` string,
  `serverNameIndication` string,
  `destinationVpcId` string,
  `sourceIpPort` string,
  `targetIpPort` string,
  `serviceArn` string,
  `sourceVpcId` string,
  `requestPath` string,
  `startTime` string,
  `protocol` string,
  `responseCode` int,
  `bytesReceived` bigint,
  `bytesSent` bigint,
  `duration` bigint,
  `requestToTargetDuration` bigint,
  `responseFromTargetDuration` bigint,
  `sourceVpcArn` string,
  `callerPrincipal` string,
  `callerPrincipalOrgID` string,
  `callerX509IssuerOU` string,
  `callerX509SubjectCN` string,
  `callerX509SANNameCN` string,
  `callerX509SANDNS` string,
  `callerX509SANURI` string
)
PARTITIONED BY (
 partition STRING
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1'
) LOCATION 's3://{バケット名}/AWSLogs/{アカウントID}/VpcLattice/AccessLogs/{リージョン}/svc-xxxxxxxxxxx/'
TBLPROPERTIES (
    'has_encrypted_data'='false',
    'projection.enabled'='true', 
    'projection.partition.format'='yyyy-MM-dd', 
    'projection.partition.interval'='1', 
    'projection.partition.interval.unit'='DAYS', 
    'projection.partition.range'='2024-01-01,NOW', 
    'projection.partition.type'='date', 
    'storage.location.template'='s3://{バケット名}/AWSLogs/{アカウントID}/VpcLattice/AccessLogs/{リージョン}/svc-xxxxxxxxxxx/${partition}/'
);

S3パスでの日時のディレクトリ構造が 〜/YYYY-mm-DD/〜 となっており、パーティションに多少の工夫が必要でした。

おわりに

どなたかの参考になれば幸いです。
もっと適したDDLがありましたら教えていただけると幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?