首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libcloud ECS访问

Libcloud ECS访问
EN

Stack Overflow用户
提问于 2017-11-20 01:32:06
回答 1查看 35关注 0票数 0

尝试为一个项目测试libcloud的ECS驱动程序。

我写了一个简单的测试:

代码语言:javascript
复制
with open("conf.json") as f:
    data = json.loads(f.read())

driver = get_driver(getattr(Provider,'ECS'))

with open('.cloud_credentials/'+data['provider']+'/access_id', 'r') as myfile:
    ACCESS_KEY_ID = myfile.read().replace('\n', '')
    print ACCESS_KEY_ID

with open('.cloud_credentials/'+data['provider']+'/secret_key', 'r') as myfile:
    SECRET_KEY = myfile.read().replace('\n', '')
    print SECRET_KEY


timer.start()
conn = driver(access_id = ACCESS_KEY_ID,
              secret = SECRET_KEY,
              region = 'us-east-1')
timer.stop()


cluster = conn.create_cluster('pippo','us-east-1')

但是,运行它会产生以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "launch.py", line 32, in <module>
    cluster = conn.create_cluster('pippo',data['region'])
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/libcloud/container/drivers/ecs.py", line 151, in create_cluster
    headers=self._get_headers('CreateCluster')
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/libcloud/common/base.py", line 604, in request
    headers=headers, stream=stream)
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/libcloud/http.py", line 212, in request
    verify=self.verification
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/home/sergio/anaconda2/lib/python2.7/site-packages/requests/adapters.py", line 437, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='ecs.%s.amazonaws.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5f16dca950>: Failed to establish a new connection: [Errno -2] Name or service not known',))

我认为问题出在包含%s的主机字符串上。在库中挖掘看起来该字符串是在文件中初始化的虚拟字符串:

代码语言:javascript
复制
/libcloud/container/drivers/ecs.py

我假设在这些文件中的某个地方应该有一个应该覆盖base-string的函数,这个函数可能因为某些原因没有被调用,但是,作为libcloud库的新手,很难找到罪魁祸首。

奇怪的是,检查正在发送的标头,看起来它们包含正确的(?)地址:

代码语言:javascript
复制
headers: {'Host': u'ecs.us-east-1.amazonaws.com', 'User-Agent': 'libcloud/2.2.1 (Amazon Elastic Container Service) ', 'Content-Type': 'application/x-amz-json-1.1', 'Accept-Encoding': 'gzip,deflate', 'x-amz-target': 'AmazonEC2ContainerServiceV20141113.CreateCluster'}

有没有更有经验的人可以给我指出正确的方向?我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-11-20 22:28:11

这看起来像是一个bug,这不是你做的事情。

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

https://stackoverflow.com/questions/47379845

复制
相关文章

相似问题

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