uycep2ed’s blog

IT関連のニュースで思ったこと感じたこと、プログラミングの勉強の備忘録を書いていきたいと思います。

AWSのサービスであるS3を使って画像をサーバーに保存する

まずはAWSに登録からです。

ネットで調べればすぐに出てきます。

無料枠で十分扱う事ができるので、まずは無料枠から使うことをお勧めします。

 

 

語句説明

バケット

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

 

リージョン

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

 

・サービスからS3を選択し、バケットを作成をクリック

バケット名を自由に決めて、リージョンが東京になっていることを確認

・アクセス許可設定を全てをブロックを外し、下から二つをチェックボックスを選択

これで作成は完了!

 

次にパケットポリシーの設定をしていきます

今回はIAMユーザーからのみのアクセスを許可します。

・サービスから「IAM」を検索

・作成したユーザのARNをコピーしておく

・先ほど作成したバケットを開き、アクセス権限を選択

バケットポリシーを

 

{
   "Version": "2012-10-17",
   "Id": "Policy1544152951996",
   "Statement": [
       {
           "Sid": "Stmt1544152948221",
           "Effect": "Allow",
           "Principal": {
               "AWS": "先ほどコピーしたユーザーARN"
           },
           "Action": "s3:*",
           "Resource": "arn:aws:s3:::作成したバケット名"
       }
   ]
}

を記述し保存

 

次に必要なgemをインストールします

Gemfile
1
 gem "aws-sdk-s3", require: false

からの、ターミナルでbundle install

 

config/environments/development.rb

(省略)

     config.active_storage.service = :amazon (省略)
 
:localから:amazonに変更

config/storage.yml

test: service: Disk root: <%= Rails.root.join("tmp/storage") %> local: service: Disk root: <%= Rails.root.join("storage") %> amazon: service: S3 access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> region: ap-northeast-1 bucket: ご自身のバケット (省略)
 
ここを上記のように付け加える

あとは、環境変数を使っているのでその設定を変更してします。

環境変数については違う記事で描こうと思います。