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服务角色?如何设置权限以及谁应该获得这些权限?请指教并帮助我理解这一点.
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角色.
| 归档时间: |
|
| 查看次数: |
4405 次 |
| 最近记录: |