AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

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

这些说明向您介绍如何启动配置为在 AWS CodeDeploy 部署中使用的新 Amazon EC2 实例。作为此过程的一部分,您将创建 IAM 实例配置文件。

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

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

启动 Amazon EC2 实例 (CLI)

按照入门中的说明进行操作来设置和配置 AWS CLI 并创建名为 CodeDeployDemo-EC2-Instance-Profile 的 IAM 实例配置文件。

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

    Copy
    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 代理,然后将它安装在实例上。

    以下是 instance-setup.sh 文件的内容 (Amazon Linux 和 RHEL):

    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

    以下是 instance-setup.sh 的内容 (Ubuntu Server):

    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 (对于中国(北京)区域中的实例)

    以下是 instance-setup.txt 的内容 (Windows Server):

    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 (对于中国(北京)区域中的实例)

  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 实例类型

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

      重要

      仅键入密钥对名称而不是密钥对文件扩展名。

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

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

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

    重要

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

    Copy
    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=CodeDeployDemo-EC2-Instance-Profile

    注意

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

    要调用 run-instances 命令以启动运行 Windows Server 的 Amazon EC2 实例并附加您在步骤 4:创建 IAM 实例配置文件中创建的 IAM 实例配置文件,请执行以下命令:

    重要

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

    Copy
    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=CodeDeployDemo-EC2-Instance-Profile --security-groups CodeDeployDemo-Windows-Security-Group

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

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

    Copy
    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 实例标签。

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

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

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

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

要验证 AWS CodeDeploy 代理是否正在实例上运行,请参阅管理 AWS CodeDeploy 代理操作,然后返回到此页。在执行此操作后,Amazon EC2 实例便能在 AWS CodeDeploy 部署中使用。下一步是继续创建应用程序

启动 Amazon EC2 实例(控制台)

假定您已按照入门中的说明进行操作,并且已创建一个名为 CodeDeployDemo-EC2-Instance-Profile 的 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 选项卡中,找到要使用的操作系统 amd versopm,然后选择 Select

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

  5. Step 3: Configure Instance Details 页上的 IAM role 列表中,选择您在步骤 4:创建 IAM 实例配置文件中创建的 IAM 实例配置文件。

    注意

    如果 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:

    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:

    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:

    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 (对于中国(北京)区域中的实例)

  8. 将此页上的其他项保持不变,然后选择 Next: Add Storage

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

  10. Step 5: Add Tags 页上,在 Name 显示在 Key 框中的情况下,在 Value 框中键入 CodeDeployDemo,然后选择 Next: Configure Security Group

    重要

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

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

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

  12. 如果您需要打开 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

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

  14. 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 并为密钥对指定一个名称,如 codedeploydemo。选择 Download Key Pair 以将 Amazon EC2 实例密钥对下载到您的计算机。

    重要

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

  15. 选择 Launch Instances

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

要验证 AWS CodeDeploy 代理是否正在实例上运行,请参阅管理 AWS CodeDeploy 代理操作,然后返回到此页。在执行此操作后,Amazon EC2 实例便能在 AWS CodeDeploy 部署中使用。下一步是继续创建应用程序