S3オブジェクトARN — バケット内ファイルの参照

S3オブジェクトARNを解析し、バケット名とオブジェクトキーが単一のリソース識別子にどのように組み合わされるかを理解します。IAMポリシーのワイルドカードパターンも解説。

Storage

詳細な説明

S3内の特定オブジェクトを対象にする

S3バケットARNがバケット自体を参照するのに対し、S3オブジェクトARNはバケット内の特定のファイル(オブジェクト)を指します。オブジェクトキー(プレフィックスを含む完全なパス)はスラッシュの後にバケット名に続きます。

ARNの例

arn:aws:s3:::my-app-data/reports/2024/q4-summary.csv

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

コンポーネント
Partition aws
Service s3
Region (空)
Account ID (空)
Resource Type (なし — バケット名は暗黙的)
Resource ID my-app-data/reports/2024/q4-summary.csv

IAMポリシーでのワイルドカードパターン

IAMポリシーでは、単一のファイルではなくオブジェクトのグループにアクセスを付与する必要がよくあります。S3オブジェクトARNはワイルドカードパターンをサポートしています:

  • バケット内の全オブジェクト: arn:aws:s3:::my-app-data/*
  • プレフィックス配下のオブジェクト: arn:aws:s3:::my-app-data/reports/*
  • パターンに一致するオブジェクト: arn:aws:s3:::my-app-data/reports/2024/*.csv

バケットとオブジェクトのパーミッション

よくあるIAMポリシーのミスは、バケットARNではなくオブジェクトARNにs3:ListBucketを付与することです。List操作はバケット(arn:aws:s3:::bucket)を対象とし、Get/Put操作はオブジェクト(arn:aws:s3:::bucket/*)を対象とします。両者を混同すると、デバッグが困難なサイレントアクセス拒否が発生します。

ユースケース

S3バケット内の特定のプレフィックス(フォルダ)やファイルタイプへのアクセスを制限する細粒度のIAMポリシーの作成。各テナントのデータが別々のプレフィックスに存在するマルチテナントアプリケーションで一般的。

試してみる — AWS ARN Parser

フルツールを開く