【问题标题】:python boto3 connection error with no apparent cause没有明显原因的python boto3连接错误
【发布时间】:2021-08-05 12:46:33
【问题描述】:

我在使用 boto3 连接到 AWS 的代码时遇到错误。昨天下午才开始出现错误,在我上次没有收到错误和第一次收到错误之间,我没有看到任何变化。

错误是:

botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL:

在 .aws/config 我有:

$ cat ~/.aws/config
[default]
region=us-east-1

这是我所知道的:

  • 在另一台机器上使用相同的 AWS 凭证和配置,我没有看到错误。
  • 在同一台机器上使用不同的 AWS 凭证和配置,我确实看到了错误。
  • 我是我们小组中唯一一个在任何机器上的任何凭据都存在此问题的人。

我认为我没有更改任何会影响这在最后一次有效和第一次无效之间的任何事情。似乎我不得不更改一些 AWS 特定配置或一些低级库,而我没有进行任何此类更改。我和一位同事谈了 30 到 45 分钟,当我返回并从我离开的地方拿起问题第一次出现时。

对解决此问题有任何想法或想法吗?

接下来是完整的异常转储。

$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> boto3.client('ec2').describe_regions()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/botocore/client.py", line 200, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/Library/Python/2.7/site-packages/botocore/client.py", line 244, in _make_api_call
    operation_model, request_dict)
  File "/Library/Python/2.7/site-packages/botocore/endpoint.py", line 173, in make_request
    return self._send_request(request_dict, operation_model)
  File "/Library/Python/2.7/site-packages/botocore/endpoint.py", line 203, in _send_request
    success_response, exception):
  File "/Library/Python/2.7/site-packages/botocore/endpoint.py", line 267, in _needs_retry
    caught_exception=caught_exception)
  File "/Library/Python/2.7/site-packages/botocore/hooks.py", line 226, in emit
    return self._emit(event_name, kwargs)
  File "/Library/Python/2.7/site-packages/botocore/hooks.py", line 209, in _emit
    response = handler(**kwargs)
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 183, in __call__
    if self._checker(attempts, response, caught_exception):
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 250, in __call__
    caught_exception)
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 273, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 313, in __call__
    caught_exception)
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 222, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "/Library/Python/2.7/site-packages/botocore/retryhandler.py", line 355, in _check_caught_exception
    raise caught_exception
botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://ec2.us-east-1.amazonaws.com/"

【问题讨论】:

    标签: python exception boto3 botocore


    【解决方案1】:

    问题已解决。事实证明,与 boto 相关的任何看似无关的操作导致 HTTP_PROXY 和 HTTPS_PROXY 环境变量设置不正确,然后破坏了 boto3 和 aws cli 下的 botocore 调用。删除这两个环境变量解决了这个问题。

    我会留下这个,因为我发现很难找到任何指向此错误的可能原因。可能会为其他人节省一些我经历过的头发拉扯。

    【讨论】:

      【解决方案2】:

      我刚刚遇到了类似的问题。突然之间,通过 django 上的 boto3 无法再连接到我的 s3,而我仍然可以在我的 Heroku 环境中执行操作。

      似乎我最近安装了配置不同的亚马逊 CLI,并且 CLI 覆盖了环境变量......该死。我花了 3 个小时才找到。

      通过aws configure我现在设置

      AWS Access Key ID [****************MPIA]: "your true key here without quotes" AWS Secret Access Key [****************7DWm]: "your true secret access key here without quotes" Default region name [eu-west-1]: "your true region here without quotes" Default output format [None]: [here i did just an enter in order not to change this]

      只是为了任何遇到此问题的人而发布此内容。

      【讨论】:

        【解决方案3】:

        当我的连接中断时,我遇到了同样的错误 - botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://ec2.us-east-2.amazonaws.com/"

        当连接恢复时,它可以正常工作。此错误的可能原因可能是

        1. 连接错误
        2. 区域无法满足您的请求,因为每个请求都会到达 AWS 上的端点(更多详细信息请参见 https://docs.aws.amazon.com/general/latest/gr/rande.html#billing-pricing

        Boto3 似乎已经成熟到足以抛出异常,因为更恰当的原因是无法准确知道发生了什么。

        此外,如果您有任何与您的配置相关的问题,那么它们中的大多数都被封装了 ClientError 异常。

        【讨论】:

          猜你喜欢
          • 2022-11-02
          • 1970-01-01
          • 2021-11-02
          • 2017-06-04
          • 1970-01-01
          • 2014-05-08
          • 2014-08-05
          • 1970-01-01
          相关资源
          最近更新 更多