Получение 400-х из aws ELB hostcheck для работы с django ALLOWED_HOSTS в aws ECS в сетевом режиме awsvpc? - PullRequest
0 голосов
/ 17 апреля 2019

При переходе на ECS с сетевым режимом awsvpc мой ALB сообщает, что все мои хосты не работают, поскольку проверка /status/ дает 400 с.Я сузил вопрос до того, что что-то не так с ALLOWED_HOSTS.

Как мне заставить мое веб-приложение передавать 200 баллов ELB Healthchecker?

1 Ответ

0 голосов
/ 17 апреля 2019

Решение, которое я придумал, заключается в ваших настройках, выполните

ELB_HEALTHCHECK_HOSTNAMES = [ip for network in 
    requests.get(os.environ['ECS_CONTAINER_METADATA_URI']).json()['Networks']
    for ip in network['IPv4Addresses']]
ALLOWED_HOSTS += ELB_HEALTHCHECK_HOSTNAMES

. Это займет каждый IP-адрес из каждой сети, подключенной к вашему контейнеру, и добавит его в ALLOWED_HOSTS.

Priorдля перехода на ECS с сетевым режимом awsvpc многие из нас знакомы с этой строкой, которая извлекает IP-адрес экземпляра EC2, который используется в качестве имени хоста средством проверки работоспособности ELB:

ELB_HEALTHCHECK_HOSTNAME = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4', timeout=2).text

Эта строка в ECSс помощью awsvpc network получает IP-адрес экземпляра EC2, а не ENI, подключенный к вашему контейнеру.Чтобы получить IP-адрес ENI, вы отправляете запрос конечной точке в переменной среды $ {ECS_CONTAINER_METADATA_URI}

Возвращает полезные метаданные о контейнерах, включая IPV4

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...