外部引擎用于 Amazon Service Catalog - Amazon Service Catalog
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

外部引擎用于 Amazon Service Catalog

在中 Amazon Service Catalog,外部引擎通过EXTERNAL产品类型表示。该EXTERNAL产品类型允许集成第三方配置引擎,例如 Terraform。您可以使用外部引擎将 Service Catalog 的功能扩展到原生 Amazon CloudFormation 模板之外,从而允许使用其他基础设施即代码 (IaC) 工具。

EXTERNAL产品类型允许您使用熟悉的 Service Catalog 界面管理和部署资源,同时利用所选 IaC 工具的特定功能和语法。

要在 Service Catalog 中启用EXTERNAL产品类型,您必须在账户中定义一组标准资源。这些资源被称为引。Service Catalog 在工件解析和置备操作的特定时刻将任务委派给引擎。

配置工件代表 Service Catalog 中产品的特定版本,允许您管理和部署一致的资源。

当您为EXTERNAL产品类型的配置对象调用 Amazon Service CatalogDescribeProvisioningArtifactDescribeProvisioningParameters操作时,Service Catalog 会调用引擎中的一个 Amazon Lambda 函数。这是从提供的置备工件中提取参数列表并将其返回到所必需的 Amazon Service Catalog。这些参数稍后将作为配置过程的一部分使用。

当您通过调用EXTERNAL配置对象时 ProvisionProduct,Service Catalog 首先在内部执行一些操作,然后向引擎中的 Amazon SQS 队列发送消息。接下来,引擎扮演提供的启动角色(您作为启动约束分配给产品的 IAM 角色),根据提供的配置项目配置资源,并调用 NotifyProvisionProductEngineWorkflowResultAPI 来报告成功或失败。

UpdateProvisionedProduct和的调TerminateProvisionedProduct用处理方式类似,每个调用都有不同的队列和通知 API:

注意事项

每个中心账户只能使用一个外部引擎

每个 Service Catalog 中心账户只能使用一个EXTERNAL配置引擎。Service Catalog hub-and-spoke模型允许中心账户创建基准产品并共享产品组合,而分支账户则可以导入产品组合并利用产品。

此限制是因为EXTERNAL只能路由到一个账户中的一个引擎。如果管理员想要拥有多个外部引擎,则管理员必须在不同的中心帐户中设置外部引擎(以及产品组合和产品)。

外部引擎仅支持有启动限制的启动角色

EXTERNAL配置对象仅支持使用启动限制指定的启动角色进行置备。启动约束指定 Service Catalog 在最终用户启动、更新或终止产品时扮演的 IAM 角色。有关启动限制的更多信息,请参阅Amazon Service Catalog 启动限制

参数解析

EXTERNAL配置对象可以是任何格式。这意味着,在创建EXTERNAL产品类型时,引擎需要从提供的置备工件中提取参数列表并将其返回到 Service Catalog。这是通过在您的账户中创建一个 Lambda 函数来完成的,该函数可以接受以下请求格式、处理配置项目并返回以下响应格式。

重要

必须为 Lambda 函数命名。ServiceCatalogExternalParameterParser

请求语法:

{ "artifact": { "path": "string", "type": "string" }, "launchRoleArn": "string" }
字段 类型 必填 描述
项目 对象 要解析的工件的详细信息。
工件/路径 字符串 解析器下载工件的位置。例如,对于AWS_S3,这是亚马逊 S3 的 URI。
工件/类型 字符串 神器类型。允许的值:AWS_S3
LaunchRole 字符串 下载项目时要扮演的启动角色的 Amazon 资源名称 (ARN)。如果未提供启动角色,则使用 Lambda 的执行角色。

响应语法:

{ "parameters": [ { "key": "string" "defaultValue": "string", "type": "string", "description": "string", "isNoEcho": boolean }, ] }
字段 类型 必填 描述
parameters list Service Catalog 要求最终用户在置备产品或更新预配置产品时提供的参数列表。如果在构件中未定义任何参数,则返回一个空列表。
key 字符串 参数键。
defaultValue 字符串 如果最终用户未提供值,则为参数的默认值。
type 字符串 引擎参数值的预期类型。例如,字符串、布尔值或映射。允许的值因每个引擎而异。Service Catalog 将每个参数值作为字符串传递给引擎。
description 字符串 参数的描述。建议将其设置为用户友好型。
isNoEcho 布尔值 确定参数值是否未在日志中回显。默认值为 false(参数值会被回显)。

预置

对于该ProvisionProduct操作,Service Catalog 将资源的实际配置委托给引擎。该引擎负责与您选择的 IaC 解决方案(例如 Terraform)接口,以配置工件中定义的资源。引擎还负责将结果通知 Service Catalog。

Service Catalog 会将所有配置请求发送到您的账户中名为的 Amazon SQS 队列。ServiceCatalogExternalProvisionOperationQueue

请求语法:

{ "token": "string", "operation": "string", "provisionedProductId": "string", "provisionedProductName": "string", "productId": "string", "provisioningArtifactId": "string", "recordId": "string", "launchRoleArn": "string", "artifact": { "path": "string", "type": "string" }, "identity": { "principal": "string", "awsAccountId": "string", "organizationId": "string" }, "parameters": [ { "key": "string", "value": "string" } ], "tags": [ { "key": "string", "value": "string" } ] }
字段 类型 必填 描述
令牌 字符串 标识此操作的标记。必须将令牌返回到 Service Catalog 才能通知执行结果。
operation 字符串 此字段必须PROVISION_PRODUCT用于此操作。
provisionedProductId 字符串 预配置产品的 ID。
provisionedProductName 字符串 预配置产品的名称。
产品编号 字符串 产品的 ID。
provisioningArtifactId 字符串 置备工件的 ID。
recordId 字符串 此操作的 Service Catalog 记录的 ID。
launchRoleArn 字符串 用于配置资源的 IAM 角色的亚马逊资源名称 (ARN)。
项目 对象 定义资源配置方式的工件的详细信息。
工件/路径 字符串 引擎下载工件的位置。例如,对于AWS_S3,这是亚马逊 S3 的 URI。
工件/类型 字符串 神器类型。允许的值:AWS_S3
identity 字符串 该字段目前未被使用。
parameters list 用户输入到 Service Catalog 作为此操作输入的参数键值对列表。
标签 list 作为标签输入到 key-value-pairs Service Catalog 的用户列表,以应用于已配置的资源。

工作流程结果通知:

使用 NotifyProvisionProductEngineWorkflowResult API 详细信息页面上指定的响应对象调用 API。

Updating

对于该UpdateProvisionedProduct操作,Service Catalog 将资源的实际更新委托给引擎。引擎负责与您选择的 IaC 解决方案(例如 Terraform)接口,以更新工件中定义的资源。引擎还负责将结果通知 Service Catalog。

Service Catalog 将所有更新请求发送到您名为的账户中的亚马逊 SQS 队列。ServiceCatalogExternalUpdateOperationQueue

请求语法:

{ "token": "string", "operation": "string", "provisionedProductId": "string", "provisionedProductName": "string", "productId": "string", "provisioningArtifactId": "string", "recordId": "string", "launchRoleArn": "string", "artifact": { "path": "string", "type": "string" }, "identity": { "principal": "string", "awsAccountId": "string", "organizationId": "string" }, "parameters": [ { "key": "string", "value": "string" } ], "tags": [ { "key": "string", "value": "string" } ] }
字段 类型 必填 描述
令牌 字符串 标识此操作的标记。必须将令牌返回到 Service Catalog 才能通知执行结果。
operation 字符串 此字段必须UPDATE_PROVISION_PRODUCT用于此操作。
provisionedProductId 字符串 预配置产品的 ID。
provisionedProductName 字符串 预配置产品的名称。
产品编号 字符串 产品的 ID。
provisioningArtifactId 字符串 置备工件的 ID。
recordId 字符串 此操作的 Service Catalog 记录的 ID。
launchRoleArn 字符串 用于配置资源的 IAM 角色的亚马逊资源名称 (ARN)。
项目 对象 定义资源配置方式的工件的详细信息。
工件/路径 字符串 引擎下载工件的位置。例如,对于AWS_S3,这是亚马逊 S3 的 URI。
工件/类型 字符串 神器类型。允许的值:AWS_S3
identity 字符串 该字段目前未被使用。
parameters list 用户输入到 Service Catalog 作为此操作输入的参数键值对列表。
标签 list 作为标签输入到 key-value-pairs Service Catalog 的用户列表,以应用于已配置的资源。

工作流程结果通知:

使用 NotifyUpdateProvisionedProductEngineWorkflowResultAPI 详细信息页面上指定的响应对象调用 API。

正在终止

对于该TerminateProvisionedProduct操作,Service Catalog 将资源的实际终止委托给引擎。引擎负责与您选择的 IaC 解决方案(例如 Terraform)接口,以终止工件中定义的资源。引擎还负责将结果通知 Service Catalog。

Service Catalog 将所有终止请求发送到您的账户中名为的亚马逊 SQS 队列。ServiceCatalogExternalTerminateOperationQueue

请求语法:

{ "token": "string", "operation": "string", "provisionedProductId": "string", "provisionedProductName": "string", "recordId": "string", "launchRoleArn": "string", "identity": { "principal": "string", "awsAccountId": "string", "organizationId": "string" } }
字段 类型 必填 描述
令牌 字符串 标识此操作的标记。必须将令牌返回到 Service Catalog 才能通知执行结果。
operation 字符串 此字段必须TERMINATE_PROVISION_PRODUCT用于此操作。
provisionedProductId 字符串 预配置产品的 ID。
provisionedProductName 字符串 预配置产品的名称。
recordId 字符串 此操作的 Service Catalog 记录的 ID。
launchRoleArn 字符串 用于配置资源的 IAM 角色的亚马逊资源名称 (ARN)。
identity 字符串 该字段目前未被使用。

工作流程结果通知:

使用 NotifyTerminateProvisionedProductEngineWorkflowResultAPI 详细信息页面上指定的响应对象调用 API。

标记

要通过 Resource Groups 管理标签,您的启动角色需要以下其他权限声明:

{ "Effect": "Allow", "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*" }
注意

启动角色还需要对构件中特定资源的标记权限,例如ec2:CreateTags