“ HmacAuthV1Handler”对象没有属性“ presign”是什么意思?

时间:2019-06-18 03:02:49

标签: python-2.7 google-app-engine boto

我想使用boto2(2.49)创建一个使用Sign v4的预签名网址。

这是我的功能:

c = S3Connection(access_key, secret_key)
return c.generate_url_sigv4(
              expires_in=long(expiry),
              method='PUT',
              bucket=bucket,
              key=path
              )

运行它时,出现此错误:

2019-06-18 12:57:51,002 boto [DEBUG]:Using access key provided by client.
2019-06-18 12:57:51,002 boto [DEBUG]:Using secret key provided by client.
Traceback (most recent call last):
  File "scripts/gen_url.py", line 42, in <module>
    main(key, secret)
  File "scripts/gen_url.py", line 33, in main
    print sign(key, secret, s3_bucket, object_name, mime_type, expires, region)
  File "scripts/gen_url.py", line 21, in sign
    key=path
  File "/Users/antkong/Documents/Personal/wd/StackoverflowCode/python/boto2-sign-v4/python-ve/lib/python2.7/site-packages/boto/s3/connection.py", line 380, in generate_url_sigv4
    return self._auth_handler.presign(http_request, expires_in,
AttributeError: 'HmacAuthV1Handler' object has no attribute 'presign'

我想在Google App Engine中运行此代码,因此无法放入Boto配置。因此,如何与需要S3SignV4

的s3连接进行通信

1 个答案:

答案 0 :(得分:0)

最后,我使用环境变量解决了这个问题:

os.environ['S3_USE_SIGV4'] = 'True'

只需在创建S3Connection之前添加以上行即可。