EndpointConnectionError: Не удалось подключиться к URL-адресу конечной точки: "http://169.254.169.254/....." - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать AWS RDS и развернуть лямбда-функцию с помощью скрипта Python. Тем не менее, я получаю ниже ошибка, похоже, что он не может связаться с командами aws для создания rds.

DEBUG: Caught retryable HTTP exception while making metadata service request to http://169.254.169.254/latest/meta-data/iam/security-credentials/: Could not connect to the endpoint URL: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

Traceback (most recent call last):

 File "/usr/lib/python2.7/site-packages/botocore/utils.py", line 303, in _get_request
 response = self._session.send(request.prepare())
File "/usr/lib/python2.7/site-packages/botocore/httpsession.py", line 282, in send raise EndpointConnectionError(endpoint_url=request.url, error=e)

EndpointConnectionError: Could not connect to the endpoint URL: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

Я получаю учетные данные aws через SSO okta. В каталоге ~ / .aws ниже находятся содержимое файлов «credentials» и «config» соответственно.

[default]
aws_access_key_id = <Key Id>
aws_secret_access_key = <Secret Key>
aws_session_token = <Token>

[default]
region = us-west-2

```python
```
for az in availability_zones:
    if aurora.get_db_instance(db_instance_identifier + "-" + az)[0] != 0:
        aurora.create_db_instance(db_cluster_identifier, db_instance_identifier + "-" + az, az, subnet_group_identifier, db_instance_type)
    else:
        aurora.modify_db_instance(db_cluster_identifier, db_instance_identifier + "-" + az, az, db_instance_type)

# Wait for DB to become available for connection
iter_max = 15
iteration = 0
for az in availability_zones:
    while aurora.get_db_instance(db_instance_identifier + "-" + az)[1]["DBInstances"][0]["DBInstanceStatus"] != "available":
        iteration += 1
        if iteration < iter_max:
            logging.info("Waiting for DB instances to become available - iteration " + str(iteration) + " of " + str(iter_max))
            time.sleep(10*iteration)
        else:
            raise Exception("Waiting for DB Instance to become available timed out!")

cluster_endpoint = aurora.get_db_cluster(db_cluster_identifier)[1]["DBClusters"][0]["Endpoint"]

Фактическая ошибка, приведенная ниже, из цикла while, DEBUG показывает, что не удалось найти учетные данные, но учетные данные есть. Я могу развернуть среду Elastic Beanstalk из cli, используя те же учетные данные aws, но не это. Похоже, вышеприведенная команда aurora.create_db_instance не удалась.

DEBUG: Unable to locate credentials

Traceback (most recent call last):

  File "./deploy_api.py", line 753, in <module> sync_rds()
  File "./deploy_api.py", line 57, in sync_rds
    while aurora.get_db_instance(db_instance_identifier + "-" + az)[1]["DBInstances"][0]["DBInstanceStatus"] != "available":

TypeError: 'NoneType' object has no attribute '__getitem__'

1 Ответ

0 голосов
/ 28 июля 2019

У меня была эта ошибка, потому что у задачи ECS не было разрешений на запись в DynamoDB.Код, вызвавший проблему, был:

из ресурса импорта boto3

dynamicodb_resource = resource ("dynamodb")

Проблема была решена, когда я заполнил имя region_name, aws_access_key_id иПараметры aws_secret_access_key для вызова функции resource ().

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session.resource

Если это не решит вашу проблему, проверьте код, подключающийся к сервисам AWS, и убедитесь, что вы заполняетевсе правильные параметры функции.

...