深くネストされたキーパスのS3 URL

日付ベースまたは階層パーティショニングを使用した深くネストされたオブジェクトキーのS3 URLを解析します。S3フラットストレージがフォルダ構造をどのようにシミュレートするかを理解します。

Practical Patterns

詳細な説明

S3の深くネストされたキーパス

S3はフラットオブジェクトストアです — 実際のディレクトリ階層はありません。オブジェクトキーのフォワードスラッシュ(/)は単なる文字で、S3コンソールやツールがフォルダとして表示するだけです。URLを正しく解析するためにこれを理解することが重要です。

URL例

https://data-lake.s3.us-east-1.amazonaws.com/raw/events/source=web/year=2024/month=01/day=15/hour=14/events-00001.json.gz

解析されたコンポーネント

コンポーネント
バケット data-lake
キー raw/events/source=web/year=2024/month=01/day=15/hour=14/events-00001.json.gz
リージョン us-east-1
スタイル 仮想ホスト形式

Hive形式パーティショニング

キーはHive形式パーティショニングkey=valueセグメント)を使用しており、データレイクで一般的なパターンです:

パーティション
source web
year 2024
month 01
day 15
hour 14

このパーティショニングスキームは以下で理解されます:

  • AWS Athena — キー構造からパーティションを自動検出
  • Apache Spark — パスからパーティションカラムを読み取り
  • AWS Glue — クローラーがHive形式パーティションを検出
  • Presto / Trino — 効率的なクエリのためのパーティションプルーニング

プレフィックスベースの操作

S3はプレフィックスマッチングを使用するため、サブセットに対して効率的にリストまたは操作できます:

# 2024年1月のすべてのイベントを一覧表示
aws s3 ls s3://data-lake/raw/events/source=web/year=2024/month=01/

# 特定の日のすべてのデータを削除
aws s3 rm s3://data-lake/raw/events/source=web/year=2024/month=01/day=15/ --recursive

キー長の制限

S3オブジェクトキーはUTF-8エンコード時に最大1,024バイトです。長いパーティション値を持つ深いネストはこの制限に近づく可能性があります。キーを制限内に十分収めるようにパーティショニングスキームを計画してください。

ユースケース

Lambda関数でS3イベント通知URLを解析して日付パーティション値を抽出し、ソースと日付階層に基づいてデータを適切な処理パイプラインにルーティングする。

試してみる — AWS S3 URL Parser

フルツールを開く