如何获取boto以生成触发下载的S3的签名URL?

时间:2013-05-07 00:35:53

标签: boto

我试过这个:

connection = S3Connection(
    aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
    aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY)

url = connection.generate_url(
    60,
    'GET',
    settings.AWS_STORAGE_BUCKET_NAME,
    self.get_object().image,
    headers={'Content-Type': 'application/octet-stream'})

但是当我尝试访问签名的网址时,我收到了以下消息:

  

我们计算的请求签名与您提供的签名不符。检查您的密钥和签名方法。

如果我删除headers属性,另一方面我可以正常访问图像。我做错了什么?

1 个答案:

答案 0 :(得分:7)

问题在于您无法使用generate_url设置任意标头,而response_headers选项存在时,AWS也可以设置有限的选项。这将完成在这种情况下的预期。

url = connection.generate_url(
    60,
    'GET',
    settings.AWS_STORAGE_BUCKET_NAME,
    self.get_object().image,
    response_headers={
        'response-content-type': 'application/octet-stream'
    })