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

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

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

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

RubyGems

RubyGemsは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)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

2回答

3327閲覧

(S3)本番環境に画像をアップロードできない

h-asuka

総合スコア7

Ruby

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

RubyGems

RubyGemsは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)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/01/28 11:13

編集2020/01/28 11:40

前提・実現したいこと

railsで本番環境の画像アップロードをしたい。

画像アップロードをすると以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Excon::Error::BadRequest in UsersController#update Expected(200) <=> Actual(400 Bad Request) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the Credential is mal-formed; expecting \"&lt;YOUR-AKID&gt;/YYYYMMDD/REGION/SERVICE/aws4_request\".</Message><RequestId>FA6D5E9A8FF746E2</RequestId><HostId>EtSsgNaPIm8kLD32SQjjyrqKH1cNTP4Npr3IPLj29GDxkKh/evNYtT3TiP12qiymKPvcLfLJqbg=</HostId></Error>" :cookies => [ ] :headers => { "Connection" => "close" "Content-Type" => "application/xml" "Date" => "Tue, 28 Jan 2020 10:40:27 GMT" "Server" => "AmazonS3" "x-amz-id-2" => "EtSsgNaPIm8kLD32SQjjyrqKH1cNTP4Npr3IPLj29GDxkKh/evNYtT3TiP12qiymKPvcLfLJqbg=" "x-amz-request-id" => "FA6D5E9A8FF746E2" }

該当のソースコード

ruby

1CarrierWave.configure do |config| 2 if Rails.env.development? || Rails.env.test? #開発とテストは今まで通りに 3 config.storage = :file 4 elsif Rails.env.production? #本番はS3に保存する 5 config.storage = :fog 6 config.fog_provider = 'fog/aws' 7 config.fog_credentials = { 8 provider: 'AWS', 9 aws_access_key_id: Rails.application.credentials.aws[:access_key_id], 10 aws_secret_access_key: Rails.application.credentials.aws[:secret_access_key], 11 region: 'ap-northeast-1' 12 } 13 14 config.fog_directory = 'a' 15 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/a' 16 end 17end 18 19 20users_contoroller.rb 21 22class UsersController < ApplicationController 23 def show 24 @user = User.find(params[:id]) 25 @posts = @user.posts 26 end 27 28 def edit 29 @user = User.find(params[:id]) 30 end 31 def update 32 @user = User.find(params[:id]) 33 if @user.update(user_params) 34 flash[:notice] = "変更を保存しました" 35 redirect_to user_path(current_user) 36 else 37 flash[:alert] = "編集の保存に失敗しました" 38 render :edit 39 end 40 end 41 42 private 43 44 def user_params 45 params.require(:user).permit(:nickname, :email, :image) 46 end 47 48end 49 50users/view/edit.html.haml 51 52.profile__right__content__edit 53 = form_with model: @user, local: true do |f| 54 = f.label :image, class: "file", id: 'user_img' do 55 -if @user.image.present? 56 .profile-content__edit__view-box 57 = image_tag @user.image.to_s, alt: "プロフィール画像",size: "60x60", class: 'mypage__icon', id: :img_prev 58 .profile-content__edit__nickname 59 = f.text_field :nickname, class: 'profile__right__input__nickname',value: @user.nickname 60 .profile-content__edit__email 61 = f.email_field :email, class: 'profile__right__input__email' 62 .profile-content__edit__password 63 = f.password_field :password 64 新しいパスワード 65 .profile-content__edit__password-confirmation 66 = f.password_field :password_confirmation 67 新しいパスワード確認 68 -else 69 .profile-content__edit__view-box 70 -# = image_tag "noimage.jpeg", alt: "プロフィール画像",size: "60x60", class: 'mypage__icon' 71 .profile-content__edit__nickname 72 = f.text_field :nickname, class: 'profile__right__input__nickname',value: @user.nickname 73 .profile-content__edit__email 74 = f.email_field :email, class: 'profile__right__input__email' 75 .profile-content__edit__password 76 = f.password_field :password 77 新しいパスワード 78 .profile-content__edit__password-confirmation 79 = f.password_field :password_confirmation 80 新しいパスワード確認 81 = f.file_field :image,class: 'file' 82 .profile__right__content__bottom 83 .profile__right__content__profile 84 = f.submit '変更する', class: 'profile__right__input__send'

試したこと

エラー文で検索をかけたがENVの情報ばかりで解決できなかった。

補足情報(FW/ツールのバージョンなど)

rails 5.2.4.1
必要なファイルなどの情報は言ってもらえれば載せさして頂きます。
どうかよろしくお願いします。

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

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

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

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

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

bamboo-nova

2020/01/28 11:28

400 Bad Requestの意味としては、適切なパラメータが渡されていないことによるエラーですので、S3のエラーというよりは、まず渡しているパラメータが間違っているんだと思います。ビューとコントローラを照らし合わせる必要があるので、Usersコントローラを見せて頂けるとレビューしやすいと思います。
h-asuka

2020/01/28 11:42

返信ありがとうございます。コントローラーとビューの方は追記させていただきました。 あと、書き忘れていましたがローカル環境では問題なく編集できています。
guest

回答2

0

自己解決

aws_access_key_id と aws_secret_access_key が逆になっていました。
bamboo-novaさん色々ありがとうございました。

投稿2020/01/28 15:08

h-asuka

総合スコア7

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

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

bamboo-nova

2020/01/28 15:16

確かに、400のエラーならそういうパターンもありますね。不覚でした...。自分も勉強になりました。こちらこそありがとうございます。
guest

0

Expected(200) <=> Actual(400 Bad Request)
403なら見かけるけど、400ってみたことあまりないかもと思って調べてみたんですが、実際のS3のregionとコードで記述したregionが一致してないとかありますか...?汗

似たような事例があったので参考資料も提示します。
https://stackoverflow.com/questions/29780128/excon-error-badrequest

投稿2020/01/28 12:05

bamboo-nova

総合スコア1408

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

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

h-asuka

2020/01/28 12:18

ご回答ありがとうございます! 私もエラー文を検索していた時に、あげて頂いた参考資料に辿り着き確認したのですが、そちらの方は問題ありませんでした..
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問