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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

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

Ruby on Rails

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

Amazon S3

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

Q&A

解決済

1回答

2355閲覧

S3に画像を保存しようとするとExcon::Error::Socketが出る

sawasawanosawa

総合スコア4

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

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

Ruby on Rails

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

Amazon S3

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

0グッド

1クリップ

投稿2021/06/08 02:09

###やりたいこと
herokuにデプロイしたアプリで画像を保存し、その画像をS3に保存したい。

###環境
cloud9
ruby 2.6.3
Rails 5.2.6
carrierwave 1.3.2
fog-aws 3.10.0

###エラー
元々デプロイはできていて画像の投稿も行えていたのですが、その画像がうまくS3に保存できていなかったので、もう一度初めからS3の設定を行っていました。しかし、その途中でエラーが多発し、gem 'fog-aws'を入れたり、コードを追記したりしました。その後、再デプロイしたところ、画像を投稿するときに

We're sorry, but something went wrong. If you are the application owner check the logs for more information.

と出たので、heroku logs -tで確認したところ、エラーに関係ありそうなところで

2021-06-08T00:58:25.668800+00:00 app[web.1]: D, [2021-06-08T00:58:25.668668 #4] DEBUG -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] (3.4ms) ROLLBACK 2021-06-08T00:58:25.669480+00:00 app[web.1]: I, [2021-06-08T00:58:25.669405 #4] INFO -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] Completed 500 Internal Server Error in 3579ms (ActiveRecord: 9.7ms) 2021-06-08T00:58:25.671363+00:00 app[web.1]: F, [2021-06-08T00:58:25.671292 #4] FATAL -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] 2021-06-08T00:58:25.671493+00:00 app[web.1]: F, [2021-06-08T00:58:25.671429 #4] FATAL -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] Excon::Error::Socket (Broken pipe (Errno::EPIPE)): 2021-06-08T00:58:25.671676+00:00 app[web.1]: F, [2021-06-08T00:58:25.671594 #4] FATAL -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] 2021-06-08T00:58:25.671676+00:00 app[web.1]: F, [2021-06-08T00:58:25.671594 #4] FATAL -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] 2021-06-08T00:58:25.672028+00:00 app[web.1]: F, [2021-06-08T00:58:25.671966 #4] FATAL -- : [a54bb32d-dd5a-4891-b8d4-5760d439771d] app/controllers/posts_controller.rb:14:in `create'

と出ました。
最後の行でapp/controllers/posts_controller.rb:14:in `create'と出ていたので確認してみると

def create @post = Post.new(post_params) if @post.save flash[:notice] = "投稿しました" redirect_to("/posts/index") else flash[:notice] = "必須項目を満たしてください" render("posts/new") end end

if @post.saveのところが14行目でした。
恐らく保存するときにS3関連で問題が発生しているのだと思うのですが、原因がわかりません。

###S3再設定時に行ったこと
#####1、

config/environments/production.rbに、config.active_storage.service = :amazon
と書くところをconfig/environments/development.rbに記述してしまっていたので修正。

#####2、
最初はgem 'fog'を入れていたが、代わりにgem 'fog-aws'を入れた。

#####3、
config/environments/carrierwave.rbに

if Rails.env.production? CarrierWave.configure do |config| config.fog_provider = 'fog/aws' config.fog_credentials = { :provider => 'AWS', :region => ENV['S3_REGION'], :aws_access_key_id => ENV['S3_ACCESS_KEY'], :aws_secret_access_key => ENV['S3_SECRET_KEY'] } config.fog_directory = ENV['S3_BUCKET'] end end

とあったので、.envにS3_REGION、S3_ACCESS_KEY、S3_SECRET_KEYを=でそれぞれ記述。
(後にconfig.fog_provider = 'fog/aws'とconfig.fog_credentials = {の間に、config.fog_public = trueを追記。)

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

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

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

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

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

guest

回答1

0

自己解決

一応解決しましたので、解決方法を載せておきます。
S3のアクセス許可からブロックパブリックアクセスの設定をすべてオフにすることで解決しました。
イメージ説明
いろんなサイトを見た限りでは、セキュリティ面で問題があるとのことで全く触っておりませんでした。
(この設定をいじらずに成功している方がいらっしゃったので、なぜこれで解決できたのかは今のところわかりません。)
正直どこにどのような問題があるのかは、わかっていないのでこれから学習しようと思います。
ありがとうございました。

投稿2021/06/10 10:10

sawasawanosawa

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問