入門者向け】Chat GPTに色々教えてもらいながらAWS S3にファイルをアップロードしてみる【2章: アクセス許可の設定編】
記事の目的
- 初学者でもAmazon S3(以降S3)について理解を深められるようにする
- S3を使って画像をアップロードできるアプリケーションを作成できるようにする
関連記事
1章: バケット作成編
2章: アクセス許可の設定編 ←今ここ
3章: アップロード編
※この記事の内容は1章の続きからになります
注意事項
- AWSのコンソール画面は2023/9時点のものです
- Chat GPTの出力が必ずしも正しいとは限りませんのでビジネスで使う場合にはご注意ください。(当記事で登場しているAWSのアカウントは完全個人用になります)
- 権限を設定できただけで挙動の保証はしてませんのでご了承ください
1. バケットの作成した後は何をする?
1章: バケット作成編で質問したS3にアップロードするまでの流れの画像を再度掲載。今回はアクセス許可の設定を行おうと思います。
2. アクセス許可の方法について質問
ChatGPTに聞いてみる。
バケットポリシーというものを設定すれば良さそうですね!
3.アクセス許可の設定画面にアクセス
1章: バケット作成編で作成したバケットをクリック
これっぽいですね!
呪文ぽいワードが色々出てきたので詳しくみていきましょう!
4.アクセスポリシー以外の設定について
アクセス許可の方法について質問でアクセスポリーの設定が必要とのことでしたのでそれ以外の設定が不要なのか確認しましょう。どうやら他の箇所は編集しなくても大丈夫そうですね
ここで「オブジェクト」と「アクセス権」について確認。
オブジェクトはデータ、アクセス権は各種操作権という認識でいれば大丈夫ぽいですね(詳しい方に怒られそう・・・)
5.アクセスポリシー設定の確認
- アクセス許可の方法について質問 で確認した設定コードを引用
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
これに関して2つの疑問点が出てきました🤔
- これでS3にアップロードできるのか?
- ここでいう「誰でも」というのはこのS3のバケットを使っているアプリケーションの存在を知っている全ユーザー?
早速聞いてみましょう。後者は現状でいいとして前者に関してはS3にアップロードできないのでアクセスポリシーの変更が必要ですね。
早速アクセスポリシーの編集をお願いしましょう
IMAというやつで設定する必要がありそうですね。
アップロード(自分だけ)とダウンロード(全員)の設定方法が異なるので設定方法について確認しておきましょう
6.IMAでアップロードに関するポリシーを作成する
上記5で解説されたアップロードは自分(S3作成者)だけにする設定を行います
ページ上部の検索画面からIMAを入力
左サイドバーからポリシーを選択して「ポリシーを作成をクリック」
ChatGPTに教えてもらった「JSON」タブを選択し、以下のようなアクセスポリシーを作成します。
your-bucket-nameは作成したバケット名、YOUR-USER-IDはユーザーIDに変更してください。
で、AWSのユーザーIDでどこで確認するのか・・・?🤔
右上のユーザー名をクリックするとユーザーIDが見れるっぽいですね!
your-bucket-nameは作成したバケット名、YOUR-USER-IDはユーザーIDに変更して次に進むとポリシー名とコメントを残せるので適した命名を入力して右下の「ポリシー作成」をクリック
7. 特定のユーザーにアップロードのポリシーを許可する
上記5で出力して頂いたここの部分の設定ですね
IAMダッシュボードで、アップロードを許可するIAMユーザーを選択し、「アクセス許可」タブに移動します。
ユーザーのアクセス許可を編集し、アップロードのポリシーをアタッチします。これにより、特定のIAMユーザーのみがアップロードできるようになります
アクセス許可タブなんかないぞ・・・😭
早速聞いてみる。S3の方らしいが、IAMのポリシー使わないのかな・・・🤔
聞いてみた。やっぱりIAMの画面でアップロード許可ユーザー(自分)の作成が必要らしい
ここ↓
「AWS マネジメントコンソールへのユーザーアクセスを提供するに関して確認
今はポリシー付与できればいいので後で必要になったら設定すれば大丈夫そう
なんか3つの選択肢がある。今回は1人だけなので一番右っぽい
次にS3のバケットポリシー画面でアップロードとダウンロードの権限を設定していきます。
Principalのima::以降はIAMのユーザーの詳細画面から取得
(数字以外を入力するとエラーが出るので仮で1を11個記述)
変更をクリックしたらエラーがでた。バケットの設定ぽいですね。
確認してみた
これでいけるかな?
いけました!
次は実際にアップロードしたいと思います!
Discussion