scrapy将图像存储到Amazon S3(scrapy store images to amazo

2019-10-20 22:58发布

我保存在我的本地服务器映像然后上传到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

请指导我,谢谢!

Answer 1:

我发现这个问题的原因是上传的政策。 该功能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)

也许你可以试试它,在这里分享的结果。



Answer 2:

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

how.are.you应该是存在到您的S3帐户S3桶,它会保存您上传的图片。 如果你想存储任何virtual_path内的图像,那么你需要创建这个文件夹到你的S3桶。



Answer 3:

我觉得这个问题是不是在你的代码,其实问题就出在权限,请先检查您的凭证,并确保您的权限来访问和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然后看看你的权限,设置权限,你可以看看亚马逊的配置



文章来源: scrapy store images to amazon s3