【问题标题】:AWS CodePipeline - Insufficient permissions Unable to access the artifact errorAWS CodePipeline - 权限不足无法访问工件错误
【发布时间】:2019-06-04 18:31:18
【问题描述】:

尝试创建和运行从 Github 提取、构建和部署到 EC2 实例的 AWS CodePipeline。流水线如下:

源 (Github) -> 构建 (AWS CodeBuild) -> 部署 (AWS CodeDeploy)

源代码和构建步骤都成功了。但是,部署失败始终给出以下错误:


权限不足 无法使用位于 Amazon S3 工件存储桶“codepipeline-us-east-1-[redacted]”中的 Amazon S3 对象键“[redacted]-2nd-test-pip/BuildArtif/IbiHzen”访问该工件。提供的角色没有足够的权限。


以下是 CodeBuild 服务角色策略的 IAM 策略:

{
    "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 或其他与我不同的情况。谢谢你的帮助

【问题讨论】:

标签: amazon-web-services aws-code-deploy aws-codepipeline


【解决方案1】:

该问题与角色/策略无关。如前所述,S3 存储桶中不存在预期的 zip 文件。这是由于构建规范中指定的工件文件路径无效。更正后,将创建 zip 文件,并且部署不再因此错误而失败。对我来说似乎很奇怪,CodePipeline 允许构建报告为已成功完成,而无需验证作为工件创建并传递给部署步骤的文件实际上是否已创建。

【讨论】:

    猜你喜欢
    • 2018-08-03
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2021-11-20
    相关资源
    最近更新 更多