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

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

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

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

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

Amazon S3

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

Q&A

解決済

4回答

6200閲覧

環境変数が設定できません(rails)

yamady

総合スコア176

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

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

Amazon S3

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

0グッド

0クリップ

投稿2017/05/31 06:46

編集2017/06/03 10:03

AWS S3をrailsアプリに設定したいのですが、うまくいきません。
コードに直接アクセスキー、シークレットキーを入力した場合に成功したので、おそらく環境変数が設定できていないかと思うのですが。。

開発環境:
Ruby on Rails 5.0.0.1
Heroku
AWS S3

###テスト環境でできません

エラーメッセージ

Ruby

1Excon::Error::Forbidden in Admin::SpacesController#update 2Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n 3<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message> 4<AWSAccessKeyId>AWS_ACCESS_KEY</AWSAccessKeyId>

.env

APP_ID="XXXXXXXXXXX" APP_SECRET="XXXXXXXXXXXXXXXXXXXXXXXX" AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX" AWS_SECRET_KET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

###本番環境でできません

heroku config:set コマンドよりそれぞれ設定しているのですが、できません。。
アップロードするとサーバーエラーとなります。
heroku logs の該当箇所は下記かと思われます。

Ruby

12017-05-31T06:21:25.800577+00:00 app[web.1]: D, [2017-05-31T06:21:25.800494 #6] DEBUG -- : [f26ed52b-733a-4f63-8ed4-8a3d74d379b9] (0.7ms) BEGIN 22017-05-31T06:21:25.833185+00:00 app[web.1]: D, [2017-05-31T06:21:25.833073 #6] DEBUG -- : [f26ed52b-733a-4f63-8ed4-8a3d74d379b9] SQL (1.2ms) UPDATE "spaces" SET "image" = $1, "updated_at" = $2 WHERE "spaces"."id" = $3 [["image", "20170531062125.jpg"], ["updated_at", 2017-05-31 06:21:25 UTC], ["id", 1]] 32017-05-31T06:21:33.390111+00:00 heroku[router]: at=info method=POST path="/admin/spaces/1" request_id=f26ed52b-733a-4f63-8ed4-8a3d74d379b9 fwd="126.112.54.50,103.22.200.241" dyno=web.1 connect=0ms service=10118ms status=500 bytes=1749 protocol=http 42017-05-31T06:21:33.382359+00:00 app[web.1]: D, [2017-05-31T06:21:33.382267 #6] DEBUG -- : [f26ed52b-733a-4f63-8ed4-8a3d74d379b9] (0.6ms) ROLLBACK

##追記

carrierwave.rb

Ruby

1CarrierWave.configure do |config| 2 config.fog_credentials = { 3 provider: 'AWS', 4 aws_access_key_id: 'XXXXXXXXXXXXXXXXXXXX', 5 aws_secret_access_key: 'AWS_SECRET_KET', 6 region: 'ap-northeast-1' 7 } 8 9 case Rails.env 10 when 'production' 11 config.fog_directory = 'xxxxx-production' 12 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/xxxxx-production' 13 14 when 'development' 15 config.fog_directory = 'xxxxx-development' 16 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/xxxxx-development' 17 end 18end

dotenvはここ以外に記載しておりません。

.env

APP_ID="XXXXXXXXXXX" APP_SECRET="XXXXXXXXXXXXXXXXXXXXXXXX" AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX" AWS_SECRET_KET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

なにか別の作業が必要でしょうか?
初心者で本当にすみません。

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

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

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

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

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

gouf

2017/06/01 10:13 編集

S3 へアップロード処理をしようとしている当該箇所の公開は可能ですか? dotenv を有効化している箇所も併せて公開できますか?
gouf

2017/06/03 10:49

AWS のアクセスキー関連で、Ruby から環境変数を参照するよう変更した場合( eg. `ENV['AWS_ACCESS_KEY']` )、動作に変化は見られますか?
guest

回答4

0

heroku config:set HOGE=FUGA -a アプリ名
で設定できませんか?

投稿2017/06/08 11:10

mbk

総合スコア130

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

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

yamady

2017/06/09 09:09

やってみたのですが、やはりできないですね。。。涙 ローカル環境で下記のエラー The AWS Access Key Id you provided does not exist in our records. また、本番環境でもやはりできません。。。
yamady

2017/06/09 09:30

AWS IDを変えてみたら、ローカル環境でできましたが、やはり下記のようなエラーが本番ではheroku logsで生じています。。 <Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>AWS_ACCESS_KEY</AWSAccessKeyId>
guest

0

あ、これ
AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX"
ではなく
AWS_ACCESS_KEY=XXXXXXXXXXXXXXXXX
ですね。

すべての"を削除して下さい。

投稿2017/06/12 23:16

mbk

総合スコア130

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

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

yamady

2017/06/14 14:53

"を消したら動きました!ありがとうございます。本当にありがとうございます!!!
mbk

2017/06/15 05:49

よかったです!!
guest

0

ベストアンサー

~/.bash_profile にそれぞれ
export APP_ID="XXXXXXXXXXX"
export APP_SECRET="XXXXXXXXXXXXXXXXXXXXXXXX"
export AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX"
export AWS_SECRET_KET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
と記述してやって
source ~/.bash_profuleと打ってやるとできるはずです

一応確認として
env | grep AWS と打ってやると 環境変数が指定されているのがわかるはずです

それから cariierwaveファイルの
aws_secret_access_key: 'AWS_SECRET_KET' の記述が違います
aws_secret_access_key: ENV['AWS_SECRET_KET']と記述すれば読み込まれるはずです

投稿2017/06/11 05:28

編集2017/06/11 05:31
VerfolgungEin

総合スコア147

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

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

yamady

2017/06/14 14:53

ありがとうございます!!!単純なミスでした... ENV書き加えでできました(泣 本当にありがとうございます・・・・
guest

0

本件、長い間、諦めかけていましたが、みなさんに助けられて解決できました。
心より、みなさまに感謝申し上げます...。

投稿2017/06/14 14:54

yamady

総合スコア176

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問