【rails】デプロイする(AWSの設定)

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

RailsからS3に画像をアップロードできるようにする

前回までで、環境変数の設定をした

AWS(S3)の事前準備はこちらを参考にしました

今回は、RailsからS3に画像をアップロードできるようにする


AWSの設定をする

aws-sdkのインストール

Gemfileを開いて、aws-sdk-s3について書き加える

gem 'devise'
gem 'faker'
gem 'hamlit'
gem 'aws-sdk-s3', require: false

awsが用意してくれているGemで、簡単に画像がアップロードできるようになる

bundle install


ファイルアップロード先を指定する

config/environmennts/から、開発環境、本番環境、テスト環境、それぞれの環境を設定できる

まずproduction.rbを開く

config.active_storage.service = :local

現在、ファイルのアップロード先はlocal(自分のパソコン)となっている

awsに保存したいので「amazon」に修正する

config.active_storage.service = :amazon

development.rbでも「amazon」にしておく

config.active_storage.service = :amazon

「local」から「amazon」に、保存先が変更できているのか(動くのか)を、本番環境に行く前に確認するため

この記事の最後、「local」に戻す!


ActiveStorageの設定

config/storage.ymlを開く

amazon(AWS)の場合の設定方法についてすでに書いてある!


コメントインして、AWSのバケット情報を確認しながら入力していく

amazon:
  service: S3
  access_key_id:
  secret_access_key: 
  region: ap-northeast-1
  bucket: blogapp-
  • access_key_id:secret_access_key:はAWS設定時にダウンロードしたもの
  • リージョン名とバケット名はAWSのS3画面を見ながらコピペする

注意 access_key_id: secret_access_key:

access_key_id:secret_access_key:誰にも見せちゃいけないもの

  • コピペしたままの状態でコミットしないこと!
  • 必ずこのあと.envファイルに移動すること!

サーバーの再起動

設定後、一度サーバーを落としてサーバーを再起動する

再起動したときに、設定内容が読み込まれる


S3にアップロードできているか確認

実際にアイキャッチやプロフィール画像をアップロードしてみる

Screenshot

アップロードした3枚が保存されている

きちんと動作できているので、access_key_id:secret_access_key:を.envファイルに書き換えていく


環境変数の設定

.envファイルに書き換える

.envファイルに下記のように書く

AWS_ACCESS_KEY=●●●●
AWS_SECRET_KEY=●●●●
AWS_BUCKET_NAME=blogapp-●●●●

storage.ymlを書き換える

amazon:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY'] %>
  secret_access_key: <%= ENV['AWS_SECRET_KEY'] %>
  region: ap-northeast-1
  bucket: <%= ENV['AWS_BUCKET_NAME'] %>

ymlファイルにrubyのコードを埋め込むときは<%= %>で囲む


バケット名も環境変数にする理由

【前提】バケット名は機密情報ではない

でも、バケット名を環境変数で切り替えられるようにしておく

→ ステージング環境ではこっち、本番環境ではこっち、と環境ごとにバケットを変えることができる

本番環境とステージング環境でバケットを切り替えられるので便利


サーバーの再起動

設定後、一度サーバーを落としてサーバーを再起動する

再起動したときに、環境変数の設定内容が読み込まれる


開発環境のアップロード先をlocalに戻す

config/environmennts/development.rbを開く

「amazon」で動作検証できたので、開発環境は「local」に戻しておくこと

config.active_storage.service = :local

コミット対象から外れているか確認

Sourcetreeでコミット対象のファイルをしっかり確認

  • 環境変数に書き換えられていること
  • .envのファイルが外れていること

うっかりGitHubで公開しないように気をつける

#DAY26