我保存在我的本地服务器映像然后上传到S3
现在我想将它直接编辑存储图像到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
请指导我,谢谢!
我发现这个问题的原因是上传的政策。 该功能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)
也许你可以试试它,在这里分享的结果。
AWS_ACCESS_KEY_ID = "xxxxxx"
AWS_SECRET_ACCESS_KEY = "xxxxxx"
IMAGES_STORE = "s3://bucketname/virtual_path/"
how.are.you应该是存在到您的S3帐户S3桶,它会保存您上传的图片。 如果你想存储任何virtual_path内的图像,那么你需要创建这个文件夹到你的S3桶。
我觉得这个问题是不是在你的代码,其实问题就出在权限,请先检查您的凭证,并确保您的权限来访问和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然后看看你的权限,设置权限,你可以看看亚马逊的配置