AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

步骤 1:创建和配置 Auto Scaling 组

在此步骤中,您将创建一个包含单个 Amazon Linux、RHEL 或 Windows Server Amazon EC2 实例的 Auto Scaling 组。在后面的步骤中,您将指示 Auto Scaling 再添加一个 Amazon EC2 实例,并且 AWS CodeDeploy 将向其中部署您的修订。

创建和配置 Auto Scaling 组 (CLI)

  1. 调用 create-launch-configuration 命令以创建 Auto Scaling 启动配置。

    在调用此命令之前,您需要适用于本教程的 AMI 的 ID (由占位符 image-id 表示)。您还需要 Amazon EC2 实例密钥对的名称 (由占位符 key-name 表示) 才能访问 Amazon EC2 实例。最后,您需要关于安装最新版本的 AWS CodeDeploy 代理的说明。

    要获取适用于本教程的 AMI 的 ID,请执行以下操作:

    1. https://console.www.amazonaws.cn/ec2/ 中打开 Amazon EC2 控制台。

    2. 在导航窗格中的 Instances 下,选择 Instances,然后选择 Launch Instance

    3. Choose an Amazon Machine Image 页的 Quick Start 选项卡上,记下 Amazon Linux AMIRed Hat Enterprise Linux 7.1Ubuntu Server 14.04 LTSMicrosoft Windows Server 2012 R2 旁的 AMI 的 ID。

      注意

      如果您拥有与 AWS CodeDeploy 兼容的 AMI 自定义版本,则在此选择它,而不用浏览 Quick Start 选项卡。有关将自定义 AMI 用于 AWS CodeDeploy 和 Auto Scaling 的信息,请参阅将自定义 AMI 用于 AWS CodeDeploy 和 Auto Scaling

    对于 Amazon EC2 实例密钥对,使用 Amazon EC2 实例密钥对的名称。

    要在您的开发计算机上安装最新版本的 AWS CodeDeploy 代理,请创建一个包含以下内容的名为 instance-setup.sh(适用于 Amazon Linux、Ubuntu Server 或 RHEL Amazon EC2 实例)或 instance-setup.txt(适用于 Windows Server Amazon EC2 实例)的文件。

    注意

    如果您拥有与 AWS CodeDeploy 兼容的 AMI 自定义版本,则无需创建 instance-setup.shinstance-setup.txt 文件。

    对于 Amazon Linux 和 RHEL Amazon EC2 实例:

    Copy
    #!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://aws-codedeploy-cn-north-1.s3.cn-north-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 Ubuntu Server Amazon EC2 实例:

    Copy
    #!/bin/bash apt-get -y update apt-get -y install awscli apt-get -y install ruby cd /home/ubuntu aws s3 cp s3://bucket-name/latest/install . --region region-name chmod +x ./install ./install auto

    bucket-name 表示下列项目之一:

    • aws-codedeploy-us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • aws-codedeploy-us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • aws-codedeploy-us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • aws-codedeploy-us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • aws-codedeploy-ca-central-1 (对于加拿大 (中部)区域中的实例)

    • aws-codedeploy-eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • aws-codedeploy-eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • aws-codedeploy-eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • aws-codedeploy-ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • aws-codedeploy-ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • aws-codedeploy-ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • aws-codedeploy-ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • aws-codedeploy-ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • aws-codedeploy-sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • aws-codedeploy-cn-north-1 (对于中国(北京)区域中的实例)

    region-name 表示下列项目之一:

    • us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • ca-central-1 (对于加拿大 (中部)区域中的实例)

    • eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • cn-north-1 (对于中国(北京)区域中的实例)

    对于 Windows Server Amazon EC2 实例:

    Copy
    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

    bucket-name 表示下列项目之一:

    • aws-codedeploy-us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • aws-codedeploy-us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • aws-codedeploy-us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • aws-codedeploy-us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • aws-codedeploy-ca-central-1 (对于加拿大 (中部)区域中的实例)

    • aws-codedeploy-eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • aws-codedeploy-eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • aws-codedeploy-eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • aws-codedeploy-ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • aws-codedeploy-ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • aws-codedeploy-ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • aws-codedeploy-ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • aws-codedeploy-ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • aws-codedeploy-sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • aws-codedeploy-cn-north-1 (对于中国(北京)区域中的实例)

    调用 create-launch-configuration 命令。

    对于 Linux, OS X, or Unix:

    重要

    务必在文件名前包含 file://。此命令中需要该项。

    Copy
    aws autoscaling create-launch-configuration \ --launch-configuration-name CodeDeployDemo-AS-Configuration \ --image-id image-id \ --key-name key-name \ --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile \ --instance-type t1.micro \ --user-data file://path/to/instance-setup.sh

    对于 Windows:

    重要

    务必在文件名前包含 file://。此命令中需要该项。

    Copy
    aws autoscaling create-launch-configuration --launch-configuration-name CodeDeployDemo-AS-Configuration --image-id image-id --key-name key-name --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile --instance-type t1.micro --user-data file://path/to/instance-setup.txt

    注意

    如果您拥有与 AWS CodeDeploy 兼容的 AMI 自定义版本,则在上述命令中省略 --user-data 选项。

    这些命令根据指定的映像 ID 创建名为 CodeDeployDemo-AS-Configuration 的 Auto Scaling 启动配置,同时应用指定的 IAM 实例配置文件和 Amazon EC2 实例密钥对,并运行命令以安装最新版本的 AWS CodeDeploy 代理。此启动配置基于 t1.micro Amazon EC2 实例类型。

  2. 调用 create-auto-scaling-group 命令以创建 Auto Scaling 组。您将需要 AWS General Reference的区域和终端节点所列区域之一中的某个可用区的名称 (由占位符 availability-zone 表示)。

    注意

    要查看区域中的可用区列表,请调用:

    Copy
    aws ec2 describe-availability-zones --region region-name

    例如,要查看美国西部(俄勒冈)区域中的可用区列表,请调用:

    Copy
    aws ec2 describe-availability-zones --region us-west-2

    对于 Linux, OS X, or Unix:

    Copy
    aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name CodeDeployDemo-AS-Group \ --launch-configuration-name CodeDeployDemo-AS-Configuration \ --min-size 1 \ --max-size 1 \ --desired-capacity 1 \ --availability-zones availability-zone

    对于 Windows:

    Copy
    aws autoscaling create-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --launch-configuration-name CodeDeployDemo-AS-Configuration --min-size 1 --max-size 1 --desired-capacity 1 --availability-zones availability-zone

    这些命令基于名为 CodeDeployDemo-AS-Configuration 的 Auto Scaling 启动配置创建一个名为 CodeDeployDemo-AS-Group 的 Auto Scaling 组。此 Auto Scaling 组只有一个在指定可用区中创建的 Amazon EC2 实例。

  3. CodeDeployDemo-AS-Group 调用 describe-auto-scaling-groups 命令:

    Copy
    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text

    请在返回的值显示 HealthyInService 之后继续。

创建和配置 Auto Scaling 组(控制台)

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在全局导航栏中,确保选中 AWS General Reference的区域和终端节点中列出的某个区域。Auto Scaling 资源与您所指定的区域相关联,并且 AWS CodeDeploy 仅在特定区域中受支持。

  3. 在导航栏中的 Auto Scaling 下,选择 Launch Configurations

  4. 选择 Create launch configuration

  5. Choose AMI 页的 Quick Start 选项卡上,在 Amazon Linux AMIRed Hat Enterprise Linux 7.2Ubuntu Server 14.04 LTSMicrosoft Windows Server 2012 R2 Base 旁选择 Select

    注意

    如果您拥有已安装 AWS CodeDeploy 代理的 AMI 自定义版本,则改为在此选择该版本。有关将自定义 AMI 用于 AWS CodeDeploy 和 Auto Scaling 的信息,请参阅将自定义 AMI 用于 AWS CodeDeploy 和 Auto Scaling

  6. Choose Instance Type 页上保留默认值,然后选择 Next: Configure details

  7. Configure details 页上的 Name 框中,键入 CodeDeployDemo-AS-Configuration。在 IAM role 框中,选择您之前创建的 IAM 实例配置文件 (CodeDeployDemo-EC2-Instance-Profile)。

    展开 Advanced Details,然后在 User data 框中键入以下内容。

    注意

    如果您使用的是已安装 AWS CodeDeploy 代理的 AMI 自定义版本,请跳过此步骤。

    对于中国(北京)区域中的 Amazon Linux 和 RHEL Amazon EC2 实例:

    Copy
    #!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://aws-codedeploy-cn-north-1.s3.cn-north-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 Ubuntu Server Amazon EC2 实例:

    Copy
    #!/bin/bash apt-get -y update apt-get -y install awscli apt-get -y install ruby cd /home/ubuntu aws s3 cp s3://bucket-name/latest/install . --region region-name chmod +x ./install ./install auto

    bucket-name 表示下列项目之一:

    • aws-codedeploy-us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • aws-codedeploy-us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • aws-codedeploy-us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • aws-codedeploy-us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • aws-codedeploy-ca-central-1 (对于加拿大 (中部)区域中的实例)

    • aws-codedeploy-eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • aws-codedeploy-eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • aws-codedeploy-eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • aws-codedeploy-ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • aws-codedeploy-ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • aws-codedeploy-ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • aws-codedeploy-ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • aws-codedeploy-ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • aws-codedeploy-sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • aws-codedeploy-cn-north-1 (对于中国(北京)区域中的实例)

    region-name 表示下列项目之一:

    • us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • ca-central-1 (对于加拿大 (中部)区域中的实例)

    • eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • cn-north-1 (对于中国(北京)区域中的实例)

    对于 Windows Server Amazon EC2 实例:

    Copy
    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

    bucket-name 表示下列项目之一:

    • aws-codedeploy-us-east-1 (对于美国东部(弗吉尼亚北部)区域中的实例)

    • aws-codedeploy-us-east-2 (对于美国东部(俄亥俄州)区域中的实例)

    • aws-codedeploy-us-west-1 (对于美国西部(加利福尼亚北部)区域中的实例)

    • aws-codedeploy-us-west-2 (对于美国西部(俄勒冈)区域中的实例)

    • aws-codedeploy-ca-central-1 (对于加拿大 (中部)区域中的实例)

    • aws-codedeploy-eu-west-1 (对于欧洲(爱尔兰)区域中的实例)

    • aws-codedeploy-eu-west-2 (对于欧洲 (伦敦)区域中的实例)

    • aws-codedeploy-eu-central-1 (对于欧洲(法兰克福)区域中的实例)

    • aws-codedeploy-ap-northeast-1 (对于亚太区域(东京)区域中的实例)

    • aws-codedeploy-ap-northeast-2 (对于亚太区域(首尔)区域中的实例)

    • aws-codedeploy-ap-southeast-1 (对于亚太区域(新加坡)区域中的实例)

    • aws-codedeploy-ap-southeast-2 (对于亚太区域(悉尼)区域中的实例)

    • aws-codedeploy-ap-south-1 (对于亚太地区(孟买)区域中的实例)

    • aws-codedeploy-sa-east-1 (对于南美洲(圣保罗)区域中的实例)

    • aws-codedeploy-cn-north-1 (对于中国(北京)区域中的实例)

    保留其余默认值,然后选择 Skip to review

  8. Review 页上选择 Create launch configuration

    注意

    在生产环境中,建议您限制对 Amazon EC2 实例的访问。有关更多信息,请参阅有关保护您的 EC2 实例的提示

  9. Select an existing key pair or create a new key pair 对话框中,选择 Choose an existing key pair。在 Select a key pair 下拉列表中,选择您在前面步骤中创建或使用的 Amazon EC2 实例密钥对。选择 I acknowledge that I have access to the selected private key file (key-file-name.pem), and that without this file, I won't be able to log into my instance,然后选择 Create launch configuration

  10. 选择 Create an Auto Scaling group using this launch configuration

  11. Configure Auto Scaling group details 页上的 Group name 框中,键入 CodeDeployDemo-AS-Group。在 Group size 框中,保留默认值。在 Availability Zone(s) 框中,选择 AWS General Reference的区域和终端节点所列区域之一中的一个可用区。保留其余默认值,然后选择 Next: Configure scaling policies

    注意

    如果 Launch into EC2-Classic 不显示在 Network 列表中,而且您不能选择默认的 Virtual Private Cloud (VPC),则请选择或创建 VPC 和子网。有关更多信息,请参阅您的 VPC 和子网

  12. 2. Configure scaling policies 页上,保留 Keep this group at its initial size 为选中状态,然后选择 Next: Configure Notifications

  13. 跳过配置通知的步骤,然后选择 Review

  14. 选择 Create Auto Scaling group,然后选择 Close

  15. 在导航栏中,在 Auto Scaling Groups 处于选中状态的情况下,选择 CodeDeployDemo-AS-Group,然后选择 Instances 选项卡。请在 InService 的值出现在 Lifecycle 列中并且 Healthy 的值出现在 Health Status 列中之后继续。