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ポリシーの作成。各テナントのデータが別々のプレフィックスに存在するマルチテナントアプリケーションで一般的。