深くネストされたキーパスの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を解析して日付パーティション値を抽出し、ソースと日付階層に基づいてデータを適切な処理パイプラインにルーティングする。