终止支持通知:2027 年 6 月 30 日, AWS 将终止对 AMS Advanced 的支持。2027 年 6 月 30 日之后,您将无法再访问 AMS 高级控制台或 AMS 高级资源。有关更多信息,请参阅 AMS 高级终止支持。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EC2 堆栈 | 创建(使用更多卷)
创建具有最多五个额外卷的亚马逊弹性计算云 (EC2) 实例。
完整分类:部署 | 高级堆栈组件 | EC2 堆栈 | 创建(使用更多卷)
更改类型详情
更改类型 ID |
ct-1aqsjf86w6vxg |
当前版本 |
5.0 |
预期执行时长 |
360 分钟 |
AWS 批准 |
必填 |
客户批准 |
非必需 |
执行模式 |
自动 |
附加信息
创建堆栈(包含更多卷)
以下显示了 AMS 控制台中的这种更改类型。
工作原理:
导航到 “创建 RFC” 页面:在 AMS 控制台的左侧导航窗格中,单击 RFC 打开 RFC 列表页面,然后单击 “创建 RFC”。
在默认的 “浏览更改类型” 视图中选择常用更改类型 (CT),或在 “按类别选择” 视图中选择 CT。
按更改类型浏览:您可以在 “快速创建” 区域中单击常用的 CT,立即打开 “运行 RFC” 页面。请注意,您无法使用快速创建功能选择较早的 CT 版本。
要对 CT 进行排序,请使用 “卡片” 或 “表” 视图中的 “所有更改类型” 区域。在任一视图中,选择 CT,然后单击 “创建 RFC” 以打开 “运行 RFC” 页面。如果适用,“创建 RFC” 按钮旁边会显示 “使用旧版本创建” 选项。
按类别选择:选择类别、子类别、项目和操作,CT 详细信息框随即打开,并显示 “使用旧版本创建” 选项(如果适用)。单击 “创建 RFC” 打开 “运行 RFC” 页面。
在运行 RFC 页面上,打开 CT 名称区域以查看 CT 详细信息框。主题为必填项(如果您在 “浏览更改类型” 视图中选择 CT,则会为您填写主题)。打开 “其他配置” 区域以添加有关 RFC 的信息。
在执行配置区域中,使用可用的下拉列表或输入所需参数的值。要配置可选的执行参数,请打开附加配置区域。
完成后,单击 “运行” 。如果没有错误,则会显示成功创建 RFC 的页面,其中包含提交的 RFC 详细信息以及初始运行输出。
打开 “运行参数” 区域以查看您提交的配置。刷新页面以更新 RFC 的执行状态。或者,取消 RFC 或使用页面顶部的选项创建 RFC 副本。
工作原理:
使用内联创建(您发出包含所有 RFC 和执行参数的
create-rfc命令)或模板创建(创建两个 JSON 文件,一个用于 RFC 参数,一个用于 RFC 参数,一个用于执行参数),然后使用这两个文件作为输入发出create-rfc命令。此处描述了这两种方法。使用返回的 RFC ID 提交 RFC:
aws amscm submit-rfc --rfc-id命令。ID监视 RFC:
aws amscm get-rfc --rfc-id命令。ID
要检查更改类型版本,请使用以下命令:
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
注意
您可以将任何CreateRfc参数与任何 RFC 一起使用,无论它们是否属于变更类型的架构的一部分。例如,要在 RFC 状态发生变化时收到通知,请将此行添加到请求的 RFC 参数部分(而不是执行参数)中。--notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"有关所有 CreateRfc 参数的列表,请参阅 AMS 变更管理 API 参考。
内联创建:
使用内联提供的执行参数(内联提供执行参数时使用转义引号)发出 create RFC 命令,然后提交返回的 RFC ID(示例仅显示必需的参数)。例如,你可以用这样的东西替换内容:
aws amscm create-rfc --change-type-id "ct-1aqsjf86w6vxg" --change-type-version "4.0" --title "EC2-Create-A-V-QC" --execution-parameters "{\"Description\":\"My EC2 stack with addl vol\",\"VpcId\":\"VPC_ID\",\"Name\":\"My Stack\",\"StackTemplateId\":\"stm-nn8v8ffhcal611bmo\",\"TimeoutInMinutes\":60,\"Parameters\":{\"InstanceAmiId\":\"AMI_ID\",\"InstanceSubnetId\":\"SUBNET_ID\"}}
模板创建:
将此更改类型的执行参数输出到名为的 JSON 文件中 CreateEC2AVParams.json。
aws amscm get-change-type-version --change-type-id "ct-1aqsjf86w6vxg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateEC2AVParams.json修改并保存 createEC2AVParams 文件(示例显示了大多数参数)。例如,你可以用这样的东西替换内容:
{ "Description": "EC2-Create-1-Addl-Volumes", "VpcId": "VPC_ID", "StackTemplateId": "stm-nn8v8ffhcal611bmo", "Name": "My-EC2-1-Addl-Volume", "TimeoutInMinutes": 60, "Parameters": { "InstanceAmiId": "AMI_ID", "InstanceSecurityGroupIds": "SECURITY_GROUP_ID", "InstanceCoreCount":1, "InstanceThreadsPerCore":2, "InstanceDetailedMonitoring": "true", "InstanceEBSOptimized": "false", "InstanceProfile": "customer-mc-ec2-instance-profile", "InstanceRootVolumeIops":100, "InstanceRootVolumeName": "/dev/xvda", "InstanceRootVolumeSize":50, "InstanceRootVolumeType": "io1", "RootVolumeKmsKeyId": "default", "InstancePrivateStaticIp": "10.27.0.100", "InstanceSecondaryPrivateIpAddressCount":0, "InstanceTerminationProtection": "false", "InstanceType": "t3.large", "CreditSpecification": "unlimited", "InstanceUserData": "echo $", "Volume1Encrypted": "true", "Volume1Iops": "IOPS" "Volume1KmsKeyId": "KMS_MASTER_KEY_ID", "Volume1Name": "xvdh" "Volume1Size": "2 GiB", "Volume1Snapshot": "SNAPSHOT_ID", "Volume1Type": "iol", "InstanceSubnetId": "SUBNET_ID" } }将 RFC 模板输出到当前文件夹中的文件中;此示例将其 CreateEC2AVRfc.json命名为:
aws amscm create-rfc --generate-cli-skeleton > CreateEC2AVRfc.json修改并保存该 CreateEC2AVRfc.json 文件。例如,你可以用这样的东西替换内容:
{ "ChangeTypeVersion": "4.0", "ChangeTypeId": "ct-1aqsjf86w6vxg", "Title": "EC2-Create-1-Addl-Volume-RFC" }创建 RFC,指定 createEC2AVRFC 文件和 createEC2AVParams 文件:
aws amscm create-rfc --cli-input-json file://CreateEC2AVRfc.json --execution-parameters file://CreateEC2AVParams.json您在响应中收到新 RFC 的 ID,可以使用它来提交和监控 RFC。在您提交之前,RFC 将保持编辑状态且无法启动。
重要
这种变更类型有一个新版本,即 v 4.0,它使用了不同的版本 StackTemplateId (stm-nn8v8ffhcal611bmo)。如果您要在命令行中提交带有此更改类型的 RFC,这一点很重要。新版本引入了两个新参数(RootVolumeKmsKeyId和 CreditSpecification),并更改了一个现有参数的默认值(InstanceType)。
实例类型
-
如果您选择指定内核数或线程数,则必须为两者指定值。使用参数
InstanceCoreCount和InstanceThreadsPerCore。要查找的有效组合 cores/threads,请参阅每种实例类型的 CPU 内核和每 CPU 内核的线程数。 -
AMS 不推荐 t2。micro/t3.micro 或 t2。nano/t3.nano 实例类型。它们太小,除了业务工作负载外,还无法支持 EPS、SSM 和 Cloudwatch 等 AMS 工具。有关更多信息,请参阅为您的应用程序选择正确的 EC2 实例类型
。 -
在版本 4.0 中,默认类型从 t2.large 提高到 t3.large 。 默认情况下,T3 实例以 “无限积分” 启动。即使实例消耗了所有 CPU 积分,您也不会遭受 CPU 限制。您可以改为选择 T2 实例并使用 CreditSpecification 无限选项。
-
有关 Amazon EC2 的更多信息,包括大小建议,请参阅亚马逊弹性计算云文档
。
-
要在创建 EC2 堆栈后使用其他卷对其进行更新,请参阅 EC2 实例堆栈:更新(使用额外卷)。
-
在置备实例之前移除陈旧的计算机对象。如果您计划使用 Active Directory 中已存在的主机名配置新实例(Windows 或 Linux),例如,从 AMI 恢复或重复使用先前堆栈中的主机名时,必须先运行管理 | 目录服务 | 计算机对象 | 删除更改类型 (ct-3d0lrfb8eckuu) 以删除过时的计算机对象。如果 Active Directory 中已经存在具有相同主机名的计算机对象,AMS 不会预置实例。
如果您不删除过时的对象,则可能会遭受 RFC 拒绝、在错误的组织单位 (OU) 中重复计算机对象、域加入中断、DNS 记录冲突以及无法访问的实例(Windows 上的 RDP 失败,Linux 上的 Kerberos 身份验证和 SSH 失败)。当源 AMI 是在未事先准备的情况下从正在运行的加入域的实例中捕获时,这一点尤其重要。在 Windows 上,这意味着不运行
Invoke-AMSSysprep;在 Linux 上,这意味着不运行 AMS 准备脚本 (prepare_instance_for_ami_and_shutdown.sh)。在没有准备的情况下,AMI 会保留先前实例的计算机凭证(Windows 上的计算机帐户 SID 和密码,或者 Linux 上的 Kerberos 密钥表),这会导致信任关系失败和对象冲突,当新实例从该实例启动时,这会导致信任关系失败和对象冲突。有关实例准备的更多信息,请参阅部署 | 高级堆栈组件 | AMI | 创建 (ct-3rqqu43krekby) 的提示部分。
执行输入参数
有关执行输入参数的详细信息,请参阅变更架构类型 ct-1aqsjf86w6vxg。
示例:必需的参数
{ "Description" : "Test description", "VpcId" : "vpc-12345678901234567", "Name" : "TestStack", "StackTemplateId" : "stm-nn8v8ffhcal611bmp", "TimeoutInMinutes" : 60, "Parameters" : { "InstanceAmiId" : "ami-1234567890abcdef0", "InstanceSubnetId" : "subnet-1234567890abcdef0", "EnforceIMDSV2": "true" } }
示例:所有参数
{ "Description": "This is a test description", "VpcId": "vpc-12345678", "Name": "Test Stack", "Tags": [ { "Key": "key1", "Value": "value1" }, { "Key": "key2", "Value": "value2" } ], "Parameters": { "InstanceAmiId": "ami-12345678", "InstanceCoreCount": 0, "InstanceThreadsPerCore": 0, "InstanceRootVolumeName": "/dev/xvda", "InstanceRootVolumeSize": 100, "InstanceSubnetId": "subnet-12345678", "InstanceDetailedMonitoring": "false", "InstanceEBSOptimized": "false", "InstanceProfile": "customer-mc-ec2-instance-profile", "InstanceRootVolumeIops": 1000, "InstanceRootVolumeType": "io1", "InstancePrivateStaticIp": "172.16.0.10", "InstanceSecondaryPrivateIpAddressCount" : 1, "InstanceTerminationProtection" : "true", "InstanceType": "t2.small", "InstanceUserData": "#!/bin/bash\\npwd\\nls -ltrh\\necho \"Hello, World\"", "Volume1Iops": 100, "Volume1KmsKeyId": "12345678-1234-1234-1234-1234567890ab", "Volume1Name": "/dev/sdf", "Volume1Size": 100, "Volume1Type": "io1", "Volume2Iops": 100, "Volume2KmsKeyId": "12345678-1234-1234-1234-1234567890ab", "Volume2Name": "/dev/sdg", "Volume2Size": 100, "Volume2Type": "io1", "Volume3Iops": 100, "Volume3KmsKeyId": "12345678-1234-1234-1234-1234567890ab", "Volume3Name": "/dev/sdh", "Volume3Size": 100, "Volume3Type": "io1", "Volume4Iops": 100, "Volume4KmsKeyId": "12345678-1234-1234-1234-1234567890ab", "Volume4Name": "/dev/sdi", "Volume4Size": 100, "Volume4Type": "io1", "Volume5Iops": 100, "Volume5KmsKeyId": "12345678-1234-1234-1234-1234567890ab", "Volume5Name": "/dev/sdj", "Volume5Size": 100, "Volume5Type": "io1", "EnforceIMDSV2": "true" }, "TimeoutInMinutes": 60, "StackTemplateId": "stm-nn8v8ffhcal611bmp" }