制作 AWS CodeBuild 工件 public

Make AWS CodeBuild artifacts public

我有一个问题,每次我想使用 AWS CodeDeploy 时,我都必须转到 S3 并手动制作修订文件 public,因为 CodeBuild 创建的工件不是 public .

有没有办法让 CodeBuild 在 S3 中创建一个 public 工件?或者有没有办法使用 CodeDeploy 部署非 public 工件?

我在 post_build 阶段尝试 运行 一些 aws s3api 命令,但它们似乎失败了,退出代码为 255。

您需要更新 S3 存储桶的存储桶策略。

{
    "Version": "2012-10-17",
    "Id": "Policy1sdhgshjg",
    "Statement": [
        {
            "Sid": "Stmt1asdasdadasd",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket_name/*"
        }
    ]
}

这将使您的存储桶中的所有对象 public.

有关详细信息,您可以阅读 bucket policies 的其他示例。

注意:我假设您在存储桶中关闭了块 public 访问权限

每个代码部署应用程序将多一个部署组。可以为每个部署组分配作为服务的 IAM 角色。

对于这个服务角色,我们可以授予读取 S3 存储桶的权限,这样我们就不必在每次构建时都制作工件。

示例读取权限如下所示。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject*",
                "s3:GetBucket*"
            ],
            "Resource": [
                "arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-be/BuildArtif/*",
                "arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-ui/BuildArtif/*"
            ],
            "Effect": "Allow"
        }
    ]
}