Вопрос довольно простой, но небольшая предыстория всегда может быть полезна. Мне нужно получить идентификатор контейнера из самого контейнера, и его значение будет использоваться в качестве имени файла журнала. Согласно документы ECS_CONTAINER_METADATA_URI_V4
вводится в каждый контейнер. Но когда я подключаюсь к контейнерам, размещенным на Fargate, через SSH, такой переменной нет. Что и ожидается, и я создал тема для этого, прежде чем просто убедиться, что моя догадка верна.
Итак, есть ли способ получить значение ECS_CONTAINER_METADATA_URI_V4
Я почти уверен что приложение при запуске в контейнере будет доступна эта переменная среды.
Проблема с ssh и bash которые очищают / дезинфицируют переменные среды до того, как вы получите оболочку. Я предлагаю вам запустить задачу на ECS на базе EC2 для тестирования (т.е. не на Fargate) и docker exec -it {container} bash
в него - скорее всего, вы найдете ECS_CONTAINER_METADATA_URI_V4
в окр.
Кстати, использование ssh в контейнере - плохая практика. Контейнеры неизменяемы, интерактивного доступа быть не должно.
Надеюсь, это поможет :)
А пока я настаивал на том, чтобы ECS_CONTAINER_METADATA_URI_V4
сохраняя его в файл при запуске контейнера: echo ${ECS_CONTAINER_METADATA_URI_V4} > metadata_url.txt
Итак, я могу получить к нему доступ.