Я пытаюсь настроить CodeBuild с источником CodeCommit, который находится в другой учетной записи AWS. Я считаю, что это можно сделать с помощью AssumeRole, но мне не повезло. Может ли кто-нибудь помочь привести пример того, как заставить CodeBuild взять на себя роль, указанную в другой учетной записи, для доступа к репо CodeCommit?
В настоящее время моя роль CodeBuild (в учетной записи 22222222) включает следующую политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::11111111:role/Read-CodeCommit"
}
]
}
В учетной записи 11111111 у меня роль Read-CodeCommit имеет следующую политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"codecommit:*"
],
"Resource": "arn:aws:codecommit:us-west-2:11111111:dashboard"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "codecommit:ListRepositories",
"Resource": "*"
}
]
}
Read-CodeCommit имеет следующую политику доверия:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::22222222:root",
"Service": "codebuild.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
Edit:
Публикация решения, которое я придумала для тех, кто может столкнуться с подобной проблемой.
Лучшее, что я мог сделать, это просто обойти проблему. Вместо того, чтобы устанавливать CodeCommit в качестве источника, я использую пользовательское изображение ECR, которое включает в себя учетные данные CodeCommit. Затем buildspec клонирует из репозитория.
Он не такой чистый, как мне нравится, но он выполняет свою работу.