2012-06-07 3 views
1

이 문제는 해결되었습니다. 내 비밀 액세스 키가 내 로컬 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 %> 

나는 그것을 필요로하는 누구에게나 더 많은 정보를 제공 할 것이지만,이 시점에서 나는 혼란 스럽다. 도움을 줄 수있는 사람 덕분에

답변

0

저는 aws-s3과 aws-sdk를 함께 사용하려는 사람들을 보았습니다. 그러나 이들은 모두 동일한 모듈 네임 스페이스를 사용하기 때문에 cause conflicts이 될 것입니다. 나는 이것이 반드시 당신의 문제라고 말하는 것이 아니지만, 분명 도움이되지 않습니다. 클립 클립에는 aws-sdk이 필요하므로 시작하려면 gemfile에서 aws-s3을 제거하십시오. 여전히 오류가 발생하는 경우 has_attached_file 행 바로 위에 디버거를 추가하고 ENV 변수를 검사하여 실제로 설정 중인지 확인하십시오.

+0

감사합니다. https://devcenter.heroku.com/articles/s3는 aws-s3을 클립으로 사용하는 것이 좋습니다. 그러면 aws-sdk가 필요하다는 오류가 나타납니다. – joncalhoun

+0

실제로 사용중인 Paperclip의 버전에 따라 다릅니다. 그들은 최근 aws-s3에서 aws-sdk로 변경 했으므로 사용중인 버전에 따라 Gem을 사용해야합니다. 그들이 스위치를 만들었을 때 손을 알지 못하지만 최신 버전을 사용한다면 aws-sdk를 사용하십시오. –

+0

이것은 문제의 근본 원인이 아니었지만 실제로 필요하지 않은 보석을 제거 할 수 있었고 향후 문제를 예방할 수있었습니다. – joncalhoun

관련 문제