現状
現在Railsで作成したアプリの環境を完全にAWSに移行しようとしています。
現段階ではEC2上のWebサーバー(nginx)にアプリの本体がデプロイされており、設定されたIPアドレスでアクセスが可能になっております。また、データベースとのやりとりも可能なことが確認済みです。
前提・実現したいこと
Railsアプリで画像付きの投稿をしたいため、画像のアップロードをCarrierwaveを通してS3に保存するように作成しました。
実際にHerokuにデプロイした際には上手くアップロードされ、画像が表示されていましたが、EC2上でアプリを動かすと投稿自体はできるのに、画像が表示されません。
発生している問題・エラーメッセージ
EC2上のRailsアプリでCarrierwaveを利用したS3への画像アップロードが上手くできません。
該当のソースコード
carrier_wave.rb
ruby
1# CarrierWaveの設定呼び出し 2require 'carrierwave/storage/abstract' 3require 'carrierwave/storage/file' 4require 'carrierwave/storage/fog' 5 6# 画像名に日本語が使えるようにする 7CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/ 8 9# 保存先の分岐 10CarrierWave.configure do |config| 11 # 本番環境はS3に保存 12 if Rails.env.production? 13 config.storage = :fog 14 config.fog_provider = 'fog/aws' 15 config.fog_directory = 'babbit' 16 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/babbit' 17 # iam_profile 18 config.fog_credentials = { 19 provider: 'AWS', 20 region: 'ap-northeast-1', #東京リージョン 21 use_iam_profile: true #IAMロールを使用する 22 # credentialsで管理する場合 23 # aws_access_key_id: Rails.application.credentials.aws[:access_key_id], 24 # aws_secret_access_key: Rails.application.credentials.aws[:secret_access_key], 25 # 環境変数で管理する場合 26 # aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"], 27 # aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"], 28 } 29 # キャッシュをS3に保存 30 # config.cache_storage = :fog 31 else 32 # 開発環境はlocalに保存 33 config.storage :file 34 config.enable_processing = false if Rails.env.test? #test:処理をスキップ 35 end 36end
試したこと
初めはS3を使う際にIAMユーザーを使っていましたが、途中からIAMロールを使用しました。
これが正解なのかどうかはわかりません。
補足情報(FW/ツールのバージョンなど)
Ruby 2.6.5
Rails 5.2.4.2
最後に
Carrierwaveの設定が違っているのか、その他AWSコンソールですべきことがあるのかということがわかりません。
もし上記以外に参照されたいコードや情報がありましたら、その都度提示させていただきますので、どうかお答えいただけるようよろしくお願いいたします。
追記
本アプリにおいてアップローダーは2つあり、1つは投稿する文章と共に掲載できるPictureUploaderで、こちらは画像のアップロードと表示ができていることが確認できます。
問題なのは2つ目のImageUploaderです。こちらはユーザー画像をアップロードするもので、ユーザー情報を編集したときにのみしか変更できないようになっています。こちらのアップローダーから画像を指定してもS3自体に保存もされていないし、表示もされないといった状態です。PictureUploaderの方は完全にS3にも保存されますし、ページに表示もされます。なので、carrierwaveの設定は合っているのかと思います。また、ローカル環境ではユーザー画像の保存も表示もできます。(ローカルに保存しているので)
このような場合、どのファイルのどのような設定を見直すべきでしょうか?またそれに際して参照したいファイルがございましたら、提示させていただきます。よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 08:05