首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >s3-api.xxxx.objectstorage.service.networklayer.com : ValueError:无效端点:

s3-api.xxxx.objectstorage.service.networklayer.com : ValueError:无效端点:
EN

Stack Overflow用户
提问于 2018-02-05 14:54:02
回答 2查看 3.2K关注 0票数 8

我正在尝试访问我的Watson数据平台目录中的一个csv文件。我使用了DSX笔记本中的代码生成功能:Insert to code > Insert StreamingBody object

生成的代码是:

代码语言:javascript
复制
import os
import types
import pandas as pd
import boto3

def __iter__(self): return 0

# @hidden_cell
# The following code accesses a file in your IBM Cloud Object Storage. It includes your credentials.
# You might want to remove those credentials before you share your notebook.

os.environ['AWS_ACCESS_KEY_ID'] = '******'
os.environ['AWS_SECRET_ACCESS_KEY'] = '******'
endpoint = 's3-api.us-geo.objectstorage.softlayer.net'

bucket = 'catalog-test'

cos_12345 = boto3.resource('s3', endpoint_url=endpoint)
body = cos_12345.Object(bucket,'my.csv').get()['Body']

# add missing __iter__ method so pandas accepts body as file-like object
if not hasattr(body, "__iter__"): body.__iter__ = types.MethodType(__iter__, body)

df_data_2 = pd.read_csv(body)
df_data_2.head()

当我试图运行这段代码时,我得到:

代码语言:javascript
复制
/usr/local/src/conda3_runtime.v27/4.1.1/lib/python3.5/site-packages/botocore/endpoint.py in create_endpoint(self, service_model, region_name, endpoint_url, verify, response_parser_factory, timeout, max_pool_connections)
    270         if not is_valid_endpoint_url(endpoint_url):
    271 
--> 272             raise ValueError("Invalid endpoint: %s" % endpoint_url)
    273         return Endpoint(
    274             endpoint_url,

ValueError: Invalid endpoint: s3-api.us-geo.objectstorage.service.networklayer.com

奇怪的是,如果我为SparkSession安装程序生成代码,则使用相同的端点,但火花代码运行正常。

我怎样才能解决这个问题?

我假设其他软层端点也会遇到同样的问题,所以我在这里也列出它们,以确保这个问题也适用于其他Softlayer位置:

  • s3-api.us-geo.objectstorage.softlayer.net
  • s3-api.dal-us-geo.objectstorage.softlayer.net
  • s3-api.sjc-us-geo.objectstorage.softlayer.net
  • s3-api.wdc-us-geo.objectstorage.softlayer.net
  • s3.us-south.objectstorage.softlayer.net
  • s3.us-east.objectstorage.softlayer.net
  • s3.eu-geo.objectstorage.softlayer.net
  • s3.ams-eu-geo.objectstorage.softlayer.net
  • s3.fra-eu-geo.objectstorage.softlayer.net
  • s3.mil-eu-geo.objectstorage.softlayer.net
  • s3.eu-gb.objectstorage.softlayer.net
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-05 14:54:02

解决方案是在端点前缀加上https://,从.

代码语言:javascript
复制
endpoint = 's3-api.us-geo.objectstorage.softlayer.net'

代码语言:javascript
复制
endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'
票数 12
EN

Stack Overflow用户

发布于 2018-02-06 06:24:35

对于,它应该是import ibm_boto3而不是import boto3。原始的boto3用于访问AWS,它使用不同的身份验证。也许这两者对端点值有不同的解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48625239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档