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

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

ただいまの
回答率

88.59%

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,285

yamady

score 177

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

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

テスト環境でできません

エラーメッセージ

Excon::Error::Forbidden in Admin::SpacesController#update
Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message>
<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 の該当箇所は下記かと思われます。

2017-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
2017-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]]
2017-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
2017-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

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: 'AWS',
    aws_access_key_id: 'XXXXXXXXXXXXXXXXXXXX',
    aws_secret_access_key: 'AWS_SECRET_KET',
    region: 'ap-northeast-1'
  }

  case Rails.env
    when 'production'
      config.fog_directory = 'xxxxx-production'
      config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/xxxxx-production'

    when 'development'
      config.fog_directory = 'xxxxx-development'
      config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/xxxxx-development'
  end
end


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

.env

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • gouf

    2017/06/01 19:11 編集

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

    キャンセル

  • gouf

    2017/06/03 19:47

    CarrierWave リポジトリで公開されている情報と設定記述に差異が見られますが、新しい記述に更新した場合の動作は変わりありませんか? : https://github.com/carrierwaveuploader/carrierwave#using-amazon-s3

    キャンセル

  • gouf

    2017/06/03 19:49

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

    キャンセル

回答 4

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/09 18:09

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

    キャンセル

  • 2017/06/09 18: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>

    キャンセル

checkベストアンサー

+1

~/.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/14 23:53

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

    キャンセル

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/14 23:53

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

    キャンセル

  • 2017/06/15 14:49

    よかったです!!

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る