我已经在EC2实例上设置了jenkins,该实例在更改时运行时运行的构建被推到了Github的主分支。一旦詹金斯(Jenkins)的构建通过,它就会触发一个流程来拉链源代码并将其放在特定的S3存储桶中。然后,Jenkins在配置中意识到的编码EPLOY应用程序,并触发A部署以从S3获取源代码zip,但会引起错误访问拒绝。似乎IAM角色没有正确的访问权限和权限可以从S3下载ZIP。
我的问题是试图了解IAM角色,与Jenkins用户的关系和IAM服务角色?我如何设置权限以及谁应该获得这些权限?请建议并帮助我理解这一点。
通常在编码eploy设置中有两个方案...'创建'部署的部分(通常是您的CI Server/build Agent)和在目标实例上运行的codeDeploy代理(S)并进行实际部署。上半年本质上是将推入编码eployment,下半部分是从中拉出 ...这就是我喜欢可视化的方式。
对于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实例上,他们需要拥有类似的东西...这提供了编码EPLOY代理服务(1)访问S3存储桶以拉动修订版,以及(2)访问所有通用代码 - Deploy Buckets因此代理可以自行更新。当然,这些实例需要满足所有其他条件...通常,它们需要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角色。