2013-05-12 76 views
0

編輯圖片沒有得到來自Amazon S3顯示

當我按照生成的鏈接將其鏈接到以下錯誤:

您嘗試訪問的桶必須解決使用指定的終結點。請將所有未來請求發送到此端點。

我已經把我的回形針配置,配置/環境/ staging.rb

config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_credentials => { 
     :bucket => ENV['S3_BUCKET'], 
     :access_key_id => ENV['S3_KEY'], 
     :secret_access_key => ENV['S3_SECRET'], 
     :path => "/image/:id/:filename", 
     :url => ":s3_domain_url" 
    } 
    } 

我已經把我的ENV變量Heroku的分期ENV:

$ heroku config:set S3_BUCKET=staging_bucket --remote staging 
$ heroku config:set S3_KEY=XXXXX --remote staging 
$ heroku config:set S3_SECRET=XXXXX --remote staging 

圖像似乎被上傳正確,我可以在控制檯中看到它們,但我無法在Web應用程序中顯示它們。這是對圖像生成的URL是:

http://s3.amazonaws.com/myapp-staging/assets/attachments/000/000/004/small/IMG_0902.JPG?1368381995

這似乎是正確的,除了後面的部分?我不知道是指什麼。

回答

0

你確定你的水桶是公開的嗎?

我問,因爲當我打開上面的鏈接顯示的信息節點的值是:指定的區不存在

我記得遇到類似的問題很久以前,它原來是我上傳圖片至我的S3存儲桶通過Paperclip(以及CarrierWave),但從未將我的存儲桶設置爲「公開」。圖像/文件將顯示在我的S3控制檯中,但沒有人可以查看它們。

您可能想要在S3控制檯中檢查您的存儲桶權限/公共狀態。 https://console.aws.amazon.com/s3

+0

謝謝您的回答。這確實是公開的。我最終刪除了存儲桶並使用了美國標準存儲。我猜aws-sdk寶石與歐盟地區還不兼容。 – Ayrad 2013-05-13 18:34:18

+0

很高興聽到你解決了!我沒有想過地區和aws-sdk寶石。從這個SO Q&A(http://stackoverflow.com/questions/12908599/aws-sdk-for-ruby-access-folder-within-bucket)來看,它默認爲US-EAST地區,但您可以將其設置爲任何其他地區::s3_endpoint =>'s3-eu-west-1.amazonaws.com(我很想知道是否將該端點添加到配置幫助...不是你需要,因爲它現在工作正常:)。 – 2013-05-14 17:51:38

+0

我確實添加了歐洲的網址,但是:url變量不能:s3_endpoint在下面的教程之後,比如這個http://www.conandalton.net/2011/02/paperclip-s3-and-european-buckets.html 。關於這個問題的錯誤在這裏:https://github.com/marcel/aws-s3/issues/4 – Ayrad 2013-05-15 08:00:02

1

我的終點是在新加坡,我不得不添加以下內容:

:s3_host_name => "s3-ap-southeast-1.amazonaws.com"