我按照此信息为我的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"
}
答案 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)