今天基本理清了CodeShip
和CodeDeploy
的用法。
CodeDeploy
部分
IAM
1.首先先创建一个用户来管理后续的操作
在IAM的用户中(USER
)创建一个用户,暂时我就把它命名为codeship
。该用户是给Codeship
做部署用的。
1 2 3
| codeship Access Key ID: AK**********ICQ Secret Access Key: Ze*******crCpZt
|
2.在写一点基本的策略分配权限
在IAM中创建三个策略(Proliies
)
EC2
- 创建策略
- 创建您自己的策略
- 修改 策略名称
ec2
- 修改 策略文档 表示 EC2可以查看和读取所有
S3
的权限
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
|
Codedeploy
- 创建策略
- 创建您自己的策略
- 修改 策略名称
codedeploy
- 修改 策略文档 表示 EC2有
autoscaling
的权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| { "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:PutLifecycleHook", "autoscaling:DeleteLifecycleHook", "autoscaling:RecordLifecycleActionHeartbeat", "autoscaling:CompleteLifecycleAction", "autoscaling:DescribeAutoscalingGroups", "autoscaling:PutInstanceInStandby", "autoscaling:PutInstanceInService", "ec2:Describe*" ], "Effect": "Allow", "Resource": "*" } ] }
|
S3
- 创建策略
- 创建您自己的策略
- 修改 策略名称
s3
- 修改 策略文档 表示 用户 可以上传文件到
YOUR_S3_BUCKET_NAME/*
的权限,bucketname/folder
自行替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3::: YOUR_S3_BUCKET_NAME/*" ] } ] }
|
deploy
- 创建策略
- 创建您自己的策略
- 修改 策略名称
deploy
- 修改 策略文档 表示 用户部署的权限
ec2
的权限, 自行替换YOUR_AWS_REGION
,YOUR_AWS_ACCOUNT_ID
,CODE_DEPLOY_APPLICATION_NAME
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:RegisterApplicationRevision", "codedeploy:GetApplicationRevision" ], "Resource": [ "arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:application:CODE_DEPLOY_APPLICATION_NAME" ] }, { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment" ], "Resource": [ "arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentgroup:CODE_DEPLOY_APPLICATION_NAME/*" ] }, { "Effect": "Allow", "Action": [ "codedeploy:GetDeploymentConfig" ], "Resource": [ "arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.OneAtATime", "arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.HalfAtATime", "arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.AllAtOnce" ] } ] }
|
3.新建角色
创建不同的角色(Role
)并,给他们分配不同的策略
ec2
- 新建角色
- 角色名称
ec2
- 选择角色类型
Amazon EC2
- 附加策略
ec2
codeploy
- 新建角色
- 角色名称
codeploy
- 选择角色类型
Amazon EC2
- 附加策略
codeploy
4.分配策略给用户
- 我们回到之前创建的用户
codeship
- 点击权限,附加次策略
- 勾选策略
s3
,deploy
表示赋予用户s3
和deploy
的权限
S3
我们需要新建一个(储存桶
)来暂时放置部署的代码
- 新建储存桶 YOUR_S3_BUCKET_NAME
- 可以在新建一个 文件夹来放置 代码
EC2
接下来我们创建一个实例
- 创建实例
- 选择操作系统 Amazon Linux AMI
- 选择一个实例类型 通用型
- 配置实例详细信息
- IAM角色选择
ec2
- 标签
- 启动
Codedeploy
我们还需要在创建一个(codedeploy
)
- 创建新的应用程序
- 应用程序名称 和 部署组名称
- 选择之前创建的
EC2
- 服务角色 ARN 选择之前创建的
codeploy
现在 AWS
上的配置基本完成,后面还需要继续配置服务器。
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2016/05/codeship-automatic-deployment-aws-configuration/