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

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

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

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

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

启动 Amazon EC2 实例(控制台)

如果您尚未这样做,请按照AWS 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) 页上,从 Quick Start 选项卡中,找到要使用的操作系统和版本,然后选择 Select

  4. Step 2: Choose an Instance Type 页上,选择任何可用的 Amazon EC2 实例类型,然后选择 Next: Configure Instance Details

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

    注意

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

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

  7. User data 旁,在选中 As text 选项的情况下,键入以下内容以在 Amazon EC2 实例启动时安装 AWS 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 上安装 AWS 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/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi 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/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>
  8. 将此页上的其他项保持不变,然后选择 Next: Add Storage

  9. Step 4: Add Storage 页保持不变,然后选择 Next: Add Tags

  10. 步骤 5:添加标记页面上,选择添加标记

  11. Key 框中,键入 Name。在框中,键入 CodeDeployDemo

    重要

    KeyValue 框的内容是区分大小写的。

  12. 选择 Next: Configure Security Group

  13. Step 6: Configure Security Group 页上,将 Create a new security group 选项保持选中状态。

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

  14. 如果您需要打开 HTTP 端口,请选择 Add Rule 按钮,然后从 Type 下拉列表中,选择 HTTP。接受 Anywhere 0.0.0.0/0 的默认 Source 值,然后选择 Review and Launch

    注意

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

    如果 Boot from General Purpose (SSD) 对话框出现,请遵循说明,然后选择 Next

  15. Step 7: Review Instance Launch 页保持不变,然后选择 Launch

  16. Select an existing key pair or create a new key pair 对话框中,选择 Choose an existing key pairCreate 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。在实例启动并通过所有检查之前,请不要继续。

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

启动 Amazon EC2 实例 (CLI)

如果您尚未这样做,请按照AWS 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 AWS 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 端口的访问。AWS 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 位置下载 AWS 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 上安装 AWS 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/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi 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/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi 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 存储桶,其中存储着您的区域的 AWS 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

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

      要生成密钥对,请参阅使用 Amazon EC2 创建您的密钥对。请确保在 AWS General Reference区域和终端节点中列出的某个区域中创建密钥对。否则,您无法将 Amazon EC2 实例密钥对与 AWS 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 端口的访问。AWS 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 实例,以便 AWS 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

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