python - IBM Cloud Object Storage Connection 问题 Watson Studio Python notebook

标签 python boto3 watson-studio ibm-cloud-storage

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

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) - 从服务器检索 token 失败。

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

我还尝试了与 HMAC 凭据的单独连接,但找不到任何教程向您展示如何合并这些凭据...

请帮忙!

谢谢

最佳答案

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

这个问题似乎不是由无效的endpoint_url引起的,无论如何,要获取endpoint_url,请转到Buckets > 'your bucket' > Configuration,然后根据需要选择一个端点(私有(private)/公共(public)/直接)。填写该字段时,请使用“https://”。

请参阅下面的代码片段以直接从 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'])

关于python - IBM Cloud Object Storage Connection 问题 Watson Studio Python notebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755809/

相关文章:

python - 从分片计数器更新实体 - Python

python - 如何在 jinja 模板中获取主机名的 IP 地址

python - 使用 a1.small 实例调用 SageMaker deploy_endpoint 函数时,出现无法打开 m5.xlarge 实例的错误

ssh - 通过 ssh 连接到 Jupyter Notebook

python - Pygame 矩形之间的碰撞

python - 实现 DFS 以查找矩阵中的孤岛时出现问题

django - CSV 文件从缓冲区上传到 S3

python - 使用 KeyConditionExpression 的 boto3 查询

python - 如何从 Watson Studio 中的 Jupyter Notebook 连接到 DashDB?