【问题标题】:Make AWS CodeBuild artifacts public公开 AWS CodeBuild 工件
【发布时间】:2020-10-10 10:39:41
【问题描述】:

我有一个问题,每次我想使用 AWS CodeDeploy 时,我都必须转到 S3 并手动将修订文件公开,因为 CodeBuild 创建了一个不公开的工件。

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

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

【问题讨论】:

    标签: amazon-s3 aws-code-deploy aws-codebuild artifacts


    【解决方案1】:

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

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

    这将使您的存储桶中的所有对象都公开。

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

    注意:我假设您已在存储桶中阻止公共访问

    【讨论】:

    • 必须同时添加:针对 iam 角色的策略和针对存储桶的策略
    【解决方案2】:

    每个 Code Deploy 应用程序将有一个更多的部署组。每个部署组都可以分配为服务 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"
            }
        ]
    }
    

    【讨论】:

    • 你是说 CodeDeploy 吗?
    • 是的.. 已编辑答案。
    • hmm 添加了一个内联策略来读取我存储桶中的所有文件,但它仍然没有部署新代码(与以前相同)。当我在 s3 上公开工件时,它会部署新代码。想知道除此政策之外是否还有其他需要启用的内容
    • 难道#wget不能用于私有工件?
    • 必须同时添加:针对 iam 角色的策略和针对存储桶的策略
    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 2019-06-25
    • 2020-11-24
    • 2018-07-18
    • 2017-05-28
    • 2019-09-17
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多