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をインストールします
1 |
からの、ターミナルでbundle install
(省略)
config.active_storage.service = :amazon (省略)
:localから:amazonに変更
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: ご自身のバケット名 (省略)
ここを上記のように付け加える
あとは、環境変数を使っているのでその設定を変更してします。
環境変数については違う記事で描こうと思います。