#amazon-web-services #gitlab-ci #packer
#amazon-веб-сервисы #gitlab-ci #упаковщик
Вопрос:
Когда мой бегун gitlab запускает следующую команду:
time packer build -var "git_branch=$CI_BUILD_REF_NAME" -var "git_hash=$CI_BUILD_REF" -color=false packer-application.json
Я получаю следующую ошибку:
Build 'amazon-ebs' errored: Error creating temporary keypair: UnauthorizedOperation: You are not authorized to perform this operation.
status code: 403, request id:
Однако команда выполняется успешно, если я подключаюсь к своему gitlab runner по ssh и запускаю команду вручную.
Есть идеи?
Ответ №1:
Необходимо убедиться, что сборка имеет доступ к ключам API AWS с доступом для изменения ресурсов. Хотя контейнер сборки выполняется на бегуне, он полностью изолирован и не имеет доступа к среде на базовом хосте.
Вы можете добавить (вроде) секретные переменные среды на странице переменных в проекте. Они будут доступны для всех сборок, поэтому будьте осторожны, чтобы не предоставлять доступ к разработчику или более высокому уровню людям, которые не должны видеть ключи.
Если у вас есть роль EC2, привязанная к хосту runner, и вы хотите использовать ее для доступа к API, вы можете настроить свой runner на запуск сборок в shell
режиме mode, что означает, что они будут выполняться непосредственно на хосте, как традиционная сборка Jenkins.