LoginSignup
0
0

ECS(Rails)×S3で画像取得できなくてつまづいた話

Posted at

はじめに

本番環境のECS(Rails)×S3で詰まったエラーの共有ができればと思います。

実現したいこと

ECSにデプロイされたRailsアプリケーションからS3に画像をアップロードし、それを取得する機能を実装しようとしていました。
システム構成は以下のようなイメージです。

発生した事象とエラー

S3への画像アップロードは問題なくできましたが、画像の取得ができないという問題が発生しました。ECSのログを調査した結果、以下のエラーが確認できました。

ArgumentError (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):

どうやらRailsでURL生成に必要なホスト情報が設定されていない場合に発生するエラーのようでした。

エラーの発生原因

画像の取得処理として、以下のように画像のURLを生成しており、これが原因でエラーが発生していました。

url = url_for(image)

対処法

ホスト情報が設定されていないために発生するエラーですので、ホスト名を明示的に指定することが解決策です。具体的には、以下のようにECSで使用するURL(エンドポイント)の設定を行う必要があります。

config/production.rb
### RailsアプリのURLがhttps://example.comの場合
Rails.application.routes.default_url_options[:protocol] = 'https'
Rails.application.routes.default_url_options[:host] ='example.com'

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0