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

时间:2018-08-30 15:24:24

标签: python security ibm-cloud object-storage

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

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

  

文件“ /usr/lib/python2.7/site-packages/ibm_botocore/config.py”,行   142,在_record_user_provided_options中       '得到了意外的关键字参数\'%s \''%键)TypeError:得到了意外的关键字参数'cos_hmac_keys'

这是HMAC密钥结构:

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

1 个答案:

答案 0 :(得分:1)

我发现COS S3客户端正在从IBM Cloud config目录中读取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)