AWS错误:在Jenkins构建之后,CodeDeploy中的"拒绝访问"

nae*_*ael 7 amazon-s3 jenkins aws-code-deploy

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

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

Bre*_*een 7

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": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在目标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/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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