Python:如何为 IBM Cloud Object Storage 生成预签名 URL?

Python: How do I generate presigned URLs for IBM Cloud Object Storage?

我按照此信息为我的 IBM Cloud Object Storage (COS) 实例创建了 HMAC 密钥。我正在使用 Python SDK for IBM COS。如何创建预先签名的 URI(链接),以便用户无需身份验证即可上传或下载文件?

我正在尝试提供 HMAC 凭据作为客户端参数的一部分,但我收到如下错误:

File "/usr/lib/python2.7/site-packages/ibm_botocore/config.py", line 142, in _record_user_provided_options 'Got unexpected keyword argument \'%s\'' % key) TypeError: Got unexpected keyword argument 'cos_hmac_keys'

这是 HMAC 密钥结构:

"cos_hmac_keys": {
    "access_key_id": "dfe869efasdasd",
    "secret_access_key": "f04e500a66asdasdasd5bfd34c82"
  }

我发现 COS S3 客户端正在从 IBM Cloud 配置目录读取 HMAC 凭证,或者您必须以不同的名称传递它们:

cos = ibm_boto3.client('s3', myserviceapikey, endpoint_url=myendpointurl, aws_access_key_id=config["cos_hmac_keys"]["access_key_id"], aws_secret_access_key=config["cos_hmac_keys"]["secret_access_key"])

基本上,我必须将 cos_hmac_keys.access_key_id 映射到 aws_access_key_id 并将 cos_hmac_keys.secret_access_key 映射到 aws_secret_access_key.

初始化 COS 客户端后,我可以创建预签名 URI:

theURL=cos.generate_presigned_url('get_object', Params = {'Bucket': mybucket, 'Key': myobject}, ExpiresIn = 600)