S3バケットのリクエスタ支払い
2021/09/19
S3バケットのリクエスタ支払いを試しました。
目次
バケットの設定
検証用のS3バケットを作ろうと、「requester-payment」ってバケット作ってみたら作れました。
世界中でこの名前のバケットを作っているのは自分だけということです。
乱数とか日付とかつけなくてもバケットを作れたときって嬉しいですよね。
テンションがあがってきました。
S3バケットのプロパティでリクエスタ支払いを有効にしました。
Payerの設定をオーナーアカウントで確認しました。
1 2 3 4 5 |
$ aws s3api get-bucket-request-payment --bucket requester-payment { "Payer": "Requester" } |
支払い者がRequesterになっているということですね。
これでリクエスタ支払いになっていることがCLIからも確認できました。
パブリックアクセスを試してみる
リクエスタ支払いを有効にしたバケットでは匿名アクセスはできなくなります。
それはそうですね。
一応試してみます。
パブリックアクセスブロックを4つとも解除して、
画像をアップロードしてACLでパブリック読み取りを許可、
バケットポリシーでパブリックにしても、
AccessDeniedになりました。
それはそうですね。
他のアカウントからリクエスト
最小権限の原則を実装しましょう。
バケットポリシーです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/yamashita" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::requester-payment/*" } ] } |
別アカウントのIAMユーザー側の該当アクション向けのポリシーです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::requester-payment/*" ] } ] } |
アップロードしておいたオブジェクトをダウンロードしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ aws s3api get-object \ --bucket requester-payment \ --key s3-req-pay-1.png \ s3-req-pay-1.png \ --request-payer requester { "AcceptRanges": "bytes", "LastModified": "2021-08-28T07:23:10+00:00", "ContentLength": 79219, "ETag": "\"8746113efe350cb8b1a7f143a55aa5a1\"", "ContentType": "image/png", "Metadata": {}, "RequestCharged": "requester" } |
ダウンロードできました。
–request-payer requesterを付与することで、リクエスタ支払は承認しているんですよってことを示してます。
–request-payer requesterなしで実行するとAn error occurred (AccessDenied) when calling the GetObject operation: Access Deniedエラーになります。
x-amz-request-payer : requesterがヘッダーにない状態なのでリクエスト自体が許可されません。
後日の請求書確認
リクエストした側でList1回、Get4回請求対象になっていることが確認できました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
API Gatewayで顧客レベルの使用量プランを設定する
API GatewayのAPIキーを使って使用量プランでのスロットリングも設定し …
-
Amazon ECSサービスでAWS App Meshを使用
AWS App MeshユーザーガイドのAWS App Mesh とAmazon …
-
AWS Lambdaで Unable to import module エラーが発生したときは
そもそも、Pycharmのナビゲーションペインでディレクトリごとドラッグ& …
-
JAWS-UG Osaka 第15回勉強会 AWS Summit Tokyo 2016 アップデート追っかけ会
「JAWS-UG Osaka 第15回勉強会 AWS Summit Tokyo …
-
ChatGPT APIをTeamsボットから使いました(AWS Lambda(Python) + API Gateway)
ChatGPT APIが有償で利用可能になったので、会社のTeamsボットに実装 …
-
RDSインスタンスのストレージをgp2からgp3に変更しました
2022/11/9にRDSでgp3ボリュームが使用できるようになりました。 Am …
-
VPC新コンソールの日本語UIでルートテーブル編集時のエラー(2021/6/10)が発生したのでフィードバックを送った
VPCの新コンソールがリリースされていたので使って作業してましたところ、こんなエ …
-
Rocket.ChatにAWS Lambda(Python)から投稿する
Rocket.ChatにAPIで投稿するテスト(Postman)をやってみて、使 …
-
T3.nanoで仮想メモリ割当をユーザーデータで実行する
T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …
-
Amazon Linux2のPHPを7.2から7.3へアップデートしました
WordPressのサイトヘルスの推奨に従って使っていないテーマを削除したの推奨 …