【rails】デプロイする(AWSの設定)
RailsからS3に画像をアップロードできるようにする
前回までで、環境変数の設定をした
AWS(S3)の事前準備はこちらを参考にしました
[

参考
Your connected workspace for wiki, docs & projects | Notion
Notion
](https://tokyofreelance.notion.site/AWS-S3-759873c2c8744dc6aee2bf8a78c3074a)
今回は、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