こんにちわ、Masaです。

前回、Active StorageはAmazon S3やGCSなどと言ったクラウドストレージと連携が簡単と記載したので今回は連携についてお話していこうと思います。

そもそも、AmazonS3やGCSと言ったクラウドストレージを使うメリットとは何か?

・安価(0.025USD/GBという破格の安さ)

・高い耐久性(オブジェクトに対して年間 99.999999999% の耐久性を実現するように設計されています。)

・容量が無制限

以上の理由から多くのアプリではクラウドストレージを使われることが多いです。

ActivestorageとAmazonS3の連携方法

こちらではあくまでもActivestorageとAmazonS3の連携についてお話していくのでS3の作成方法については特に記載いたしません。

config/storage.yml

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: ap-northeast-1#(東京サーバーなので他で設定している場合は他のコード入力してください)
bucket: S3の名前

Storage.ymlにS3の情報を登録してあげましょう。.envで管理しても大丈夫ですが、gemでdot-envが必要になるので今回はこちらのファイルで管理します。

config/enviroments/development.rb

config.active_storage.service = :amazon

今回は開発環境で使用したのでdevelopment.rbですが、本番環境で使う際にはproduction.rbに同じように設定しましょう。

Gemfile

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

S3用のgemですので入れてください。bundle installを忘れずに!  development.yml.enc
aws:
  access_key_id: #access_key_idをいれてください。
  secret_access_key: #secret_access_keyをいれてください。

以上でS3との連携の設定は終了です。設定も多くないので非常に簡単だと思います。

 

如何でしたでしょうか?S3のバケット作成は割愛しましたが、S3とアプリの連携は非常に簡単だと思いますので、皆様も画像管理やファイル管理する際はActivestorageを使用することをお勧めします。

ここまで読んでくださりありがとうございます。