S3プロトコルURI (s3://) を解析する

AWS CLI、SDK、SparkやHadoopなどのツールで使用されるs3://プロトコルURI形式を解析します。HTTPエンドポイントへのマッピング方法を理解します。

S3 Protocol

詳細な説明

s3://プロトコルURI

s3://プロトコルはHTTP URLではありません。AWSツール(CLI、SDK)、Apache Spark、Hadoop、その他のデータ処理フレームワークがS3オブジェクトを参照するために使用するURIスキームです。HTTPエンドポイントの詳細を抽象化した、簡潔で人間が読みやすい形式を提供します。

URI構造

s3://BUCKET/KEY

s3://data-lake-prod/raw/events/2024/01/15/events.parquet

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

コンポーネント
バケット data-lake-prod
キー raw/events/2024/01/15/events.parquet
リージョン (URIに埋め込まれていない)
スタイル S3プロトコル

s3://が使用される場面

コンテキスト
AWS CLI aws s3 cp s3://bucket/key ./local-file
AWS SDK SDK設定でS3の場所を指定
Apache Spark spark.read.parquet("s3://bucket/path")
Hadoop hadoop fs -ls s3://bucket/prefix/
AWS Glue データカタログのテーブルロケーション
AWS Athena クエリ結果の保存場所
Terraform S3バックエンドの状態保存

リージョン解決

s3:// URIにはリージョン情報が含まれません。リージョンは以下で解決されます:

  1. AWS_DEFAULT_REGION環境変数
  2. ~/.aws/configファイルのプロファイル
  3. EC2インスタンスメタデータ(AWS上で実行時)
  4. バケットの実際のリージョン(HEADリクエスト経由)

関連URIスキーム

  • s3a:// — Hadoop 2.x+でS3Aファイルシステムコネクタによる改善されたS3アクセスに使用。
  • s3n:// — レガシーHadoop S3ネイティブファイルシステム(非推奨)。
  • s3-external-1:// — まれに使用、us-east-1の明示的ルーティング用。

ユースケース

AWS Glueジョブスクリプトで使用されるs3:// URIと、WebアプリケーションフロントエンドのブラウザベースアクセスやAPI呼び出しに必要なHTTPS URLの間で変換する。

試してみる — AWS S3 URL Parser

フルツールを開く