AWS S3のリクエスト支払い(Requester Pays)は、S3バケットの所有者ではなく、バケットにアクセスするユーザー(リクエスター)に対して、データリクエストやデータ転送料金の支払い責任を課す機能です。
✅ 特徴
-
デフォルトでは、バケットの所有者がすべてのコストを支払います。
-
「リクエスト支払い」を有効にすると:
- データ取得(GET、HEADなど)の料金をアクセスユーザーが支払う
- データ転送コスト(アウトバウンド)もアクセスユーザーが負担
-
ストレージ料金はバケット所有者が引き続き支払う
✅ ユースケース
- 公開データセット(例:地理データや天文データなど)を多数のユーザーが使うときに、アクセスコストを分担させたい場合。
- 特定の外部パートナーやサービスにデータを提供するが、転送料金を請求したくないとき。
✅ 有効化方法(バケットオーナー側)
aws s3api put-bucket-request-payment \
--bucket バケット名 \
--request-payment-configuration Payer=Requester
✅ アクセスする際の注意点(リクエスター側)
リクエスターは、明示的に --request-payer requester
を付ける必要があります。
aws s3 cp s3://バケット名/ファイル名 ローカルファイル名 \
--request-payer requester
✅ 補足
- アクセス側がこのオプションを指定しないと、「403 Access Denied」になります。
- S3 バケットポリシーで、リクエスターに対するアクセス権限(
s3:GetObject
など)を明示的に許可しておく必要があります。