Ошибка подключения при получении метаданных из контейнера, в котором выполняется задача ECS - PullRequest
2 голосов
/ 19 июня 2020

Я пытаюсь получить реальный регион, в котором находится экземпляр, выполняющий задачу ECS в контейнере. Контейнер запускает сценарий python, первая задача которого - получить регион, чтобы я мог использовать методы boto3, такие как sqs.get_queue_by_name(), для которых нужно установить регион. Для этого я пытаюсь получить регион с помощью

meta = requests.get('http://169.254.169.254/latest/dynamic/instance-identity/document', timeout=1).json()
os.environ["AWS_DEFAULT_REGION"] = meta.get("region")

, но у меня возникает ошибка подключения.

Когда я собираю свой стек вручную, проблем нет, но когда стек развертывается CDK (те же группы безопасности, роли и т. д. c), я получил ошибку

requests.exceptions.ConnectionError: HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /latest/dynamic/instance-identity/document (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe3d62491f0>: Failed to establish a new connection: [Errno 22] Invalid argument'))

Я вижу два разных пути решения этой проблемы:

  • Установите переменную среды 'AWS_DEFAULT_REGION' при развертывании с помощью CDK, но с

    taskDefinition.addContainer ('DSPTContainer', {image: ecrImage, memoryLimitMiB: 30000, environment: {AWS_DEFAULT_REGION? Props. .region}) существует проблема с Property 'AWS_DEFAULT_REGION' is incompatible with index signature.

  • Изменение роли задачи (но как) или чего-то еще (например, группы безопасности), чтобы разрешить соединение. Обратите внимание, что в экземпляре я могу установить sh соединение ....

[РЕДАКТИРОВАТЬ]

Внутри контейнера (Я могу войти в контейнер, когда экземпляр запущен), я могу пинговать, скажем, google.com, но не URI метаданных экземпляра:

import requests
requests.get("https://www.google.com", timeout=1) ---> Response200
requests.get("http://169.254.169.254/latest/meta-data/", timeout=1) ---> ConnectTimeout Exception

[РЕШЕНИЕ]

Проблема связана с дубликатом?

...