本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的外部引擎 AWS Service Catalog
在 中 AWS Service Catalog,外部引擎會透過 EXTERNAL產品類型來表示。EXTERNAL 產品類型允許整合第三方佈建引擎,例如 Terraform。您可以使用外部引擎,將 Service Catalog 的功能延伸到原生 AWS CloudFormation 範本之外,以使用其他教學做為程式碼 (IaC) 工具。
EXTERNAL 產品類型可讓您使用 Service Catalog 熟悉的界面管理和部署資源,同時利用所選 IaC 工具的特定功能和語法。
若要在 Service Catalog 中啟用EXTERNAL產品類型,您必須在帳戶中定義一組標準資源。這些資源稱為 引擎。Service Catalog 在成品剖析和佈建操作中的特定點將任務委派給引擎。
佈建成品代表 Service Catalog 內產品的特定版本,可讓您管理和部署一致的資源。
當您針對EXTERNAL產品類型的佈建成品呼叫 AWS Service CatalogDescribeProvisioningArtifact 或 DescribeProvisioningParameters 操作時,Service Catalog 會在引擎中叫用 AWS Lambda 函數。這是從提供的佈建成品中擷取參數清單並將其傳回的必要項目 AWS Service Catalog。這些參數將在稍後做為佈建程序的一部分使用。
當您呼叫 ProvisionProduct 佈建EXTERNAL佈建成品時,Service Catalog 會先在內部執行一些動作,然後將訊息傳送至引擎中的 Amazon SQS 佇列。接著,引擎會擔任提供的啟動角色 (您指派給產品的 IAM 角色做為啟動限制)、根據提供的佈建成品佈建資源,以及叫用 NotifyProvisionProductEngineWorkflowResult API 來報告成功或失敗。
UpdateProvisionedProduct 和 TerminateProvisionedProduct 的呼叫處理方式類似,每個呼叫都有不同的佇列和通知 APIs:
考量事項
每個中樞帳戶僅限一個外部引擎
每個 Service Catalog 中樞帳戶只能使用一個EXTERNAL佈建引擎。Service Catalog 中hub-and-spoke模型允許中樞帳戶建立基準產品並共用產品組合,同時輻條帳戶匯入產品組合並利用產品。
此限制是 ,因為 EXTERNAL只能路由到帳戶中的一個引擎。如果管理員想要擁有多個外部引擎,管理員必須在不同的中樞帳戶中設定外部引擎 (以及產品組合和產品)。
外部引擎僅支援具有啟動限制的啟動角色
EXTERNAL 佈建成品僅支援使用使用啟動限制條件指定的啟動角色進行佈建。啟動限制條件會指定 Service Catalog 在最終使用者啟動、更新或終止產品時所擔任的 IAM 角色。如需啟動限制的詳細資訊,請參閱AWS Service Catalog 啟動限制。
參數剖析
EXTERNAL 佈建成品可以是任何格式。這表示建立EXTERNAL產品類型時,引擎需要從提供的佈建成品中擷取參數清單,並將其傳回 Service Catalog。這可透過在您的帳戶中建立 Lambda 函數來完成,該函數可接受下列請求格式、處理佈建成品,並傳回下列回應格式。
重要
Lambda 函數必須命名為 ServiceCatalogExternalParameterParser。
請求語法:
{ "artifact": { "path": "string", "type": "string" }, "launchRoleArn": "string" }
| 欄位 | 類型 | 必要 | Description |
|---|---|---|---|
| 成品 | object | 是 | 要剖析之成品的詳細資訊。 |
| 成品/路徑 | string | 是 | 剖析器從中下載成品的位置。例如,對於 AWS_S3,這是 Amazon S3 URI。 |
| 成品/類型 | string | 是 | 成品類型。允許的值:AWS_S3。 |
| launchRole | string | 否 | 下載成品時要擔任之啟動角色的 Amazon Resource Name (ARN)。如果未提供啟動角色,則會使用 Lambda 的執行角色。 |
回應語法:
{ "parameters": [ { "key": "string" "defaultValue": "string", "type": "string", "description": "string", "isNoEcho": boolean }, ] }
| 欄位 | 類型 | 必要 | Description |
|---|---|---|---|
| parameters | 列出 | 是 | Service Catalog 要求最終使用者在佈建產品或更新佈建產品時提供的參數清單。如果成品中未定義參數,則會傳回空白清單。 |
| 金鑰 | string | 是 | 參數索引鍵。 |
| defaultValue | string | 否 | 如果最終使用者未提供值,則為 參數的預設值。 |
| type | string | 是 | 引擎參數值的預期類型。例如,字串、布林值或映射。允許的值專屬於每個引擎。Service Catalog 會將每個參數值以字串形式傳遞至引擎。 |
| 描述 | string | 否 | 參數的描述。建議這易於使用。 |
| 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" } ] }
| 欄位 | 類型 | 必要 | Description |
|---|---|---|---|
| token | string | 是 | 識別此操作的字符。權杖必須傳回 Service Catalog,以通知執行結果。 |
| operation | string | 是 | 此欄位必須PROVISION_PRODUCT用於此操作。 |
| provisionedProductId | string | 是 | 佈建產品的 ID。 |
| provisionedProductName | string | 是 | 佈建產品的名稱。 |
| productId | string | 是 | 產品的 ID。 |
| provisioningArtifactId | string | 是 | 佈建成品的 ID。 |
| recordId | string | 是 | 此操作的 Service Catalog 記錄 ID。 |
| launchRoleArn | string | 是 | 用於佈建資源之 IAM 角色的 Amazon Resource Name (ARN)。 |
| 成品 | object | 是 | 定義如何佈建資源的成品詳細資訊。 |
| 成品/路徑 | string | 是 | 引擎從中下載成品的位置。例如,對於 AWS_S3,這是 Amazon S3 URI。 |
| 成品/類型 | string | 是 | 成品類型。允許的值:AWS_S3。 |
| 身分 | string | 否 | 目前未使用 欄位。 |
| parameters | 列出 | 是 | 使用者輸入 Service Catalog 做為此操作輸入的參數鍵值對清單。 |
| 標籤 | 列出 | 是 | 使用者輸入 Service Catalog 做為標籤的 key-value-pairs 清單,以套用至佈建的資源。 |
工作流程結果通知:
使用 API 詳細資訊頁面上指定的回應物件叫用 NotifyProvisionProductEngineWorkflowResult API。
更新中
針對 UpdateProvisionedProduct 操作,Service Catalog 會將資源的實際更新委派給引擎。引擎負責與您選擇的 IaC 解決方案 (例如 Terraform) 連接,以更新成品中定義的資源。引擎也負責通知 Service Catalog 結果。
Service Catalog 會將所有更新請求傳送至您帳戶中名為 的 Amazon 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" } ] }
| 欄位 | 類型 | 必要 | Description |
|---|---|---|---|
| token | string | 是 | 識別此操作的字符。權杖必須傳回 Service Catalog,以通知執行結果。 |
| operation | string | 是 | 此欄位必須UPDATE_PROVISION_PRODUCT用於此操作。 |
| provisionedProductId | string | 是 | 佈建產品的 ID。 |
| provisionedProductName | string | 是 | 佈建產品的名稱。 |
| productId | string | 是 | 產品的 ID。 |
| provisioningArtifactId | string | 是 | 佈建成品的 ID。 |
| recordId | string | 是 | 此操作的 Service Catalog 記錄 ID。 |
| launchRoleArn | string | 是 | 用於佈建資源之 IAM 角色的 Amazon Resource Name (ARN)。 |
| 成品 | object | 是 | 定義如何佈建資源的成品詳細資訊。 |
| 成品/路徑 | string | 是 | 引擎從中下載成品的位置。例如,對於 AWS_S3,這是 Amazon S3 URI。 |
| 成品/類型 | string | 是 | 成品類型。允許的值:AWS_S3。 |
| 身分 | string | 否 | 目前未使用 欄位。 |
| parameters | 列出 | 是 | 使用者輸入 Service Catalog 做為此操作輸入的參數鍵值對清單。 |
| 標籤 | 列出 | 是 | 使用者輸入 Service Catalog 做為標籤的 key-value-pairs 清單,以套用至佈建的資源。 |
工作流程結果通知:
使用 API 詳細資訊頁面上指定的回應物件叫用 NotifyUpdateProvisionedProductEngineWorkflowResult API。
終止
對於 TerminateProvisionedProduct 操作,Service Catalog 會將實際終止的資源委派給引擎。引擎負責與您選擇的 IaC 解決方案 (例如 Terraform) 連接,以終止成品中定義的資源。引擎也負責通知 Service Catalog 結果。
Service Catalog 會將所有終止請求傳送至您帳戶中名為 的 Amazon SQS 佇列ServiceCatalogExternalTerminateOperationQueue。
請求語法:
{ "token": "string", "operation": "string", "provisionedProductId": "string", "provisionedProductName": "string", "recordId": "string", "launchRoleArn": "string", "identity": { "principal": "string", "awsAccountId": "string", "organizationId": "string" } }
| 欄位 | 類型 | 必要 | Description |
|---|---|---|---|
| token | string | 是 | 識別此操作的字符。權杖必須傳回 Service Catalog,以通知執行結果。 |
| operation | string | 是 | 此欄位必須TERMINATE_PROVISION_PRODUCT用於此操作。 |
| provisionedProductId | string | 是 | 佈建產品的 ID。 |
| provisionedProductName | string | 是 | 佈建產品的名稱。 |
| recordId | string | 是 | 此操作的 Service Catalog 記錄 ID。 |
| launchRoleArn | string | 是 | 用於佈建資源之 IAM 角色的 Amazon Resource Name (ARN)。 |
| 身分 | string | 否 | 目前未使用 欄位。 |
工作流程結果通知:
使用 API 詳細資訊頁面上指定的回應物件叫用 NotifyTerminateProvisionedProductEngineWorkflowResult API。
標記
若要透過資源群組管理標籤,您的啟動角色需要下列其他許可陳述式:
{ "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。