S3 年月日形式の階層構成構成
AWS S3 にデータを効率的に管理するためには、階層構成を年月日形式で設定することが推奨されます。
aws s3 cp your-log-file.log s3://your-bucket/logs/$(date +%Y/%m/%d)/
このコマンドは、現在の年月日に基づいて階層を自動的に作成し、ファイルをその場所にコピーします。
S3 に圧縮したログファイルを配置する方法
ログファイルを圧縮することで、ストレージコストを削減し、転送時間を短縮することができます。
gzip your-log-file.log
aws s3 cp your-log-file.log.gz s3://your-bucket/logs/$(date +%Y/%m/%d)/
Athena で参照するために Partition を付与したテーブルを作成する方法
Amazon Athena で S3 上のデータを効率的に検索するためには、Partition を設定する必要があります。
CREATE EXTERNAL TABLE IF NOT EXISTS your_log_table (
example_field STRING,
another_field INT
)
PARTITIONED BY (year STRING, month STRING, day STRING)
STORED AS PARQUET
LOCATION 's3://your-bucket/logs/';
次に、Partition を追加する必要があります。
コマンドの主な目的は、テーブルのメタデータを更新し、新しく追加されたパーティションを認識することです。具体的には、このコマンドは S3 のデータをスキャンし、新しいパーティションを自動的に追加します。
MSCK REPAIR TABLE your_log_table;
Athena で検索する手順
Partition が設定されたテーブルを Athena で検索するには、以下の SQL クエリを使用します。
SELECT * FROM your_log_table
WHERE year = '2023' AND month = '04' AND day = '26';
このクエリは、指定した日付のデータを検索します。