2017-03-01 3 views
1

AWSなしでPaperclipが動作していますが、S3ストレージを使用しようとすると破損します。Rails - AWSと連携していないペーパークリップ

#production.rb 
    config.paperclip_defaults = { 
     storage: :s3, 
     s3_region: ENV["AWS_REGION"], 
     s3_credentials: { 
      # s3_host_name: ENV["AWS_HOST_NAME"], 
      bucket: ENV["S3_BUCKET_NAME"], 
      access_key_id: ENV["AWS_ACCESS_KEY_ID"], 
      secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"] 
      } 
    } 

    config.paperclip_defaults = { s3_host_name: "s3-us-west-1.amazonaws.com", } 
    # Added this line to fix: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. 

最後の行を追加する前に、S3エラー(The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.)が発生しました。追加後、ファイルはS3の代わりにローカルストレージにアップロードされます。

また、これらをpaperclip.rbに別のエラーで追加しようとしました。私はすべての3行を追加すると、私はエラーを取得するRead-only file system @ dir_s_mkdir - /projects

#paperclip.rb 
# Paperclip::Attachment.default_options[:url] = ':s3_domain_url' 
# Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename' 
# 
# Paperclip::Attachment.default_options[:s3_host_name] = 's3-us-west-1.amazonaws.com' 

Gemfile:

gem "paperclip", "~> 5.0.0" 
gem 'aws-sdk', '~> 2.3' 

私も

編集を支援していないようでしたrake assets:precompile RAILS_ENV=production試した: AWS_HOST_NAME:S3を-us-west-1.amazonaws.com

AWS_REGION:us-west-1

S3_BUCKET_NAME:基礎-画像-2

AWS_ACCESS_KEY_ID:...

AWS_SECRET_ACCESS_KEY:...

私はセットアップIAMアカウントをしましたし、私たち西-1領域でバケットを作成しました。権限を追加するために必要なことはS3上にありますか?

ペーパークリップは、任意のエラーや設定はS3のためであれば何でも出て、それをローカルに保存された理由を私は理解できない...

+0

これは昨日行われましたか? –

+0

まだ起こっています。私はそれがS3の停止と関係しているとは思わない – Adam12344

+0

それはショットの価値があった。 S3から受け取ったエラーメッセージを親切に追加しますか?また、最後に追加した行は、 'production.rb'の最初の設定の下に追加しましたか? –

答えて

0

を私が使用したコードは次のとおりです。

#production.rb 
    config.paperclip_defaults = { 
     storage: :s3, 
     s3_region: ENV["AWS_REGION"], 
      s3_host_name: "s3-us-west-2.amazonaws.com", 
     s3_credentials: { 
      # s3_host_name: ENV["AWS_HOST_NAME"], 
      bucket: ENV["S3_BUCKET_NAME"], 
      access_key_id: ENV["AWS_ACCESS_KEY_ID"], 
      secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"] 
      } 
    } 

@meagarは、2つの設定ステートメントを組み合わせる必要があることを指摘しました。バケット名/地域を二重チェックするためにS3バケットに画像をアップロードしました。そして私はIAM資格を作り直しました。

-1

私はコメントすることはできませんので:

あなたは、そのクラスに言いましたそれをAWSに保存していますか?

あなたはクラスの下に、配置する必要があります:ここhas_attached_file : storage => :s3

詳細情報:それはここに今

を働いてhttp://www.rubydoc.info/gems/paperclip/Paperclip/Storage/S3

+0

あなたは 'has_attached_file'の下に**置く必要はありません。これが 'config.paperclip_defaults'の目的です。 – meagar

関連する問題