Я запускаю док-контейнер из AWS CodeBuild внутри своего VPC. На хосте у меня нет проблем с запуском aws sts получить идентификатор вызывающего абонента
без учетных данных. Например.:
aws sts получить идентификатор вызывающего абонента
{
"UserId": "[отредактировано]",
"Аккаунт": "[отредактировано]",
"Arn": "arn:aws:sts::[отредактировано]:предполагаемая-роль/[отредактировано]"
}
Однако внутри контейнера докера я получаю сообщение об ошибке при попытке получить свою личность:
% aws sts получить идентификатор вызывающего абонента
Не удалось связаться со службой метаданных EC2.
Не удалось найти учетные данные. Вы можете настроить учетные данные, запустив «aws configure».
Я предполагаю, что это связано с тем, что я не могу связаться со службой метаданных EC2 для получения ключей роли, но я подумал, что это должно «просто работать», поскольку контейнер должен иметь доступ к той же сети, что и хост.
Поэтому я отступил и еще раз посмотрел на хост - похоже, я не могу получить доступ к службе метаданных на http://169.254.169.254:
# curl -kv http://169.254.169.254/latest/meta-data/public-hostname
* Попытка 169.254.169.254:80...
* Установлен TCP_NODELAY
* Ошибка немедленного подключения для 169.254.169.254: неверный аргумент
* Закрытие соединения 0
curl: (7) Не удалось подключиться к серверу
Как авс стс
работает на хосте? Я думал, что интерфейсу командной строки AWS нужен доступ к этой службе метаданных, если учетные данные не были предоставлены. Как я могу заставить его работать внутри контейнера (я не хочу передавать долгоживущие токены в переменных среды)?
(отредактировано с дополнительными сведениями, полученными при непосредственном изучении SessionManager в экземпляре CodeBuild)