AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 CodeDeploy 创建 Amazon EC2 实例(AWS CLI 或 Amazon EC2 控制台)

这些说明向您介绍如何启动配置为在 CodeDeploy 部署中使用的新 Amazon EC2 实例。

您可使用 AWS CloudFormation 模板启动已配置为在 CodeDeploy 部署中使用的运行 Amazon Linux 或 Windows Server 的 Amazon EC2 实例。我们未为运行 Ubuntu Server 或 Red Hat Enterprise Linux (RHEL) 的 Amazon EC2 实例提供 AWS CloudFormation 模板。有关模板使用的替代方法,请参阅使用适用于 CodeDeploy 的实例

您可使用 Amazon EC2 控制台、AWS CLI 或 Amazon EC2 API 启动 Amazon EC2 实例。

启动 Amazon EC2 实例(控制台)

如果您尚未这样做,请按照CodeDeploy 入门中的说明进行操作来设置和配置 AWS CLI 并创建 IAM 实例配置文件。

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Instances (实例),然后选择 Launch Instance (启动实例)

  3. Step 1: Choose an Amazon Machine Image (AMI) (步骤 1: 选择 Amazon 系统映像 (AMI)) 页上,从 Quick Start (快速启动) 选项卡中,找到要使用的操作系统和版本,然后选择 Select (选择)。您必须选择一个 CodeDeploy 支持的 Amazon EC2 AMI 操作系统。有关更多信息,请参阅CodeDeploy 代理支持的操作系统

  4. Step 2: Choose an Instance Type (步骤 2: 选择实例类型) 页上,选择任何可用的 Amazon EC2 实例类型,然后选择 Next: Configure Instance Details (下一步: 配置实例详细信息)

  5. Step 3: Configure Instance Details (步骤 3: 配置实例详细信息) 页上的 IAM role (IAM 角色) 列表中,选择您在步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件中创建的 IAM 实例角色。如果您使用建议的角色名称,则选择 CodeDeployDemo-EC2-Instance-Profile。如果您创建了自己的角色名称,请选择该名称。

    注意

    如果在 EC2-Classic 中启动或默认 Virtual Private Cloud (VPC) 均未显示在网络列表中,并且您无法选择支持启动到 EC2-Classic 的其他 Amazon EC2 实例类型,则必须选择或创建 Amazon VPC 和子网。选择新建 VPC 和/或新建子网。有关更多信息,请参阅您的 VPC 和子网

  6. 展开 Advanced Details (高级详细信息)

  7. User data (用户数据) 旁,在选中 As text (以文本形式) 选项的情况下,键入以下内容以在 Amazon EC2 实例启动后安装 CodeDeploy 代理。

    对于 Amazon Linux 和 RHEL

    对于 中国(北京)区域:

    #!/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

    对于 中国 (宁夏) 区域:

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

    对于 Ubuntu Server

    重要

    如果您正在 Ubuntu Server 14.04 上安装 CodeDeploy 代理,请将第三行更改为以下内容:

    apt-get -y install ruby2.0

    对于 中国(北京)区域:

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://aws-codedeploy-cn-north-1.s3.cn-north-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 中国 (宁夏) 区域:

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://aws-codedeploy-cn-northwest-1.s3.cn-northwest-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 Windows Server

    对于 中国(北京)区域:

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

    对于 中国 (宁夏) 区域:

    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName aws-codedeploy-cn-northwest-1 -Key latest/codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi -Region cn-northwest-1 Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>
  8. 将此页上的其他项保持不变,然后选择 Next: Add Storage (下一步: 添加存储)

  9. Step 4: Add Storage (步骤 4: 添加存储) 页保持不变,然后选择 Next: Add Tags (下一步: 添加标签)

  10. Step 5: Add Tags (步骤 5: 添加标记) 页面上,选择 Add Tag (添加标记)

  11. Key (键) 框中,键入 Name。在 Value (值) 框中,键入 CodeDeployDemo

    重要

    Key (键)Value (值) 框的内容是区分大小写的。

  12. 选择 Next: Configure Security Group

  13. Step 6: Configure Security Group (步骤 6: 配置安全组) 页上,将 Create a new security group (创建新安全组) 选项保持选中状态。

    将为运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例配置默认 SSH 角色。将为运行 Windows Server 的 Amazon EC2 实例配置默认 RDP 角色。

  14. 如果您要打开 HTTP 端口,请选择 Add Rule (添加规则) 按钮,然后从 Type (类型) 下拉列表中,选择 HTTP。接受 Source (源) 默认值 Custom 0.0.0.0/0 (自定义 0.0.0.0/0),然后选择 Review and Launch (审核和启动)

    注意

    在生产环境中,建议您将访问限制为 SSH、RDP 和 HTTP 端口,而不是指定 Anywhere 0.0.0.0/0 (任何位置 0.0.0.0/0)。CodeDeploy 不需要无限制的端口访问,也不需要 HTTP 访问。有关更多信息,请参阅有关保护您的 Amazon EC2 实例的提示

    如果 Boot from General Purpose (SSD) (由通用 (SSD) 启动) 对话框出现,请遵循说明,然后选择 Next (下一步)

  15. Step 7: Review Instance Launch (步骤 7: 查看实例启动) 页保持不变,然后选择 Launch (启动)

  16. Select an existing key pair or create a new key pair (选择现有密钥对或创建新密钥对) 对话框中,选择 Choose an existing key pair (选择现有密钥对)Create a new key pair (创建新密钥对)。如果您已配置 Amazon EC2 实例密钥对,则可在此处选择它。

    如果您尚位拥有 Amazon EC2 实例密钥对,请选择 Create a new key pair (创建新密钥对) 并为密钥对指定一个可识别的名称。选择 Download Key Pair (下载密钥对) 以将 Amazon EC2 实例密钥对下载到您的计算机。

    重要

    如果您需要使用 SSH 或 RDP 访问您的 Amazon EC2 实例,则必须具有密钥对。

  17. 选择 Launch Instances

  18. 选择 Amazon EC2 实例的 ID。在实例启动并通过所有检查之前,请不要继续。

要验证 CodeDeploy 代理是否正在实例上运行,请参阅验证 CodeDeploy 代理是否正在运行,然后返回到此页。在执行此操作后,Amazon EC2 实例便能在 CodeDeploy 部署中使用。

启动 Amazon EC2 实例 (CLI)

如果您尚未这样做,请按照CodeDeploy 入门中的说明进行操作来设置和配置 AWS CLI 并创建 IAM 实例配置文件。

  1. 仅针对 Windows Server 如果您要创建运行 Windows Server 的 Amazon EC2 实例,请调用 create-security-groupauthorize-security-group-ingress 命令来创建允许 RDP 访问(默认情况下不允许)或者 HTTP 访问的安全组。例如,要创建名为 CodeDeployDemo-Windows-Security-Group 的安全组,请逐条运行以下命令:

    aws ec2 create-security-group --group-name CodeDeployDemo-Windows-Security-Group --description "For launching Windows Server images for use with CodeDeploy"
    aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 3389 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 3389
    aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 80 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 80

    注意

    在演示中,这些命令将创建一个安全组来允许通过端口 3389 的 RDP 无限制访问或通过端口 80 的 HTTP 无限制访问。作为最佳实践,建议您将访问限制到 RDP 和 HTTP 端口。CodeDeploy 不需要无限制的端口访问,也不需要 HTTP 访问。有关更多信息,请参阅有关保护您的 Amazon EC2 实例的提示

  2. 在您的开发计算机上,创建一个包含以下内容的名为 instance-setup.sh(对于运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例)或 instance-setup.txt(对于运行 Windows Server 的 Amazon EC2 实例)的文件。

    当 Amazon EC2 实例启动时,此脚本将从指定的 Amazon S3 位置下载 CodeDeploy 代理,然后将它安装在实例上。

    对于 Amazon Linux 和 RHEL

    以下是 instance-setup.sh 的内容,适用于 Amazon Linux 和 RHEL:

    对于 中国(北京)区域:

    #!/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

    对于 中国 (宁夏) 区域:

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

    对于 Ubuntu Server

    以下是适用于 Ubuntu Server 的 instance-setup.sh 的内容:

    重要

    如果您正在 Ubuntu Server 14.04 上安装 CodeDeploy 代理,请将文件的第三行更改为以下内容:

    apt-get -y install ruby2.0

    对于 中国(北京)区域:

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://aws-codedeploy-cn-north-1.s3.cn-north-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 中国 (宁夏) 区域:

    #!/bin/bash apt-get -y update apt-get -y install ruby apt-get -y install wget cd /home/ubuntu wget https://aws-codedeploy-cn-northwest-1.s3.cn-northwest-1.amazonaws.com.cn/latest/install chmod +x ./install ./install auto

    对于 Windows Server

    以下是适用于 Windows Server 的 instance-setup.txt 的内容:

    对于 中国(北京)区域:

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

    对于 中国 (宁夏) 区域:

    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName aws-codedeploy-cn-northwest-1 -Key latest/codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi -Region cn-northwest-1 Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>
  3. 从您创建 instance-setup.shinstance-setup.txt 文件的同一目录中,调用 run-instances 命令来创建和启动 Amazon EC2 实例。

    在您调用此命令之前,您需要收集以下内容:

    • 将用于此实例的 Amazon 系统映像 (AMI) 的 ID (ami-id)。要获取此 ID,请参阅查找合适的 AMI

    • 您将创建的 Amazon EC2 实例的类型 (instance-type) 的名称,如 t1.micro。有关列表,请参阅 Amazon EC2 实例类型

    • IAM 实例配置文件的名称,该文件有权访问 Amazon S3 存储桶,其中存储着您的区域的 CodeDeploy 代理安装文件。

      有关创建 IAM 实例配置文件的信息,请参阅步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件

    • Amazon EC2 实例密钥对的名称 (key-name),此密钥对支持对运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例的 SSH 访问或对运行 Windows Server 的 Amazon EC2 实例的 RDP 访问。

      重要

      仅键入密钥对名称而不是密钥对文件扩展名。例如,my-keypair,而不是 my-keypair.pem

      要查找密钥对名称,请在 https://console.amazonaws.cn/ec2 上打开 Amazon EC2 控制台。在导航窗格中,在 Network & Security (网络和安全) 下,选择 Key Pairs (密钥对),然后记下列表中的密钥对名称。

      要生成密钥对,请参阅使用 Amazon EC2 创建您的密钥对。请确保在 AWS General Reference区域和终端节点中列出的某个区域中创建密钥对。否则,您无法将 Amazon EC2 实例密钥对与 CodeDeploy 结合使用。

    对于 Amazon Linux、RHEL 和 Ubuntu Server

    旨在调用 run-instances 命令以启动运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例并附加您在步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件中创建的 IAM 实例配置文件。例如:

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws ec2 run-instances \ --image-id ami-id \ --key-name key-name \ --user-data file://instance-setup.sh \ --count 1 \ --instance-type instance-type \ --iam-instance-profile Name=iam-instance-profile

    注意

    此命令将为 Amazon EC2 实例创建一个允许访问多个端口的默认安全组,包括通过端口 22 的 SSH 无限制访问或通过端口 80 的 HTTP 无限制访问。作为最佳实践,建议您将访问限制到仅 SSH 和 HTTP 端口。CodeDeploy 不需要无限制的端口访问,也不需要 HTTP 端口访问。有关更多信息,请参阅有关保护您的 Amazon EC2 实例的提示

    对于 Windows Server

    旨在调用 run-instances 命令以启动运行 Windows Server 的 Amazon EC2 实例、附加您在步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件中创建的 IAM 实例配置文件,并指定您在步骤 1 中创建的安全组的名称。例如:

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws ec2 run-instances --image-id ami-id --key-name key-name --user-data file://instance-setup.txt --count 1 --instance-type instance-type --iam-instance-profile Name=iam-instance-profile --security-groups CodeDeploy-Windows-Security-Group

    这些命令将使用指定的 IAM 实例配置文件启动一个具有指定的 AMI、密钥对和实例类型的 Amazon EC2 实例,并在启动过程中运行指定脚本。

  4. 记下输出中的 InstanceID 的值。如果您忘记此值,可稍后通过对 Amazon EC2 实例密钥对调用 describe-instances 命令来获取它。

    aws ec2 describe-instances --filters "Name=key-name,Values=keyName" --query "Reservations[*].Instances[*].[InstanceId]" --output text

    使用实例 ID 调用 create-tags 命令,这将标记 Amazon EC2 实例,以便 CodeDeploy 在部署过程中找到它。在以下示例中,标签名为 CodeDeployDemo,但您可指定所需的任何 Amazon EC2 实例标签。

    aws ec2 create-tags --resources instance-id --tags Key=Name,Value=CodeDeployDemo

    您可以为一个实例同时应用多个标签。例如:

    aws ec2 create-tags --resources instance-id --tags Key=Name,Value=testInstance Key=Region,Value=West Key=Environment,Value=Beta

    要验证 Amazon EC2 实例是否已启动并通过所有检查,请使用实例 ID 调用 describe-instance-status 命令。

    aws ec2 describe-instance-status --instance-ids instance-id --query "InstanceStatuses[*].InstanceStatus.[Status]" --output text

如果实例已启动并通过所有检查,输出中将显示 ok

要验证 CodeDeploy 代理是否正在实例上运行,请参阅验证 CodeDeploy 代理是否正在运行,然后返回到此页。在执行此操作后,Amazon EC2 实例便能在 CodeDeploy 部署中使用。