이 문제는 해결되었습니다. 내 비밀 액세스 키가 내 로컬 env에서 제대로 복사/붙여 넣기되었는지를 확인하는 데 시간이 많이 걸리는 것처럼 보였으므로이 문제를 조사하는 데 너무 많은 시간을 보냈습니다.AWS :: S3 :: 오류 : SignatureDoesNotMatch with Paperclip 및 Amazon S3가 로컬 개발자에 있음
약 20 개의 질문을 읽었으며 지금까지 아무 도움도받지 못했습니다. 내 컨트롤러에서 SignatureDoesNotMatch 예외가 계속 발생하고 이유를 파악할 수 없습니다.
class S3File < ActiveRecord::Base
has_attached_file :s3_attachment,
storage: :s3,
bucket: ENV['S3_BUCKET_NAME'],
s3_credentials: {
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
},
path: ':id/temp.jpg'
end
가 나는 .env의 파일에 ENV 변수를 정의하고 감독과 내 서버를 시작하고 난 확인했습니다 :
내 클래스 (미성년자 이름 바꾸기와 "S3"에 프로젝트가 해제되지 않기 때문에) 이 값은 'foreman run rails console'에서 올바른지 확인하십시오.
이 결코 나를 위해 작동되지 않은,하지만 지금까지 내가 ImageMagick이 설치되어, 여러 경로를 시도, 다음과 같은 보석 포함 : 같은
# rails -v Rails 3.2.2
# ruby -v Ruby 1.9.2p290
gem 'paperclip' # paperclip (3.0.4) in Gemfile.lock
gem 'aws-s3' # aws-s3 (0.6.3) in Gemfile.lock
gem 'aws-sdk' # aws-sdk (1.5.2) in Gemfile.lock
gem 'rmagick' # rmagick (2.13.1) in Gemfile.lock
그리고 마지막으로 내 _form 부분 외모 :
을<%= form_for @s3_file do |f| %>
<div class="field">
<%= f.file_field :email_attachment %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
나는 그것을 필요로하는 누구에게나 더 많은 정보를 제공 할 것이지만,이 시점에서 나는 혼란 스럽다. 도움을 줄 수있는 사람 덕분에
감사합니다. https://devcenter.heroku.com/articles/s3는 aws-s3을 클립으로 사용하는 것이 좋습니다. 그러면 aws-sdk가 필요하다는 오류가 나타납니다. – joncalhoun
실제로 사용중인 Paperclip의 버전에 따라 다릅니다. 그들은 최근 aws-s3에서 aws-sdk로 변경 했으므로 사용중인 버전에 따라 Gem을 사용해야합니다. 그들이 스위치를 만들었을 때 손을 알지 못하지만 최신 버전을 사용한다면 aws-sdk를 사용하십시오. –
이것은 문제의 근본 원인이 아니었지만 실제로 필요하지 않은 보석을 제거 할 수 있었고 향후 문제를 예방할 수있었습니다. – joncalhoun