【前提】
・localでの画像投稿の設定はできてる
・画像投稿は gem carrierwave を使用しての投稿
#AWS S3を使う
Railsでの開発をしていてHerokuにアップしたところ、git上に入っている画像は表示されていた(背景画像とかロゴ画像とか)がサービス利用の中で画像を投稿したときの表示ができていなかったので調べたところAWS S3というサービスを使うらしい。
AWSは今まで使ったことがなかったが意外と簡単に設定ができた。
##アカウント登録
こちらから登録できます。
以下の記事をよんでAWSってこわ、、、っていうイメージがあったので私を含む初学者の方の取り扱いには気をつけてください、、、(私もこうなりかけた)
登録から1年間は利用無料らしいです。
初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。 - Qiita
##やることリスト
アカウント登録後に作るものとしては
AWS関連
- IAMグループ、ユーザー登録(ここでCSVファイルダウンロード←Macで普通に開けなくてもエディタで開けます)
- S3バケットの作成
Rails関連
- gemインストール("fog-aws")
- config/initializers/carrierwave.rb作成&設定記述
- uploadersフォルダのファイルに画像の格納場所記述
AWS関連の設定はこちらの記事を読み進めて行けば確実にできます!
【Rails】S3へ『CarrierWave+fog』を使って画像アップロードする方法
【Rails5】AWS S3+CarrierWave+Fog::AWSを利用して画像アップロード機能を作成する
##Railsでの設定
gemインストール
gem 'fog-aws'
$ bundle install
作成&設定記述(keyはべた書き禁止!!!!!)
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'IAM登録で取得したアクセスキー',
aws_secret_access_key: 'IAM登録で取得したシークレットアクセスキー',
region: 'ap-northeast-1' # S3バケット作成時に指定したリージョン。左記は東京を指す
}
config.fog_directory = 's3-rails-image-uploader' # 作成したS3バケット名
end
# 日本語ファイル名の設定
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
end
#fogに画像格納
if Rails.env.production?
storage :fog
else
storage :file
end
簡単!!!😍