В настоящее время я успешно использую сборку кода для простых задач сборки (в конфигурации без vpc).
Но теперь я пытаюсь запустить задачу сборки, которая считывает значение параметра SSM, и она терпит неудачу, потому что не может загрузить какие-либо учетные данные, очевидная причина:
com.amazonaws.auth.InstanceProfileCredentialsProvider@5754b242: Unable to load credentials from service endpoint
Роль службы IAM, которую я назначил проекту сборки кода, имеет ssm:GetParameters
разрешение для параметра, который я пытаюсь прочитать (и если бы это было проблемой, я бы ожидал увидеть сообщение unauthorized
, а не unable to load credentials
).
Я использую Java SDK для вызова SSM GetParameter, который, как я подтвердил, работает для чтения из параметров SSM при запуске из экземпляра EC2, поэтому я почти уверен, что проблема здесь в Codebuild.
Для дальнейшей диагностики проблемы я попытался добавить команду сборки для выполнения curl
адреса метаданных экземпляра AWS:
curl 169.254.169.254/latest/meta-data/iam/info
Вместо того, чтобы возвращать метаданные экземпляра, как в обычной среде EC2, он просто истекает.
Таким образом, похоже, что корень проблемы в том, что среда сборки кода не работает с адресом поиска метданных AWS, что приводит к тому, что цепочка поставщиков AWS не может искать учетные данные.
Как я могу прочитать свои параметры SSM из сборки кода (без жесткого кодирования или использования переменных среды для учетных данных SDK)?