AWS CodeDeploy II

本节将介绍CodeDeploy的实验,我们将正式创建CodeDeploy项目,并进行部署:

progress-diagram-codedeploy.png (699×429)

创建CodeDeploy Role

CodeDeploy在执行部署,需要role来控制权限,例如:访问EC2的tag来决定要部署到哪些机器上,所以要提前准备好role。

进入IAM Roles页面,点击Create role

image-20220310120600402

搜索并选择CodeDeploy类型的服务:

image-20220310120728515

添加一条Policy:AWSCodeDeployRole

image-20220310120748021

为Role命名为UnicornCodeDeployRole,点击创建Role:

image-20220310120825977

创建CodeDeploy应用

进入到CodeDeploy页面,点击Create application

image-20220310121044424

将应用命名为unicorn-web-deploy, 选择EC2/On-premises类型的计算平台(其他两个选项是Lambda和ECS)。点击创建应用

image-20220310121111637

创建Deployment group

上一节创建好了CodeDeploy应用,但是在部署前,我们先要创建一个部署组(deployment group)。

unicorn-web-deploy application下,点击Create deployment group

image-20220312103903212

配置以下属性:

  • Name = unicorn-web-deploy-group
  • Service role = arn:aws:iam::<aws-account-id>:role/UnicornCodeDeployRole
  • Deployment type = In-place

image-20220312104001414

  • Environment configuration = Amazon EC2 instances
  • Tag group 1 Key = role
  • Tag group 1 Value = webserver

在输入完成后,会发现自动匹配到1台EC2,这是因为我们上一节创建EC2时,为它指定了role => webserver的tag

image-20220312105140423

  • Install AWS CodeDeploy Agent = Now and schedule updates (14 days)

  • Deployment settings = CodeDeployDefault.AllAtOnce

    在上一节,我们为EC2绑定了SSM相关的Role,所以有权限在上面安装CodeDeploy agent

image-20220312105229053

Load balancer部分去掉打钩,因为我们只一台EC2,并没有创建ELB:

image-20220312105254687

点击创建deployment group。


创建Deployment

创建完成部署组之后,就可以进行部署了。点击Create deployment

image-20220312142800323

revision location 部分,使用之前的S3桶:

s3://<my-artifact-bucket-name>/unicorn-web-build.zip

image-20220312143021622

其他选项保持默认,点击 Create deployment

部署正式开始,观察部署状态至完成:

image-20220312143307858

现在我们就可在浏览器中访问web应用了。在上一节创建的EC2页面下找到它的公网IP:

image-20220312152549999

访问:

http://<publicipaddress>     # 注意要用http协议!chrome浏览器默认使用https协议,可能要把url手动修改成http

image-20220312144322382

现在我们手动构建和部署了web应用,并把流程走通。

后面我们使用CodePipeline将上面几节的流程进行编排并自动化,当提交代码后,自动触发流水线