файл не загружается в хранилище облачных объектов IBM с использованием python - PullRequest
0 голосов
/ 30 сентября 2019

Во время выполнения кода в IDLE он ничего не показывает.

из ibm_botocore.client import Config

import ibm_boto3

def upload_file (учетные данные, local_file_name, ключ):

cos = ibm_boto3.client (имя_сервера = 's3', ibm_api_key_id = учетные данные ['получено из описания учетных данных службы'],

ibm_service_instance_id = учетные данные ['получено из описания учетных данных службы]],

ibm_auth_endpoint = credentials ['s3.eu-gb.cloud-object-storage.appdomain.cloud'], // поскольку мой регион - Лондон

config = Config (signature_version = 'oauth'),

endpoint_url = учетные данные ['https://control.cloud -object-storage.cloud.ibm.com / v2 / endpoints '])

try:

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')

1 Ответ

0 голосов
/ 30 сентября 2019

Вы не предоставляете действительный 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')
...