【问题标题】:AWS Error: "Access Denied" in CodeDeploy after Jenkins buildAWS 错误:Jenkins 构建后 CodeDeploy 中的“访问被拒绝”
【发布时间】:2017-04-21 10:18:26
【问题描述】:

我在一个 EC2 实例上设置了 Jenkins,该实例在将更改推送到 github 中的主分支时运行构建。一旦在 jenkins 上构建通过,它就会触发一个过程来压缩源代码并将其放入特定的 S3 存储桶中。然后 Jenkins 在配置中知道的 CodeDeploy 应用程序并触发部署以尝试从 S3 获取源代码 ZIP,但它会引发错误 Access Denied。似乎 IAM 角色没有从 S3 下载 ZIP 的正确访问权限和权限。

我的问题是试图了解 IAM 角色、它与 Jenkins 用户和 IAM 服务角色的关系?如何设置权限以及谁应该获得这些权限?请建议并帮助我理解这一点。

【问题讨论】:

    标签: jenkins amazon-s3 aws-code-deploy


    【解决方案1】:

    CodeDeploy 设置中通常有两种情况...“创建”部署的部分(通常是您的 CI 服务器/构建代理)和在目标实例上运行并执行实际部署的 CodeDeploy 代理.前半部分基本上是到 CodeDeployment 中,后半部分是 ...这就是我喜欢的可视化方式。

    对于 CI 服务器/构建代理,它们应该具有具有如下权限的 IAM 角色... 这允许构建代理 (1) 访问您指定用于部署的 S3 存储桶和 (2) 访问 CodeDeploy创建修订等的服务。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListAllMyBuckets"
                ],
                "Resource": "arn:aws:s3:::*"
            },        {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": "arn:aws:s3:::YourDeploymentBucket"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "codedeploy:*"
                ],
                "Resource": "*"
            }
        ]
    }
    

    在目标 EC2 实例上,它们需要有这样的东西... 这使 CodeDeploy 代理服务 (1) 可以访问 S3 存储桶以提取修订版,以及 (2) 访问所有通用代码部署存储桶因此代理可以自行更新。当然,这些实例需要满足所有其他条件……通常,它们需要 IAM 角色并且需要安装代码部署代理。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Resource": [
                    "arn:aws:s3:::YourDeploymentBucket/*",
                    "arn:aws:s3:::aws-codedeploy-us-east-1/*",
                    "arn:aws:s3:::aws-codedeploy-us-west-1/*",
                    "arn:aws:s3:::aws-codedeploy-us-west-2/*",
                    "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
                    "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
                    "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
                    "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",
                    "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
                    "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
                    "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
                    "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
                ]
            }
        ]
    }
    

    如何分配这些权限取决于您...如果您的构建代理是 EC2 实例,最好将这些作为附加到与实例关联的 IAM 角色的策略进行分配。对于目标部署机器,您可以执行相同操作...创建一个策略并将其分配给与您要定位的实例关联的 IAM 角色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2021-10-07
      • 2020-01-02
      • 2014-02-02
      相关资源
      最近更新 更多