Я пытаюсь прочитать файлы «.pkl», хранящиеся в объектном хранилище IBM, в записную книжку IBM cloud / jupyter, используя приведенную ниже функцию. Я использую Python 2.7.
from ibm_botocore.client import Config
import ibm_boto3
COS_ENDPOINT = "https://s3.private.us.cloud-object-
torage.appdomain.cloud"
COS_API_KEY_ID = "xxxxxxxxxxxx"
COS_AUTH_ENDPOINT = "https://iam.ng.bluemix.net/oidc/token"
COS_RESOURCE_CRN = "xxxxxxxxxxxxxxxxx"
COS_BUCKET_LOCATION = "us-geo"
# Create resource
cos = ibm_boto3.resource("s3",
ibm_api_key_id=COS_API_KEY_ID,
ibm_service_instance_id=COS_RESOURCE_CRN,
ibm_auth_endpoint=COS_AUTH_ENDPOINT,
config=Config(signature_version="oauth"),
endpoint_url=COS_ENDPOINT
)
def get_item(bucket_name, item_name):
print("Retrieving item from bucket: {0}, key:
{1}".format(bucket_name, item_name))
try:
file = cos.Object(bucket_name, item_name).get()
print("File Contents: {0}".format(file["Body"].read()))
except ClientError as be:
print("CLIENT ERROR: {0}\n".format(be))
except Exception as e:
print("Unable to retrieve file contents: {0}".format(e))
get_item('bucket_name', 'item_name')
Функция get_item возвращает пустую строку при попытке прочитать файл '.pkl'. Но с помощью той же функции я могу прочитать файл .txt. Размер файла .pkl составляет 30 МБ, поэтому я не могу загрузить их в облако IBM из-за ограничений по размеру. Может кто-нибудь, пожалуйста, дайте мне знать, как передавать данные хранилища облачных объектов без их загрузки.