首页 > 解决方案 > 文件未使用 python 上传到 IBM 云对象存储

问题描述

在 IDLE 中运行代码时,它什么也不显示。

从 ibm_botocore.client 导入配置

导入 ibm_boto3

def upload_file(凭证,local_file_name,key):

cos = ibm_boto3.client(service_name='s3', ibm_api_key_id=credentials['从服务凭证描述中得到'],

ibm_service_instance_id=credentials['从服务凭证描述中得到'],

ibm_auth_endpoint=credentials['s3.eu-gb.cloud-object-storage.appdomain.cloud'],//因为我的地区是伦敦

config=Config(signature_version='oauth'),

endpoint_url=credentials[' https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints '])

尝试:

res=cos.upload_file(Filename='D:\ibm-cloud\get-started-python\abc.txt', 

Bucket=credentials['cloud-college-bucket0'],Key=key)

例外为 e:

print(Exception, e)

别的:

print('File Uploaded')

标签: ibm-cloudibm-cloud-storage

解决方案


您没有提供有效的endpoint_url. 您从凭据中提取的值将提供有效端点列表,但本身无效。在文档中了解更多信息。

编辑:啊,我明白了。您将正确的端点放在错误的位置。只要拿走你所拥有的ibm_auth_endpoint并将其用于endpoint_url. 您实际上可以完全省略授权端点行(SDK 将默认为正确的值),或者您可以使用https://iam.cloud.ibm.com/identity/token.

尝试这个:

import ibm_boto3
from ibm_botocore.client import Config

cos = ibm_boto3.client(service_name='s3',
                       ibm_api_key_id='<some API key>',
                       ibm_service_instance_id='<got from service credential description>',
                       config=Config(signature_version='oauth'),
                       endpoint_url='https://s3.eu-gb.cloud-object-storage.appdomain.cloud')

try:
    res = cos.upload_file('D:\ibm-cloud\get-started-python\abc.txt',
                      'cloud-college-bucket0', 'some-key')
except Exception as e:
    print(Exception, e)
else:
    print('File Uploaded')

推荐阅读