本节将介绍CodeDeploy的实验,我们将正式创建CodeDeploy项目,并进行部署:
CodeDeploy在执行部署,需要role来控制权限,例如:访问EC2的tag来决定要部署到哪些机器上,所以要提前准备好role。
进入IAM Roles页面,点击Create role
:
搜索并选择CodeDeploy
类型的服务:
添加一条Policy:AWSCodeDeployRole
为Role命名为UnicornCodeDeployRole
,点击创建Role:
进入到CodeDeploy页面,点击Create application
:
将应用命名为unicorn-web-deploy
, 选择EC2/On-premises
类型的计算平台(其他两个选项是Lambda和ECS)。点击创建应用
上一节创建好了CodeDeploy应用,但是在部署前,我们先要创建一个部署组(deployment group)。
在 unicorn-web-deploy application下,点击Create deployment group
:
配置以下属性:
arn:aws:iam::<aws-account-id>:role/UnicornCodeDeployRole
在输入完成后,会发现自动匹配到1台EC2,这是因为我们上一节创建EC2时,为它指定了role => webserver
的tag
Install AWS CodeDeploy Agent = Now and schedule updates (14 days)
Deployment settings = CodeDeployDefault.AllAtOnce
在上一节,我们为EC2绑定了SSM相关的Role,所以有权限在上面安装CodeDeploy agent
Load balancer部分去掉打钩,因为我们只一台EC2,并没有创建ELB:
点击创建deployment group。
创建完成部署组之后,就可以进行部署了。点击Create deployment
:
revision location 部分,使用之前的S3桶:
s3://<my-artifact-bucket-name>/unicorn-web-build.zip
其他选项保持默认,点击 Create deployment
部署正式开始,观察部署状态至完成:
现在我们就可在浏览器中访问web应用了。在上一节创建的EC2页面下找到它的公网IP:
访问:
http://<publicipaddress> # 注意要用http协议!chrome浏览器默认使用https协议,可能要把url手动修改成http
现在我们手动构建和部署了web应用,并把流程走通。
后面我们使用CodePipeline将上面几节的流程进行编排并自动化,当提交代码后,自动触发流水线