Amazon S3バケットのリクエスタ支払設定を有効にしてみた

S3リクエスタ支払いバケットにAWS CLIでアクセスする方法を調べました。
2021.01.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Amazon S3にはリクエスタ支払いバケットの設定があることをご存知でしょうか。
まず、S3はストレージクラスによって、ストレージ利用サイズ / リクエスト回数 / データ取り出し回数,サイズ / データ転送サイズ など様々な要素で料金が構成されています。

上記のデータのアクセスにかかるコストを、バケット所有者ではなくてデータへのアクセス者が支払うことが出来るオプションです。

今回はアカウント間でバケット共有を行て、AWS CLIからアクセスを試みました。
公式ドキュメントだけだと躓いた点があったので記しておきます。

共有バケットの作成

バケットを別アカウントへ共有するためには、バケット所有アカウントでバケットポリシーを設定し、アクセスするアカウントでIAMポリシーを設定する必要があります。
手順は以下を参考にします。

バケットには秘密のJPEG画像をいくつかアップロードしておきました。

試しにCLIからアクセスしてみます。

iwasa.takahito@HL00780 ~ % aws s3 ls s3://requester20210110 --profile iwasa-requester
2021-01-10 17:56:43    2508399 07327631-34C6-420B-99B6-EB35EECBFCDE.jpeg
2021-01-10 17:56:45    2698209 300F5271-79CC-4B38-8942-ADD1F09A39AF.jpeg
2021-01-10 17:56:46    1895803 307F99F2-9C4A-489E-9EE8-163E1A2B555D.jpeg
2021-01-10 17:56:40    1637090 AB9692D9-1A35-4C48-8BDA-F3CF449E7384.jpeg
2021-01-10 17:56:37    1000650 E3BD2D8B-8B67-4988-9F06-5D22D554237E.jpeg
iwasa.takahito@HL00780 ~ %

アクセス出来ました。

リクエスタ支払いの有効化

さて、リクエスタ支払い機能を有効化してみます。
バケットのプロパティで有効化を行うだけです。

上記キャプチャに記載されていますが、有効化するとバケットへの匿名アクセスが出来なくなります。
マネジメントコンソール上も匿名アクセス関連の設定箇所は非活性になります。

ではアクセスしてみたいと思います。これでリクエスタ側での料金負担の扱いとなるのでしょうか。

iwasa.takahito@HL00780 ~ % aws s3 ls s3://requester20210110 --profile iwasa-requester

An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
iwasa.takahito@HL00780 ~ %

アクセスが拒否されました。

リクエスタ支払いが有効化されると、通常のアクセス方法ではアクセス出来なくなります。
※ バケット所有者はアクセス出来ます。

リクエスタ支払いバケットへのアクセス方法

上記文中にありますが、HTTPアクセスの場合はリクエストヘッダに"x-amz-request-payer"を含める必要があります。
明示的に含めることで、リクエスタ側がこのデータアクセスに対しての料金を負担することを了承したことを示す仕組みです。

上記ドキュメントでは言及されていないですが、AWS CLIでアクセスする場合はオプションを指定することでアクセスすることが出きます。

--request-payerオプションを指定してみましょう。

iwasa.takahito@HL00780 ~ % aws s3 ls s3://requester20210110 --request-payer --profile iwasa-requester 
2021-01-10 17:56:43    2508399 07327631-34C6-420B-99B6-EB35EECBFCDE.jpeg
2021-01-10 17:56:45    2698209 300F5271-79CC-4B38-8942-ADD1F09A39AF.jpeg
2021-01-10 17:56:46    1895803 307F99F2-9C4A-489E-9EE8-163E1A2B555D.jpeg
2021-01-10 17:56:40    1637090 AB9692D9-1A35-4C48-8BDA-F3CF449E7384.jpeg
2021-01-10 17:56:37    1000650 E3BD2D8B-8B67-4988-9F06-5D22D554237E.jpeg
iwasa.takahito@HL00780 ~ %

取得できました。

さいごに

同じようにリクエスタ支払いバケットへAWS CLIでアクセスしようとした際にアクセスできなかった方の参考になれば幸いです。