2014-09-11 252 views
1

我保存在我的本地服務器映像,然後上傳到S3
現在我想將它編輯到存儲的圖像直接到Amazon S3scrapy將圖像存儲到Amazon S3

但是療法是錯誤:

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden 

這裏是我的settings.py

AWS_ACCESS_KEY_ID = "XXXX" 
AWS_SECRET_ACCESS_KEY = "XXXX" 
IMAGES_STORE = 's3://how.are.you/' 

我需要添加一些東西嗎?

我scrapy版:Scrapy == 0.22.2

請指引我,謝謝!

回答

0

我發現這個問題的原因是上傳的政策。函數Key.set_contents_from_string()採用參數策略,默認設置爲S3FileStore.POLICY。因此,修改scrapy /的contrib /管道/ files.py代碼,更改

return threads.deferToThread(k.set_contents_from_string, buf.getvalue(), 
           headers=h, policy=self.POLICY) 

return threads.deferToThread(k.set_contents_from_string, buf.getvalue(), 
           headers=h) 

也許你可以試試它,在這裏分享的結果。

+0

謝謝!它運作良好! – user2492364 2014-09-21 09:12:19

0
AWS_ACCESS_KEY_ID = "xxxxxx" 
AWS_SECRET_ACCESS_KEY = "xxxxxx" 
IMAGES_STORE = "s3://bucketname/virtual_path/" 

how.are.you應該是S3存儲存在到您的S3帳戶,它將存儲您上傳的圖片。如果你想在任何虛擬路徑裏面存儲圖像,那麼你需要創建這個文件夾到你的S3 Bucket中。

+0

我做到了,但仍然無法工作。 s3:// bucketname/image_store/ – user2492364 2014-09-11 07:52:46

0

我認爲問題不在您的代碼中,實際上問題在於權限,請先檢查您的憑據,並確保您的權限訪問和寫入s3存儲桶。

import boto 
    s3 = boto.connect_s3('access_key', 'secret_key') 
    bucket = s3.lookup('bucket_name') 
    key = bucket.new_key('testkey') 
    key.set_contents_from_string('This is a test') 
    key.delete() 

如果試運行successfuly然後看看你的權限,設置權限,你可以看看amazon configuration

+0

權限確定,並且scrapy沒有顯示錯誤。但圖像仍然不在s3服務器 – user2492364 2014-09-12 01:15:47