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

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

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

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

Ruby

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

Amazon S3

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

1785閲覧

AWS S3で画像をポストするとエラーになる(rails)

YOJI4910

総合スコア7

Ruby on Rails 5

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

Ruby

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

Amazon S3

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2019/07/25 12:07

前提・実現したいこと

よろしくお願いします。
Railsチュートリアル第13章にて、herokuに作成しているサイトから画像をAmazon S3にポストするとエラーになります。S3にアップロードできるようにお力を貸してください。

環境

開発: cloud9
Ruby: 2.6.3p62
Rails: 5.1.6
carrierwave: 1.2.2
fog-aws: 2.0.1
本番環境: heroku

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

エラー前後のheroku logsです。

2019-07-25T11:16:10.521795+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] Parameters: {"utf8"=>"✓", "authenticity_token"=>"me0T6DxRd6XmgCo5bYch+oCLozqiICudBFYtldbfOXZruo6v7xU3nXYCTZPZqzfDsDgxwb2QemnXlcRp0kqjWA==", "micropost"=>{"content"=>"test", "picture"=>#<ActionDispatch::Http::UploadedFile:0x0000557b2e9ad540 @tempfile=#<Tempfile:/tmp/RackMultipart20190725-22-zwwhdr.png>, @original_filename="WhiteWallPaper.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"micropost[picture]\"; filename=\"WhiteWallPaper.png\"\r\nContent-Type: image/png\r\n">}, "commit"=>"Post"} 2019-07-25T11:16:10.617032+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] User Load (1.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]] 2019-07-25T11:16:10.854948+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] (1.3ms) BEGIN 2019-07-25T11:16:10.862040+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] SQL (2.5ms) INSERT INTO "microposts" ("content", "user_id", "created_at", "updated_at", "picture") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["content", "test"], ["user_id", 1], ["created_at", "2019-07-25 11:16:10.857052"], ["updated_at", "2019-07-25 11:16:10.857052"], ["picture", "WhiteWallPaper.png"]] 2019-07-25T11:16:10.865219+00:00 app[web.1]: [fog][WARNING] fog: the specified s3 bucket name(“yoji4910”) is not a valid dns name, which will negatively impact performance. For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/BucketRestrictions.html 2019-07-25T11:16:13.441852+00:00 heroku[router]: at=info method=POST path="/microposts" host=yoji-sample-app.herokuapp.com request_id=da8340ec-9515-4074-bf30-e9417c7a539e fwd="106.181.221.65" dyno=web.1 connect=0ms service=3041ms status=500 bytes=1891 protocol=https 2019-07-25T11:16:13.440313+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] (2.5ms) ROLLBACK 2019-07-25T11:16:13.440850+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] Completed 500 Internal Server Error in 2919ms (ActiveRecord: 44.5ms) 2019-07-25T11:16:13.441732+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] 2019-07-25T11:16:13.441778+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] Excon::Error::BadRequest (Expected(200) <=> Actual(400 Bad Request) 2019-07-25T11:16:13.441783+00:00 app[web.1]: excon.error.response 2019-07-25T11:16:13.441786+00:00 app[web.1]: :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>InvalidBucketName</Code><Message>The specified bucket is not valid.</Message><BucketName>\xE2\x80\x9Cyoji4910\xE2\x80\x9D</BucketName><RequestId>458B17861CE941F4</RequestId><HostId>PQrPSI9FdOAM3195KE5T/oNxvMRWyrg8+50Ud/c+vhGMKD2oL1Kp5XfW/+r/dmc9Kz1mz+d/TKY=</HostId></Error>" 2019-07-25T11:16:13.441788+00:00 app[web.1]: :cookies => [ 2019-07-25T11:16:13.441791+00:00 app[web.1]: ] 2019-07-25T11:16:13.441794+00:00 app[web.1]: :headers => { 2019-07-25T11:16:13.441796+00:00 app[web.1]: "Connection" => "close" 2019-07-25T11:16:13.441798+00:00 app[web.1]: "Content-Type" => "application/xml" 2019-07-25T11:16:13.441801+00:00 app[web.1]: "Date" => "Thu, 25 Jul 2019 11:16:12 GMT" 2019-07-25T11:16:13.441803+00:00 app[web.1]: "Server" => "AmazonS3" 2019-07-25T11:16:13.441805+00:00 app[web.1]: "x-amz-id-2" => "PQrPSI9FdOAM3195KE5T/oNxvMRWyrg8+50Ud/c+vhGMKD2oL1Kp5XfW/+r/dmc9Kz1mz+d/TKY=" 2019-07-25T11:16:13.441807+00:00 app[web.1]: "x-amz-request-id" => "458B17861CE941F4" 2019-07-25T11:16:13.441809+00:00 app[web.1]: } 2019-07-25T11:16:13.441811+00:00 app[web.1]: :host => "s3-ap-northeast-1.amazonaws.com" 2019-07-25T11:16:13.441813+00:00 app[web.1]: :local_address => "172.17.188.222" 2019-07-25T11:16:13.441815+00:00 app[web.1]: :local_port => 53832 2019-07-25T11:16:13.441817+00:00 app[web.1]: :path => "/%E2%80%9Cyoji4910%E2%80%9D/uploads/micropost/picture/308/WhiteWallPaper.png" 2019-07-25T11:16:13.441819+00:00 app[web.1]: :port => 443 2019-07-25T11:16:13.441821+00:00 app[web.1]: :reason_phrase => "Bad Request" 2019-07-25T11:16:13.441824+00:00 app[web.1]: :remote_ip => "52.219.0.12" 2019-07-25T11:16:13.441826+00:00 app[web.1]: :status => 400 2019-07-25T11:16:13.441828+00:00 app[web.1]: :status_line => "HTTP/1.1 400 Bad Request\r\n" 2019-07-25T11:16:13.441829+00:00 app[web.1]: ): 2019-07-25T11:16:13.441873+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] 2019-07-25T11:16:13.441920+00:00 app[web.1]: [da8340ec-9515-4074-bf30-e9417c7a539e] app/controllers/microposts_controller.rb:8:in `create'

関連コード

AWSの設定

/config/initializers/carrier_wave.rb

ruby

1if Rails.env.production? 2 CarrierWave.configure do |config| 3 config.fog_credentials = { 4 # Amazon S3用の設定 5 :provider => 'AWS', 6 :region => ENV['S3_REGION'], # 例: 'ap-northeast-1' 7 :aws_access_key_id => ENV['S3_ACCESS_KEY'], 8 :aws_secret_access_key => ENV['S3_SECRET_KEY'] 9 } 10 config.fog_directory = ENV['S3_BUCKET'] 11 end 12end

cloud9のbashで環境変数を設定

bash

1$ heroku config:set S3_ACCESS_KEY="<自分のアクセスキー>" 2$ heroku config:set S3_SECRET_KEY="<シークレットキー>" 3$ heroku config:set S3_BUCKET="<Bucket name>" 4$ heroku config:set S3_REGION="<東京のリージョンコード>"

試したこと

heroku logsの以下の部分に注目しまして

[fog][WARNING] fog: the specified s3 bucket name(“yoji4910”) is not a valid dns name, which will negatively impact performance. For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/BucketRestrictions.html

bucket nameがエラーの原因だと考え、いろいろなbucket nameを試しました。
例) yoji4910, s3abc, cd-huytなど

awsでbucket nameを変更した際はちゃんと、bashで環境変数の変更も行っています。
結果として、何も変化なしでした。

テスト環境では特に問題なく動きます(もちろんS3のテストはできませんが)

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

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

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

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

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

guest

回答1

0

自己解決

解決いたしました!
bucket nameに"をつけていたことが原因でした。
しかし…
Railsチュートリアルには
$ heroku config:set S3_BUCKET="Bucketの名前を入力"
とあるので、"を含めてしまうのは仕方がないのではとも思いますが…
だめですね…精進いたします。

投稿2019/07/25 12:54

YOJI4910

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問