В настоящее время я успешно использую codebuild для простых задач сборки (в конфигурации не vpc).
Но теперь я пытаюсь запустить задачу сборки, которая считывает значение параметра SSM, и не удается, потому что не может загрузить учетные данные, очевидная причина:
com.amazonaws.auth.InstanceProfileCredentialsProvider@5754b242: Unable to load credentials from service endpoint
Роль службы IAM, которую я выделил проекту codebuild, имеет разрешение 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, он просто истекает.
Таким образом, похоже, что корень проблемы в том, что среда codebuild не работает с адресом поиска метаданных AWS, что приводит к тому, что цепочка провайдеров AWS не может искать учетные данные.
Как я могу прочитать параметры SSM из codebuild (без жесткого кодирования или использования переменных среды для учетных данных SDK)?