yuuki blog

プログラミング をアプトプットしています。

AWS (S3)

S3で保存先の用意

ここからは、本番環境で投稿した画像を「S3」に保存できるようにしていきます。

バケット

S3で実際にデータが格納される場所のことを「バケット」と呼びます。バケットの名前はアクセスするときのURLに使用されるため、英数字で、まだ誰も付けたことがない名前を使う必要があります。
バケットは、名前とリージョンを決めるだけで簡単に作成できます。

リージョン

バケットが実際に存在しているサーバーの在り処のことです。

S3を利用してバケットを作成

上のメニューバーに表示されている「サービス」をクリック、以下の「S3」をクリックします。

https://tech-master.s3.amazonaws.com/uploads/curriculums//436a3457610b5b64b6e31359cf0fa439.png

すると以下のページに遷移するので、「バケットを作成」をクリックします。

https://tech-master.s3.amazonaws.com/uploads/curriculums//35ef5c7ace0a6716a0565789d7677e7f.png

遷移後の画面では、「バケット名」を入力しましょう。また、リージョンが「アジアパシフィック(東京)」になっていることを確認して、「次へ」をクリックします。

https://tech-master.s3.amazonaws.com/uploads/curriculums//ab6407cd40640aea236d1cbe4c22c169.png

バケットの名前は任意で決めて大丈夫ですが、他のユーザーが作ったバケットと重複した名称は使えません。

遷移後の画面では何も選択せずに「次へ」をクリックしましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//c67cbb49cbecfd7f139a310880230303.png

続いてセキュリティの設定を行います。今回はバケットポリシーを使用してセキュリティ設定を行います。まずは、「パブリックアクセスをすべてブロック」のチェックを外しましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//403c047a68d17e9a8bc452b23d42ee90.png

チェックを外すと、追加でチェックボックスが表示されます。下記図に従って3つのチェックボックスにチェックを入れましょう。ここの設定が誤っているとファイルのアップロードができなくなるため注意しましょう。正しく設定できたら、「次へ」をクリックします。

https://tech-master.s3.amazonaws.com/uploads/curriculums//68444f685fdb0bb794f924d6a7c54675.png

最後の画面では、バケット作成の内容確認があります。内容に間違いがなければ、「バケットを作成」をクリックしましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//7f0b679f40f49727c1fcb80d4e166693.png

これからバケットポリシーの設定を行なっていきます。

バケットポリシー

どのようなアクセスに対してS3への保存やデータの読み取りを許可するか決められる仕組みです。今回は、作成したIAMユーザーからのアクセスのみを許可するようにします。

それでは実際に設定していきましょう。

まず、先ほど作成した「IAMユーザー」の設定を確認します。メニューの「サービス」をクリックします。

https://tech-master.s3.amazonaws.com/uploads/curriculums//fa163a6922cd48c9883d8a7fcb597149.png

一覧から「IAM」を検索しましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//7a63d5ebdaa5c8f50a59b1928fe9c919.png

「ユーザー」を選択します。

https://tech-master.s3.amazonaws.com/uploads/curriculums//13be93b14e33405dccafb6c47b9c7428.png

「IAM」ユーザーの一覧から、先ほど作成したユーザーを選びます。

IAMユーザーの情報が表示されますので、必要な情報を取得します。 後ほど「ユーザーのARN」が必要になりますので、一度メモアプリなどに保存しておきましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//226029511085e39efc5f24862f9c4fb0.png

次に、バケットポリシーの設定を行います。IAMの時と同じようにサービス一覧から S3を選びます。先ほど作成したバケットをクリックしましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//9fd8cd310f647e1d1ebdfc77e8aa41de.png

バケットポリシー」をクリックし、赤枠の欄にポリシーの入力をします。内容は下記を参照してください。

https://tech-master.s3.amazonaws.com/uploads/curriculums//61e3740751108bab8f0068b312a4352f.png

バケットポリシー
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
   "Version": "2012-10-17",
   "Id": "Policy1544152951996",
   "Statement": [
       {
           "Sid": "Stmt1544152948221",
           "Effect": "Allow",
           "Principal": {
               "AWS": "①"
           },
           "Action": "s3:*",
           "Resource": "arn:aws:s3:::②"
       }
   ]
}

先ほどメモしておいた 「ユーザーのARN」を①に、「作成したバケット名」を②に記述しましょう。

以下のような記述になっていることを確認して、保存しましょう。 

https://tech-master.s3.amazonaws.com/uploads/curriculums//c1cebaf17af78e7db9d1119562d57122.png

保存ボタンを押した直後に「このバケットに対してパブリックアクセスの〜」と出ていれば保存成功です。