处理配置变更类型 (CTs) - AMS 高级应用程序开发者指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

处理配置变更类型 (CTs)

AMS 对您的托管基础设施负责,要进行更改,您必须提交包含正确的 CT 分类(类别、子类别、项目和操作)的 RFC。本节介绍如何查找 CTs、确定是否有任何符合您需求的 CT,以及如何申请新的 CT(如果没有 CT)。

查看现有的 CT 是否符合您的要求

确定要使用 AMS 部署的内容后,下一步就是研究现有解决方案 CTs 和 CloudFormation 模板,看看是否已经存在解决方案。

创建 RFC 时,必须指定 CT。您可以使用 AWS 管理控制台 或 AMS API/CLI。接下来将介绍使用两者的示例。

您可以使用控制台或 API/CLI 来查找更改类型 ID (CT) 或版本。有两种方法,要么是搜索,要么是选择分类。对于这两种选择类型,您可以通过选择 “最常用”、“最近使用” 或 “按字母顺序” 对搜索进行排序。

YouTube 视频如何使用 AWS Managed Services CLI 创建 RFC,在哪里可以找到 CT 架构

在 AMS 控制台中,在 RFCs-> 创建 RFC 页面上:

  • 选择 “按更改类型浏览”(默认)后,可以:

    • 使用 “快速创建” 区域从 AMS 最受欢迎的 AMS 中进行选择 CTs。点击标签,将打开 “运行 RFC” 页面,并自动为您填写 “主题” 选项。根据需要完成其余选项,然后单击 “运行” 提交 RFC。

    • 或者,向下滚动到 “所有变更类型” 区域并开始在选项框中键入 CT 名称,您不必输入确切或完整的更改类型名称。您还可以通过输入相关词语按更改类型 ID、分类或执行模式(自动或手动)搜索 CT。

      选择默认卡片视图后,匹配的 CT 卡片会在您键入时出现,选择一张卡片并单击 “创建 RFC”。选择表格视图后,选择相关的 CT,然后单击 “创建 RFC”。两种方法都会打开 “运行 RFC” 页面。

  • 或者,要浏览更改类型选择,请单击页面顶部的按类别选择以打开一系列下拉选项框。

  • 选择 “类别”、“子类别”、“物料” 和 “工序”。该更改类型的信息框显示在页面底部显示一个面板。

  • 准备就绪后,按 Enter,将显示匹配的更改类型列表。

  • 从列表中选择更改类型。该更改类型的信息框显示在页面底部。

  • 选择正确的更改类型后,选择 “创建 RFC”。

注意

必须安装 AMS CLI 才能使这些命令生效。要安装 AMS API 或 CLI,请前往 AMS 控制台开发者资源页面。有关 AMS CM API 或 AMS SKMS API 的参考资料,请参阅《用户指南》中的 “AMS 信息资源” 部分。您可能需要添加身份验证--profile选项;例如,aws amsskms ams-cli-command --profile SAML。您可能还需要添加该--region选项,因为所有 AMS 命令都将使用 us-east-1;例如。aws amscm ams-cli-command --region=us-east-1

注意

AMS API/CLI (amscm 和 amsskms)终端节点位于 AWS 弗吉尼亚北部区域。us-east-1根据您的身份验证设置方式以及您的账户和资源所在的 AWS 区域,您可能需要在发出命令--region us-east-1时进行添加。如果这是您的身份验证方法--profile saml,则可能还需要添加。

要使用 AMS CM API(参见 ListChangeTypeClassificationSummaries)或 CLI 搜索更改类型,请执行以下操作:

您可以使用筛选器或查询进行搜索。该 ListChangeTypeClassificationSummaries 操作具有CategorySubcategoryItem、和的 “筛选器” 选项Operation,但这些值必须与现有值完全匹配。要在使用 CLI 时获得更灵活的结果,可以使用--query选项。

使用 AMS CM API/CLI 更改类型筛选
属性 有效值 有效/默认条件 备注

ChangeTypeId

任何表示 a 的字符串 ChangeTypeId (例如:ct-abc123xyz7890)

Equals

有关更改类型 IDs,请参阅更改类型参考

有关变更类型 IDs,请参阅查找变更类型或 CSIO。

类别

任何自由格式的文本

包含

不支持每个字段中的正则表达式。不区分大小写的搜索

子类别

Item

操作

  1. 以下是一些商品变更类型分类的示例:

    以下命令列出了所有更改类型类别。

    aws amscm list-change-type-categories

    以下命令列出了属于指定类别的子类别。

    aws amscm list-change-type-subcategories --category CATEGORY

    以下命令列出了属于指定类别和子类别的项目。

    aws amscm list-change-type-items --category CATEGORY --subcategory SUBCATEGORY
  2. 以下是一些使用 CLI 查询搜索变更类型的示例:

    以下命令在 CT 分类摘要中搜索项目名称中包含 “S3” 的摘要,并以表格形式创建类别、子类别、项目、操作和更改类型 ID 的输出。

    aws amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries [?contains(Item, 'S3')].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table
    +---------------------------------------------------------------+ | ListChangeTypeClassificationSummaries | +----------+-------------------------+--+------+----------------+ |Deployment|Advanced Stack Components|S3|Create|ct-1a68ck03fn98r| +----------+-------------------------+--+------+----------------+
  3. 然后,您可以使用更改类型 ID 获取 CT 架构并检查参数。以下命令将架构输出到名为 creates3Params.schema.json 的 JSON 文件中。

    aws amscm get-change-type-version --change-type-id "ct-1a68ck03fn98r" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateS3Params.schema.json

    有关使用 CLI 查询的信息,请参阅如何使用--query 选项过滤输出和查询语言参考JMESPath 规范

  4. 获得变更类型 ID 后,我们建议您验证变更类型的版本,以确保它是最新版本。使用以下命令查找指定更改类型的版本:

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CHANGE_TYPE_ID

    要查找AutomationStatus特定更改类型的,请运行以下命令:

    aws amscm --profile saml get-change-type-version --change-type-id CHANGE_TYPE_ID --query "ChangeTypeVersion.{AutomationStatus:AutomationStatus.Name}"

    要查找ExpectedExecutionDurationInMinutes特定更改类型的,请运行以下命令:

    aws amscm --profile saml get-change-type-version --change-type-id ct-14027q0sjyt1h --query "ChangeTypeVersion.{ExpectedDuration:ExpectedExecutionDurationInMinutes}"

找到您认为合适的 CT 后,请查看与其关联的执行参数 JSON 架构,以了解它是否可以解决您的用例。

使用此命令将 CT 架构输出到以 CT 命名的 JSON 文件中;此示例输出创建 S3 存储架构:

aws amscm get-change-type-version --change-type-id "ct-1a68ck03fn98r" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateBucketParams.json

让我们仔细看看这个架构提供了什么。

S3 存储桶创建架构
{ "$schema": "http://json-schema.org/draft-04/schema#", "name": "Create S3 Storage "description": "Use to create an Amazon Simple Storage Service stack.", "type": "object", "properties": { "Description": { "description": "The description of the stack.", "type": "string", "minLength": 1, "maxLength": 500 }, "VpcId": { "description": "ID of the VPC to create the S3 Bucket in, in the form vpc-a1b2c3d4e5f67890e.", "type": "string", "pattern": "^vpc-[a-z0-9]{17}$" }, "StackTemplateId": { "description": "Required value: stm-s2b72beb000000000.", "type": "string", "enum": ["stm-s2b72beb000000000"] }, "Name":{ "description": "The name of the stack to create.", "type": "string", "minLength": 1, "maxLength": 255 }, "Tags": { "description": "Up to seven tags (key/value pairs) for the stack.", "type": "array", "items": { "type": "object", "properties": { "Key": { "type": "string", "minLength": 1, "maxLength": 127 }, "Value": { "type": "string", "minLength": 1, "maxLength": 255 } }, "additionalProperties": false, "required": [ "Key", "Value" ] }, "minItems": 1, "maxItems": 7 }, "TimeoutInMinutes": { "description": "The amount of time, in minutes, to allow for creation of the stack.", "type": "number", "minimum": 0, "maximum": 60 }, "Parameters": { "description": "Specifications for the stack.", "type": "object", "properties": { "AccessControl": { "description": "The canned (predefined) access control list (ACL) to assign to the bucket.", "type": "string", "enum": [ "Private", "PublicRead", "AuthenticatedRead", "BucketOwnerRead" ] }, "BucketName": { "description": "A name for the bucket. The bucket name must contain only lowercase letters, numbers, periods (.), and hyphens (-).", "type": "string", "pattern": "^[a-z0-9]([-.a-z0-9]+)[a-z0-9]$", "minLength": 3, "maxLength": 63 } }, "additionalProperties": false, "required": [ "AccessControl", "BucketName" ] } }, "additionalProperties": false, "required": [ "Description", "VpcId", "StackTemplateId", "Name", "TimeoutInMinutes", "Parameters" ] }

架构以 CT(“描述”)开头,它告诉你架构的用途。在本例中,用于创建 S3 存储堆栈。

接下来,您可以指定必填属性和可选属性。给出了默认的属性值。所需的属性列在架构的末尾。

在该 StackTemplateId 区域中,您可以看到此 CT 和架构有一个特定的堆栈模板,其 ID 是必填的属性值。

该架构允许您标记正在创建的堆栈,以用于内部记账。此外,某些选项(例如备份)需要标记 key: Backup 和 value: True。如需深入了解,请阅读标记您的 Amazon EC2 资源

您可以在 CT JSON 架构的 “参数” 部分中提供执行参数。

对于此架构,只有 ACL 和 BucketName 是必需的执行参数。

申请新的 CT

检查架构后,您可能会认为它没有提供足够的参数来创建所需的部署。如果是这样的话,请检查现有的 CloudFormation 模板,找到一个更接近你想要的模板。知道需要哪些其他参数后,提交管理 | 其他 | 其他 | 创建 CT。

注意

All Other | Other Create and Update 会 CTs 收到 AMS 操作员的注意,他们将与您联系以讨论新的 CT。

要提交新 CT 申请,请通过常规访问AMS控制台,AWS 管理控制台然后按照以下步骤操作。

  1. 在左侧导航栏中,单击RFCs

    RFCs 仪表板页面打开。

  2. 单击创建

    将打开 “创建更改请求” 页面。

  3. 在 “类别” 下拉列表中选择 “管理”,在 “子类别项目” 中选择 “其他”。对于操作,选择创建。RFC 需要获得批准才能实施。

  4. 输入您为何需要 CT 的信息,例如:请求修改后的 Create S3 存储 CT,允许根据现有的 Create S3 存储 CT 进行自定义 ACLs。这应该会生成一个新的 CT:部署 | 高级堆栈组件 | S3 存储 | 创建 S3 自定义 ACL。这个新的 CT 可能会公开。

  5. 单击 Submit (提交)

    您的 RFC 会显示在 RFC 控制面板上。

测试新 CT

AWS Managed Services 创建了新的 CT 后,您可以通过提交 RFC 对其进行测试。如果您与 AMS 合作预先批准了新的 CT,那么您只需遵循标准的 RFC 提交并观察结果即可(有关提交的详细信息 RFCs,请参阅创建和提交 R FC)。如果新 CT 未获得预先批准(您要确保它永远不会在未经明确批准的情况下运行),那么每次要运行时,都需要与 AMS 讨论其实施情况。