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 笔记本的主要内容,如果未能解决你的问题,请参考以下文章