2016-05-23 16 views
0

Macで動作しているDockerコンテナの内部からDynamoDBに接続しようとすると、最近(長いタイムアウト後に)EndpointConnectionErrorが発生し始めました。以前は同じコードと設定がうまくいきました。botocore.exceptions.EndpointConnectionError from Mac Dockerコンテナ

ここではいくつかのサンプルコードです:

>>> from boto3 import resource 
>>> r = resource('dynamodb') 
>>> table = r.Table('Users') 
>>> table.put_item(Item={'id':'987987'}) 

私の〜/ .aws/configに:私は(マックOS)からコンテナを再構築し、再起動して使用してい

[default] 
output = json 
region = us-east-1 

コード:

#!/bin/sh 
docker-machine ssh default "docker ps | awk 'NR > 1 {print \$1}' | xargs --no-run-if-empty docker kill" 
docker build -t <image_name> . 
docker-machine ssh default "docker run -p 80:80 -v /var/datenight_secret:/var/www/.aws <image_name>" & 

スタックトレース:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/boto3/resources/factory.py", line 518, in do_action 
    response = action(self, *args, **kwargs) 
    File "/usr/local/lib/python3.4/dist-packages/boto3/resources/action.py", line 83, in __call__ 
    response = getattr(parent.meta.client, operation_name)(**params) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/client.py", line 258, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/client.py", line 537, in _make_api_call 
    operation_model, request_dict) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/endpoint.py", line 117, in make_request 
    return self._send_request(request_dict, operation_model) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/endpoint.py", line 146, in _send_request 
    success_response, exception): 
    File "/usr/local/lib/python3.4/dist-packages/botocore/endpoint.py", line 219, in _needs_retry 
    caught_exception=caught_exception) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/hooks.py", line 227, in emit 
    return self._emit(event_name, kwargs) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/hooks.py", line 210, in _emit 
    response = handler(**kwargs) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 183, in __call__ 
    if self._checker(attempts, response, caught_exception): 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 251, in __call__ 
    caught_exception) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 274, in _should_retry 
    return self._checker(attempt_number, response, caught_exception) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 314, in __call__ 
    caught_exception) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 223, in __call__ 
    attempt_number, caught_exception) 
    File "/usr/local/lib/python3.4/dist-packages/botocore/retryhandler.py", line 356, in _check_caught_exception 
    raise caught_exception 
botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://dynamodb.us-east-1.amazonaws.com/" 

私はus-east-2またはeu-west-1を試しても、同じ動作(長時間ハングした後、同じスタックトレース)が発生します。 us-east-1 EC2ホストまたはMac OSでは、同じ設定ファイルと認証情報ファイルが正常に動作します。

this questionに基づいて、私はHTTP_PROXYとHTTPS_PROXYが両方とも空白であることを保証しました。

PythonバージョンはPython 3.4.3です。

+0

コンテナからインターネットにアクセスできますか? 'ping www.google.com' – helloV

答えて

1

docker-machine stop default; docker-machine start defaultを実行すると問題が解決しました。どの程度深刻な不満を抱いていたのか - ネットワーキングについて教えてくれる興味深い問題だと思っていました。

関連する問題