简体   繁体   English

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

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

I followed this information to create HMAC keys for my instance of IBM Cloud Object Storage (COS). 我按照此信息为我的IBM Cloud Object Storage(COS)实例创建HMAC密钥。 I am using the Python SDK for IBM COS . 我正在使用适用于IBM COSPython SDK How can I create presigned URIs (links), so that users can upload or download files without authentication? 如何创建预签名的URI(链接),以便用户无需身份验证即可上传或下载文件?

I am trying to provide the HMAC credentials as part of the client parameters, but I receive errors like the following: 我正在尝试将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' _record_user_provided_options中的文件“ /usr/lib/python2.7/site-packages/ibm_botocore/config.py”,第142行'得到了意外的关键字参数\\'%s \\'%键)TypeError:得到了意外的关键字参数'cos_hmac_keys “

Here is the HMAC keys structure: 这是HMAC密钥结构:

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

I found out that the COS S3 client is either reading the HMAC credentials from the IBM Cloud config directory or you have to pass them under different name: 我发现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"])

Basically, I have to map cos_hmac_keys.access_key_id to aws_access_key_id and cos_hmac_keys.secret_access_key to aws_secret_access_key . 基本上,我必须将cos_hmac_keys.access_key_id映射到aws_access_key_id并将cos_hmac_keys.secret_access_keyaws_secret_access_key

With that COS client initialized, then I can create the presigned URI: 初始化该COS客户端后,即可创建预签名的URI:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从`ibm_boto3`调用`generate_presigned_post`? - how do I call `generate_presigned_post` from `ibm_boto3`? 我如何使用本地python代码从ibm对象存储中获取容器 - how do i get a container from ibm object storage using a local python code 使用Python的IBM对象存储 - IBM Object Storage with Python IBM Cloud Object 存储连接问题 Watson studio Python 笔记本 - IBM Cloud Object Storage Connection issue Watson studio Python notebook 无法使用 python 在 IBM Cloud object 存储中检索存储桶名称 - Cannot retrieve bucket name in IBM Cloud object storage using python 使用 python 将文件上传到 IBM 云 object 存储时出错 - error while uploading file to IBM cloud object storage using python 如何使用Python从IBM Cloud Object Storage中读取Parquet文件的元数据? - How to read Parquet file's metadata from IBM Cloud Object Storage in Python? 如何从存储桶中获取所有文件 - IBM Cloud Object Storage? - How to get all files from a Bucket - IBM Cloud Object Storage? 使用python生成用于将文件上传到谷歌存储的预签名url - Generate presigned url for uploading file to google storage using python 如何使用 Python 在谷歌云存储中拆分 PDF - How do I split a PDF in google cloud storage using Python
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM