Несанкционированная ошибка AWS для упаковщика в gitlab ci

#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.