質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

2554閲覧

EC2上でCarrierwaveを利用してS3へ画像をアップロードしたい

YutaOkuma

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/04/13 02:59

編集2022/01/12 10:55

現状

現在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の設定は合っているのかと思います。また、ローカル環境ではユーザー画像の保存も表示もできます。(ローカルに保存しているので)
このような場合、どのファイルのどのような設定を見直すべきでしょうか?またそれに際して参照したいファイルがございましたら、提示させていただきます。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こちらと同じ現象と思われます。

記載しているようなパス形式でのS3のエンドポイント指定はもうすぐサポート切れになります
【注意喚起】 2020年9月30日以降、パス形式での S3 API リクエストは受け付けられなくなります。

http://<bucket-name>.s3.amazonaws.com のように仮想ホスト形式で指定するとよいかと思います。

一応まだサポート期限内なので今うまく行かないのはちょっと腑に落ちませんが…。
どのみち今後影響を受けるので今のうちに対処しておくといいでしょう。

投稿2020/04/13 03:36

yu_1985

総合スコア7427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutaOkuma

2020/04/13 08:05

回答ありがとうございます。 エンドポイントの方はご指摘通りに変更しました。 が、プロフィール画像の方が表示されません。 詳細は質問文に追記させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問