Skip to content

Instantly share code, notes, and snippets.

@sasasin
Last active November 23, 2022 17:09
Show Gist options
  • Save sasasin/5e11c40fbc947156fe5f983f8eb36dcd to your computer and use it in GitHub Desktop.
Save sasasin/5e11c40fbc947156fe5f983f8eb36dcd to your computer and use it in GitHub Desktop.
CloudFront アクセスログや S3 アクセスログを Athena パーティショニングが使えるようリネームするやつ
#!/bin/bash -e
set -o pipefail
# how to use
# rename-to-s3-access-log-for-athena-partitioning.sh "s3://hogehoge/piyopiyo" "2022" "11" "23"
S3_ACCESS_LOG_BUCKET_PATH="$1"
YYYY="$2"
MM="$3"
DD="$4"
s5cmd mv \
"${S3_ACCESS_LOG_BUCKET_PATH}/${YYYY}-${MM}-${DD}-*-*-*-*" \
"${S3_ACCESS_LOG_BUCKET_PATH}/${YYYY}/${MM}/${DD}/"
@sasasin
Copy link
Author

sasasin commented Nov 23, 2022

パーティションキーを Hive 形式にするなら、引数の YYYY-MM-DD は直接は s5cmd の検索キーに使うだけにして、シェル内で加工するとか、YYYY-MM-DD とは別で Hive 形式のも引数で渡してしまうとかね

@sasasin
Copy link
Author

sasasin commented Nov 23, 2022

aws s3 mv をチマチマやってたら遅すぎたので s5cmd mv に改めた

@sasasin
Copy link
Author

sasasin commented Nov 23, 2022

ALB などと同様の階層構造に置くようにして、Athenaの Partition Projection 定義を使いまわせるようにした

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment