Использование ролей IAM в рабочей роли AWS CodeBuild

Есть ли способ предоставить роли экземпляра IAM для использования в процессе сборки?

В моем конкретном случае мне нужно выполнить некоторые операции s3 во время сборки (не связанные с архивированием артефактов).

Пока единственная альтернатива, которую я нашел, — это добавить ключ и секрет aws в переменные среды на странице конфигурации aws codebuild.

Было бы более безопасно просто прикрепить роль IAM к экземпляру ec2 или контейнеру, выполняющему сборку. Возможно ли это в настоящее время (2016-12)?


person Daniel Sperry    schedule 09.12.2016    source источник


Ответы (1)


Вы должны иметь возможность прикрепить любые дополнительные разрешения политики к роли службы, созданной для вашего проекта сборки. CodeBuild использует эту политику во время сборки для выполнения действий внутри экземпляра сборки.

Например, если вы хотите удалить объект из S3 во время сборки, вам нужно добавить следующий оператор в политику роли службы:

{
    "Effect": "Allow",
    "Resource": [
        "*"
    ],
    "Action": [
        "s3:DeleteObject"
    ]
}

Примечание. Вы можете ограничить эти разрешения определенными ресурсами, приведенный выше пример разрешает DeleteObject для всего в вашей учетной записи.

Если вы использовали мастер первого запуска на консоли CodeBuild для настройки проекта, у вас уже должны быть политики в роли службы для s3:GetObject и s3:GetObjectVersion. Имя роли службы при создании через консоль по умолчанию — «codebuild-[имя проекта]-service-role».

person Bri    schedule 09.12.2016
comment
Я думал, что сервисные роли влияют только на сервис, а не на контейнер сборки. Я попробую еще раз, добавив командную строку s3 в buildspec.yml. Возможно, мой клиент s3 не смог использовать поставщика удостоверений контейнера. - person Daniel Sperry; 09.12.2016
comment
Я не видел, чтобы роли работали, потому что библиотека maven, которую я использовал для доступа к s3, не работала с учетными данными контейнера. Теперь все хорошо. - person Daniel Sperry; 12.12.2016
comment
@DanielSperry не был уверен, каково ваше точное решение, но у меня могла быть похожая проблема, и я разместил обходное решение здесь stackoverflow.com/questions/42794486/ - person Neil; 15.03.2017
comment
@Neil Я использовал github.com/s3-wagon-private/s3-wagon -private и изменил роль CodeBuild, чтобы предоставить ей права на запись в корзину s3. - person Daniel Sperry; 16.03.2017