我正在尝试使用下面提供的功能将存储在IBM对象存储中的'.pkl'文件读入IBM云/ 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')
当尝试读取'.pkl'文件时,函数get_item返回空字符串。但是使用相同的功能,我可以读取“ .txt”文件。 “ .pkl”文件的大小为30 MB,因此由于大小限制,我无法将它们下载到IBM云中。有人可以让我知道如何在不下载的情况下流式传输云对象存储数据。