AWS CodePipeline - Недостаточно прав доступа. Невозможно получить доступ к ошибке артефакта. - PullRequest
0 голосов
/ 10 января 2019

Попытка создать и запустить AWS CodePipeline, которая извлекается из Github, собирается и развертывается в экземпляре EC2. Трубопровод выглядит следующим образом:

Источник (Github) -> Сборка (AWS CodeBuild) -> Развертывание (AWS CodeDeploy)

Исходные шаги и шаги сборки успешны. Тем не менее, развертывание не удается последовательно выдавая следующую ошибку:


Недостаточно прав Невозможно получить доступ к артефакту с помощью ключа объекта Amazon S3 '[redacted] -2nd-test-pip / BuildArtif / IbiHzen', расположенного в корзине артефактов Amazon S3 'codepipeline-us-east-1- [redacted]'. Предоставленная роль не имеет достаточных разрешений.


Ниже приведена политика IAM для политики роли службы CodeBuild:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:logs:us-east-1:362490217134:log-group:/aws/codebuild/[Redacted]-Build-Project",
                "arn:aws:logs:us-east-1:362490217134:log-group:/aws/codebuild/[Redacted]-Build-Project:*"
            ],
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::codepipeline-us-east-1-*"
            ],
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::codepipeline-us-east-1-[Redacted]/*"
            ],
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ]
        }
    ]
}

Роль службы CodePipeline, созданная мастером конвейера, назначила полный доступ S3:

            "Action": [
                "elasticbeanstalk:*",
                "ec2:*",
                "elasticloadbalancing:*",
                "autoscaling:*",
                "cloudwatch:*",
                "s3:*",
                "sns:*",
                "cloudformation:*",
                "rds:*",
                "sqs:*",
                "ecs:*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },

Я неоднократно подтверждал, что артефакт, на который ссылается шаг развертывания конвейера, соответствует артефакту, созданному на этапе сборки.

Если я пойду и посмотрю на указанный путь, там нет каталога или zip-файла (не уверен, какой ДОЛЖЕН быть, но нет) с этим именем. Кроме того, во время сборки создается zip-файл, но он никогда не называется так, как ожидает этап развертывания.

Я также вошел в проект сборки и попытался выполнить сборку, используя другие конфигурации артефактов, но, похоже, они игнорируются при запуске сборки через CodePipeline.

Отказ от ответственности: я видел похожие вопросы, размещенные здесь и в других местах на веб-сайтах, но каждый из них касается ECS или другой ситуации, которая отличается от моей. Спасибо за вашу помощь

1 Ответ

0 голосов
/ 10 января 2019

Проблема не связана с ролями / политиками. Как уже упоминалось, ожидаемый zip-файл не существует в корзине S3. Это произошло из-за неверного пути к файлам артефактов, указанного в спецификации сборки. После исправления создается zip-файл, и развертывание больше не приводит к ошибке при этой ошибке. Мне кажется странным, что CodePipeline позволит сборке сообщать о том, что она успешно завершена, без проверки того, что файлы, созданные как артефакт и переданные на шаг развертывания, фактически были созданы.

...