【问题标题】:Python: How do I generate presigned URLs for IBM Cloud Object Storage?Python:如何为 IBM Cloud Object Storage 生成预签名 URL?
【发布时间】:2019-02-05 14:34:29
【问题描述】:

我按照此信息为我的 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\'' % key) TypeError: Got unexpected keyword argument 'cos_hmac_keys'

这是 HMAC 密钥结构:

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

【问题讨论】:

    标签: python security ibm-cloud object-storage


    【解决方案1】:

    我发现 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_idcos_hmac_keys.secret_access_keyaws_secret_access_key

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

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

    【讨论】:

    • 奇怪的行为。当它失败时是客户端构造器读取credentials.json 文件吗?
    • 我试图直接通过 Config 子参数传入 cos_hmac_keys 作为参数。
    猜你喜欢
    • 2019-02-05
    • 2020-10-07
    • 2018-08-28
    • 1970-01-01
    • 2020-02-25
    • 2018-06-05
    • 2018-12-03
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多