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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

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

Q&A

0回答

738閲覧

EC2(rails)→s3への接続ができない問題を解決したい。[SignatureDoesNotMatch]

Soymilk

総合スコア0

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2020/05/21 06:17

###実現したいこと
railsとs3を疎通させたい。
最終的にはrailsからS3バケットへ画像がアップロードできるようにしたい。

###前提

[S3バケットの設定]
・リージョン:ap-northeast-1
・バージョニング有効
・Static website hosting有効
・現時点ではパブリックアクセスも全て有効

EC2→S3バケットの接続を可能にするためVPCエンドポイントを設定。
[VPCの設定]
・service category: AWS services
・service name: com.amazonaws.ap-northeast-1.s3
・VPC: EC2が置かれているVPC
・ルートテーブル: EC2およびELBが置かれているサブネットのルートテーブルを選択

[ユーザーの作成]
IAMユーザーを新規作成し、S3bucketfullaccessのみ権限を付与し、アクセスキーを作成。

[EC2(rails)の設定]
aws configureにてs3バケットのフルアクセスを許可したIAMユーザーのアクセスキーを設定。

$ aws configure AWS Access Key ID [None]: IAMユーザーアクセスキー AWS Secret Access Key [None]: IAMユーザーシークレットキー Default region name [None]: ap-northeast-1 Default output format [None]:

railsでは以下のgemをインストールし、設定。

gemfile

1gem 'carrierwave', '1.2.2' 2gem 'mini_magick', '4.9.4' 3gem 'fog'

carrierwave

1require 'carrierwave/storage/abstract' 2require 'carrierwave/storage/file' 3require 'carrierwave/storage/fog' 4 5unless Rails.env.development? || Rails.env.test? 6 CarrierWave.configure do |config| 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 config.fog_provider = 'fog/aws' 14 config.fog_directory = 'バケット名' 15 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/バケット名' 16 end 17end 18CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/

uploader

1class PictureUploader < CarrierWave::Uploader::Base 2 3 include CarrierWave::MiniMagick 4 process resize_to_limit: [400, 400] 5 6 if Rails.env.development? 7 storage :file 8 elsif Rails.env.test? 9 storage :file 10 else 11 storage :fog 12 end 13 14 def store_dir 15 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 16 end 17 18 19 def extension_whitelist 20 %w(jpg jpeg gif png) 21 end 22 23 def filename 24 original_filename if original_filename 25 end 26 27 28end

※コードのファイル名に拡張子をつけるとなぜか表記が消えてしまうため省略してあります。

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

aws s3 ls s3://バケット名/ --recursive An error occurred (SignatureDoesNotMatch) when calling the ListObjectsV2 operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

何度試しても、SignatureDoesNotMatchというエラーになってしまい接続できない。

「ここの設定がおかしいんじゃないか」など、どのようなアイデアでもいただければ非常に助かります。

試したこと

・アクセスキーの文字に記号が紛れ込んでエスケープされてしまっている説
→アクセスキーを確認したがエスケープされるような記号はなかった。

補足情報

参考にしたサイト:
【AWS S3 + EC2 + CarrierWave + Fog】RailsからS3へ画像アップロード手順
Railsでcarrierwaveを使ってAWS S3に画像をアップロードする手順を画像付きで説明する

関係あるかわかりませんが、EC2はELBを通じて暗号化しています。
WEBサーバはnginx、アプリケーションサーバはpumaを使用しております。
railsのバージョンは5.2です。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問