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

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

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

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

Ruby on Rails

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

8372閲覧

Amazon s3エラーが発生してしまいます(rails)

yamady

総合スコア176

Ruby

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

Ruby on Rails

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

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2017/05/28 15:26

編集2017/05/29 14:29

##前提わからないこと

夜分遅くに失礼します。
CarrierWaveをHerokuで使うために、Amazon Web ServiceのS3使用を始めました。
ですが、下記のようなエラーが生じました。

Ruby

1Excon::Error::Forbidden in Admin::SpaceImagesController#update 2Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => ・・・ The AWS Access Key Id you provided does not exist in our records. ・・・

ググってみると、ポリシーが付与されていないとのことだったのですが、そういうわけでもないみたいで・・・
また、AWS Accesss Key Idが入っていないと表示されていたのですが、入っているはずなんですが・・・

イメージ説明

開発環境:
Ruby on Rails 5.0.0.1

どうすればよろしいでしょうか?

###該当するソースコード

config/initilizers/carrierwave.rb

Ruby

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

環境変数はset済みです。

.env

Ruby

1AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX" 2AWS_SECRET_KET="XXXXXXX"

Ruby

1>> require 'dotenv' 2=> false 3>> Dotenv.load 4=> {"AWS_ACCESS_KEY"=>"XXXXXXXXXXXXXXXXX", "AWS_SECRET_KET"=>"XXXXXXX"} 5 6>> puts ENV['AWS_ACCESS_KEY'] 7XXXXXXXXXXXXXXXXX 8=> nil 9>> puts ENV['AWS_SECRET_KEY'] 10{空白} 11=> nil 12>>

puts ENV['AWS_SECRET_KEY']で空白だったんですが、これは設定されていないということなのでしょうか・・

直接、コードにAWS_ACCESS_KEYと、AWS_SECRET_KEYを打ち込んだところ
エラー表示が変わり、下記のエラーが発生しました。

Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>XXXXXXXXXXXXXXXXX</AWSAccessKeyId><StringToSign>AWS4-HMAC-SHA256\n20170529T142602Z\n20170529/ap-northeast-1/s3/aws4_request\n931f72995f13b52e270b97bfb42634a872405fee935bcb45ce2a0ddc28b10d2f</StringToSign><SignatureProvided>9b41642ef3bd14874c1339b0e7ffa4556bfe0a667b9d28e5837a5492b2e8f6ab</SignatureProvided><StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 31 37 30 35 32 39 54 31 34 32 36 30 32 5a 0a 32 30 31 37 30 35 32 39 2f 61 70 2d 6e 6f 72 74 68 65 61 73 74 2d 31 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 39 33 31 66 37 32 39 39 35 66 31 33 62 35 32 65 32 37 30 62 39 37 62 66 62 34 32 36 33 34 61 38 37 32 34 30 35 66 65 65 39 33 35 62 63 62 34 35 63 65 32 61 30 64 64 63 32 38 62 31 30 64 32 66</StringToSignBytes><CanonicalRequest>PUT\n/uploads/space_image/image_1/1/mocha_shibuya_1.jpg\n\ncontent-length:476741\ncontent-type:image/jpeg\nhost:spacehacker-development.s3-ap-northeast-1.amazonaws.com\nx-amz-acl:public-read\nx-amz-content-sha256:387c4996beec3e4ebfdd5e246a268ed284f50d23942eb86256ad654ea456b2a3\nx-amz-date:20170529T142602Z\n\ncontent-length;content-type;host;x-amz-acl;x-amz-content-sha256;x-amz-date\n387c4996beec3e4ebfdd5e246a268ed284f50d23942eb86256ad654ea456b2a3</CanonicalRequest><CanonicalRequestBytes>50 55 54 0a 2f 75 70 6c 6f 61 64 73 2f 73 70 61 63 65 5f 69 6d 61 67 65 2f 69 6d 61 67 65 5f 31 2f 31 2f 6d 6f 63 68 61 5f 73 68 69 62 75 79 61 5f 31 2e 6a 70 67 0a 0a 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 34 37 36 37 34 31 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 69 6d 61 67 65 2f 6a 70 65 67 0a 68 6f 73 74 3a 73 70 61 63 65 68 61 63 6b 65 72 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 2e 73 33 2d 61 70 2d 6e 6f 72 74 68 65 61 73 74 2d 31 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 78 2d 61 6d 7a 2d 61 63 6c 3a 70 75 62 6c 69 63 2d 72 65 61 64 0a 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3a 33 38 37 63 34 39 39 36 62 65 65 63 33 65 34 65 62 66 64 64 35 65 32 34 36 61 32 36 38 65 64 32 38 34 66 35 30 64 32 33 39 34 32 65 62 38 36 32 35 36 61 64 36 35 34 65 61 34 35 36 62 32 61 33 0a 78 2d 61 6d 7a 2d 64 61 74 65 3a 32 30 31 37 30 35 32 39 54 31 34 32 36 30 32 5a 0a 0a 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3b 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3b 68 6f 73 74 3b 78 2d 61 6d 7a 2d 61 63 6c 3b 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3b 78 2d 61 6d 7a 2d 64 61 74 65 0a 33 38 37 63 34 39 39 36 62 65 65 63 33 65 34 65 62 66 64 64 35 65 32 34 36 61 32 36 38 65 64 32 38 34 66 35 30 64 32 33 39 34 32 65 62 38 36 32 35 36 61 64 36 35 34 65 61 34 35 36 62 32 61 33</CanonicalRequestBytes><RequestId>B70928F44D03409B</RequestId><HostId>9VnNDhNleNMuVmrzyrryaGMgHSdB3rxOd2T8KZzLHogWYwe8TG3HAv4xEsgLL/+Jl1oTXR3rMNc=</HostId></Error>" :cookies => [ ] :headers => { "Connection" => "close" "Content-Type" => "application/xml" "Date" => "Mon, 29 May 2017 14:26:03 GMT" "Server" => "AmazonS3" "x-amz-id-2" => "9VnNDhNleNMuVmrzyrryaGMgHSdB3rxOd2T8KZzLHogWYwe8TG3HAv4xEsgLL/+Jl1oTXR3rMNc=" "x-amz-request-id" => "B70928F44D03409B" } :host => "spacehacker-development.s3-ap-northeast-1.amazonaws.com" :local_address => "192.168.0.7" :local_port => 50207 :path => "/uploads/space_image/image_1/1/mocha_shibuya_1.jpg" :port => 443 :reason_phrase => "Forbidden" :remote_ip => "52.219.68.143" :status => 403 :status_line => "HTTP/1.1 403 Forbidden\r\n"

こちらに値するエラーだとは思うのですが、いまいち対処法がわかりません。。

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

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

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

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

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

moonphase

2017/05/29 01:16

上記スクリーンショットのIAMユーザーに紐付いたaws_access_key_idが設定されていますか?
yamady

2017/05/29 02:33

コメントいただき、ありがとうございます。aws_access_key_idは設定しているはずなのですが・・・ こちらで確認できた環境変数の確認を追記しました。
guest

回答1

0

ベストアンサー

コードが以下そのままであれば、単にAWS_ACCESS_KEY、AWS_SECRET_KEYという文字がアクセスキー、シークレットキーに設定されているだけではないでしょうか・・・?

ruby

1 aws_access_key_id: 'AWS_ACCESS_KEY', 2 aws_secret_access_key: 'AWS_SECRET_KEY', 3

S3にアクセス出来るできないという問題への切り分けをするなら、上記コードにハードコーディングでアクセスキー、シークレットキーを一旦設定されてみてはいかがでしょうか。
それで問題なければDotenvの使い方の問題となるため、S3は無関係かと思います。

投稿2017/05/29 06:29

moonphase

総合スコア6621

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

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

yamady

2017/05/29 14:31

ご回答いただきまして、誠にありがとうございます。 Dotenvではなく、直書きで試してみたのですが追記のエラーが生じてしまいました。 やはり、AWS S3側で自分が誤った作業をしてしまったのでしょうか・・
moonphase

2017/05/30 01:18

S3側の問題か、ポリシーの問題か、実装側(ライブラリ含む)の問題かを切り分けるために、以下確認してみてください。 1. awscli等でアップロードしてみる 2. IAMのユーザーに全権限を付与してみる 3. 1と2の組み合わせ
yamady

2017/05/31 06:35

直書きではできたので、やはりdotenvの問題だったみたいです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問