本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 CodeDeploy (CloudFormation 模板)创建一个 Amazon EC2 实例
您可以使用我们的 CloudFormation 模板快速启动运行亚马逊 Linux 或 Windows 服务器的亚马逊 EC2 实例。您可以使用 AWS CLI、 CodeDeploy 控制台或 AWS APIs 使用模板启动实例。除了启动实例之外,模板还可用于:
-
指示 CloudFormation 向实例授予参与 CodeDeploy部署的权限。
-
为实例添加标签,以便在部署期间 CodeDeploy 可以找到它。
-
在实例上安装并运行 CodeDeploy 代理。
您不必使用我们的 CloudFormation 来设置 Amazon EC2 实例。有关替代方法,请参阅使用以下实例 CodeDeploy。
我们不为运行 Ubuntu 服务器或红帽企业 Linux (RHEL) 的亚马逊 EC2 实例提供 CloudFormation 模板。
开始前的准备工作
在使用 CloudFormation 模板启动 Amazon EC2 实例之前,请务必完成以下步骤。
-
请确保您已创建管理员用户,如步骤 1:设置中所述。仔细检查用户是否具有以下最低权限,然后添加任何不存在的最低权限:
-
cloudformation:*
-
codedeploy:*
-
ec2:*
-
我是:AddRoleToInstanceProfile
-
我是:CreateInstanceProfile
-
我是:CreateRole
-
我是:DeleteInstanceProfile
-
我是:DeleteRole
-
我是:DeleteRolePolicy
-
我是:GetRole
-
我是:DeleteRolePolicy
-
我是:PutRolePolicy
-
我是:RemoveRoleFromInstanceProfile
-
-
确保您有实例密钥对,可以通过 SSH 访问运行 Amazon Linux 的亚马逊 EC2 实例,或者使用 RDP 访问运行 Windows Server 的实例。
要查找密钥对名称,请打开亚马逊 EC2 控制台,网址为 https://console.aws.amazon.com/ec2
。在导航窗格中,在 Network & Security(网络和安全)下,选择 Key Pairs(密钥对),然后记下列表中的密钥对名称。 要生成新的密钥对,请参阅使用 Amazon 创建密钥对 EC2。请确保密钥对是《AWS 一般参考》的区域和终端节点中列出的其中一个区域中创建的。否则,您无法将实例密钥对与 CodeDeploy 结合使用。
使用 CloudFormation 模板启动 Amazon EC2 实例(控制台)
登录 AWS Management Console 并在 https://console.aws.amazon.com/cloudformat
ion 上打开 CloudFormation 控制台。 重要
使用您使用的相同帐户登录入门 CodeDeploy。 AWS Management Console 在导航栏的区域选择器中,选择区域和终端节点中列出的其中一个区域AWS 一般参考。 CodeDeploy 仅支持这些区域。
-
选择创建堆栈。
-
在选择模板中,选择指定 Amazon S3 模板 URL。在框中,键入您所在地区的 CloudFormation 模板位置,然后选择 “下一步”。
区域 CloudFormation 模板的位置 美国东部(俄亥俄州)区域 http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json美国东部(弗吉尼亚州北部)区域 http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json美国西部(北加利福尼亚)区域 http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json美国西部(俄勒冈州)区域 http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json加拿大(中部)区域 http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(爱尔兰)区域 http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(伦敦)区域 http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(巴黎)区域 http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(法兰克福)区域 http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json以色列(特拉维夫)区域 http://s3-il-central-1.amazonaws.com/aws-codedeploy-il-central-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(香港)区域 http://s3-ap-east-1.amazonaws.com/aws-codedeploy-ap-east-1/templates/latest/CodeDeploy_SampleCF_Template.jsonAsia Pacific(Tokyo)Region http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(首尔)区域 http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(新加坡)区域 http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(悉尼)区域 http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(墨尔本)区域 https://aws-codedeploy-ap-southeast-4.s3.ap-southeast-4.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(孟买)区域 http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json南美洲(圣保罗)区域 aws-codedeploy-ap-northeast-1.s3.sa-east-1.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json -
在 Stack name(堆栈名称)框中,键入堆栈的名称(例如,
CodeDeployDemoStack)。 -
在 Parameters 中,键入以下内容,然后选择 Next。
-
对于 InstanceCount,键入要启动的实例数量。(建议您保留默认值 1。)
-
对于 InstanceType,键入要启动的实例类型(或保留默认值 t1.micro)。
-
对于 KeyPairName,键入实例 key pair 名称。仅键入密钥对名称而不是密钥对文件扩展名。
-
OperatingSystem在 box 中,键
Windows入启动运行 Windows 服务器的实例(或保留默认值 Linux)。 -
对于 SSHLocation,键入用于通过 SSH 或 RDP 连接到实例的 IP 地址范围(或保留默认值 0.0.0.0 /0)。
重要
提供的默认值
0.0.0.0/0仅用于演示目的。 CodeDeploy 不要求 Amazon EC2 实例可以不受限制地访问端口。作为最佳实践,建议您限制对 SSH(和 HTTP)端口的访问。有关更多信息,请参阅保护您的 Amazon EC2 实例的提示。 -
对于 TagKey,键入部署期间用于识别实例的实例标签密钥 CodeDeploy (或保留默认名称)。
-
对于 TagValue,键入部署期间用于识别实例的实例标签值 CodeDeploy (或保留默认值 CodeDeployDemo)。
-
-
在 Options 页上,将选项框留空,然后选择 Next。
重要
CloudFormation 标签与 CodeDeploy 标签不同。 CloudFormation 使用标签来简化基础架构的管理。 CodeDeploy 使用标签来识别 Amazon EC2 实例。您在 “指定参数” 页面上指定了 CodeDeploy标签。
-
在 “查看” 页面的 “能力” 中,选中 “我确认 CloudFormation 可能会创建 IAM 资源” 复选框,然后选择 “创建”。
创建堆栈并启动亚马逊 EC2 实例后 CloudFormation ,在 CloudFormation 控制台中,CREATE_COMPLET E 将显示在状态列中。此过程可能耗时数分钟。
要验证 CodeDeploy 代理是否在 Amazon EC2 实例上运行管理 CodeDeploy 代理操作,请参阅,然后继续使用创建应用程序 CodeDeploy。
使用 CloudFormation 模板启动 Amazon EC2 实例 (AWS CLI)
-
在调用create-stack命令时使用我们的 CloudFormation 模板。该堆栈将启动一个安装了 CodeDeploy 代理的新 Amazon EC2 实例。
要启动运行亚马逊 Linux 的亚马逊 EC2 实例,请执行以下操作:
aws cloudformation create-stack \ --stack-name CodeDeployDemoStack \ --template-urltemplateURL\ --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro \ ParameterKey=KeyPairName,ParameterValue=keyNameParameterKey=OperatingSystem,ParameterValue=Linux \ ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name \ ParameterKey=TagValue,ParameterValue=CodeDeployDemo \ --capabilities CAPABILITY_IAM要启动运行 Windows 服务器的亚马逊 EC2 实例,请执行以下操作:
aws cloudformation create-stack --stack-name CodeDeployDemoStack --template-urltemplate-url--parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro ParameterKey=KeyPairName,ParameterValue=keyNameParameterKey=OperatingSystem,ParameterValue=Windows ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name ParameterKey=TagValue,ParameterValue=CodeDeployDemo --capabilities CAPABILITY_IAMkeyName是实例 key pair 的名称。仅键入密钥对名称而不是密钥对文件扩展名。template-url是您所在地区的 CloudFormation 模板所在位置:区域 CloudFormation 模板的位置 美国东部(俄亥俄州)区域 http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json美国东部(弗吉尼亚州北部)区域 http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json美国西部(北加利福尼亚)区域 http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json美国西部(俄勒冈州)区域 http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json加拿大(中部)区域 http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(爱尔兰)区域 http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(伦敦)区域 http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(巴黎)区域 http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json欧洲地区(法兰克福)区域 http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json以色列(特拉维夫)区域 http://s3-il-central-1.amazonaws.com/aws-codedeploy-il-central-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(香港)区域 http://s3-ap-east-1.amazonaws.com/aws-codedeploy-ap-east-1/templates/latest/CodeDeploy_SampleCF_Template.jsonAsia Pacific(Tokyo)Region http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(首尔)区域 http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(新加坡)区域 http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(悉尼)区域 http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(墨尔本)区域 https://aws-codedeploy-ap-southeast-4.s3.ap-southeast-4.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json亚太地区(孟买)区域 http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json南美洲(圣保罗)区域 aws-codedeploy-ap-northeast-1.s3.sa-east-1.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json此命令使用指定 Amazon S3 存储桶中的 CloudFormation 模板创建一个名
CodeDeployDemoStack为的 CloudFormation 堆栈。Amazon EC2 实例基于 t1.micro 实例类型,但您可以使用任何类型。虽然它是使用值CodeDeployDemo标记的,但您可使用任何值标记它。它已应用指定的实例密钥对。 -
调用describe-stacks命令验证名为的 CloudFormation 堆栈
CodeDeployDemoStack已成功创建:aws cloudformation describe-stacks --stack-name CodeDeployDemoStack --query "Stacks[0].StackStatus" --output text在返回
CREATE_COMPLETE值之前,不要继续。
要验证 CodeDeploy 代理是否在 Amazon EC2 实例上运行管理 CodeDeploy 代理操作,请参阅,然后继续使用创建应用程序 CodeDeploy。