IBM Cloud Object Storage Connection 问题 Watson Studio Python 笔记本

Posted

技术标签:

【中文标题】IBM Cloud Object Storage Connection 问题 Watson Studio Python 笔记本【英文标题】:IBM Cloud Object Storage Connection issue Watson studio Python notebook 【发布时间】:2020-03-04 10:50:34 【问题描述】:

我一直在尝试让 Watson Studio 中的 Python notebook 连接到我的云存储并从我的云存储中检索数据几个小时,并阅读了许多教程,但不知道为什么它不起作用,代码如下:

credentials = 
    'BUCKET': 'openai-data',
    'URL': 'https://s3.private.us-east.cloud-object-storage.appdomain.cloud',
    'SECRET_KEY': '',
    'API_KEY': '*********************', #this key has been *d out but the value is there in my code
    'RESOURCE_INSTANCE_ID': 'crn:v1:bluemix:public:cloud-object-storage:global:a/e448d36ef93f4d3ca55077db903d3461:51ce6e50-4e92-41d0-b002-5023e815cadc::',
    'FILE': 'test_Y_smallsample.h5',
    'ACCESS_KEY': ''



from ibm_botocore.client import Config
import ibm_boto3
cos = ibm_boto3.resource(service_name='s3',
    ibm_api_key_id=credentials['API_KEY'],
    ibm_service_instance_id=credentials['RESOURCE_INSTANCE_ID'],
    ibm_auth_endpoint='https://iam.bluemix.net/oidc/token',
    config=Config(signature_version='oauth'),
    endpoint_url=credentials['URL'])

files = cos.Bucket('openai-data').objects.all()
for file in files:
    print("Item: 0 (1 bytes).".format(file.key, file.size))

这会产生错误: CredentialRetrievalError:从https://iam.bluemix.net/oidc/token 检索凭据时出错:HttpCode(400) - 从服务器检索令牌失败。

如果我对 ibm_auth_endpoint 使用“https://iam.cloud.ibm.com/identity/token”,结果相同

我也尝试过使用 HMAC 凭据进行单独连接,但找不到任何教程来展示如何合并这些凭据...

请帮忙!

谢谢

【问题讨论】:

您可以省略secret_key 行和ibm_auth_endpoint 行,它们不是必需的。您能指出您正在使用的文档吗? 【参考方案1】:

这可能是由于使用了无效的 apikey 造成的。要获取 apikey 值,请转到存储实例的“服务凭据”菜单,然后单击“WDP-项目管理-...”的“查看凭据”,然后查看“apikey”字段中的值。

这个问题好像不是endpoint_url无效引起的,反正要获取endpoint_url,进入Buckets > 'your bucket' > Configuration,然后根据需要选择endpoint(Private/Public/Direct) .填写字段时,请使用“https://”。

参见下面的代码 sn-p 直接从 cvs 文件中获取数据:

import pandas as pd 
import ibm_boto3 
from ibm_botocore.client import Config 
cos = ibm_boto3.client(service_name='s3',
    ibm_api_key_id='<apikey>', 
    ibm_auth_endpoint="https://iam.ng.bluemix.net/oidc/token",
    config=Config(signature_version='oauth'),
    endpoint_url="<endpoint>")
obj = cos.get_object(Bucket='<bucket_name>', Key='<csv_file>')
df = pd.read_csv(obj['Body'])

【讨论】:

以上是关于IBM Cloud Object Storage Connection 问题 Watson Studio Python 笔记本的主要内容,如果未能解决你的问题,请参考以下文章

markdown R1soft Server备份管理器和IBM Cloud Object Storage的简单复制指南

IBM Cloud Object Storage Connection 问题 Watson Studio Python 笔记本

IBM DataWorks 是不是支持 Object Storage 和 dashDB 之间的集成?

如何使用 python SDK 创建存储桶?

Google Cloud Storage - 使用 CURL 请求下载文件

访问 Google Cloud Storage 触发事件“Pub/Sub”?