在多個AWS帳戶和AWS區域中管理 AWS Service Catalog 產品 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在多個AWS帳戶和AWS區域中管理 AWS Service Catalog 產品

由 Ram Kandaswamy 建立 (AWS)

環境:生產

技術:管理與治理;基礎設施;現代化

工作負載:所有其他工作負載

AWS 服務:AWSService Catalog; AWS CloudFormation

Summary

Amazon Web Services (AWS) Service Catalog 簡化並加速以程式碼 IaC) 範本的形式管理和分發基礎設施。您可以使用 AWS CloudFormation 範本來定義產品所需的AWS資源集合 (堆疊 )。AWS CloudFormation StackSets 可讓您透過單一操作,跨多個帳戶和AWS區域建立、更新或刪除堆疊,藉此擴展此功能。

AWS Service Catalog 管理員使用開發人員編寫的 CloudFormation 範本來建立產品,然後發佈它們。然後,這些產品會與產品組合相關聯,並套用限制來管理。若要讓其他AWS帳戶或組織單位 (OUs) 中的使用者使用產品,您通常會與他們共用您的產品組合。此模式描述管理以 為基礎的 AWS Service Catalog 產品方案的替代方法AWS CloudFormation StackSets。與其共用產品組合,您可以使用堆疊集限制來設定產品可部署和使用的 AWS 區域和帳戶。透過使用此方法,您可以在多個帳戶、 OUs和 AWS區域中佈建 AWS Service Catalog 產品,並從中央位置管理它們,同時滿足您的管理需求。 

此方法的優點:

  • 產品是從主要帳戶佈建和管理,不會與其他帳戶共用。

  • 此方法提供以特定產品為基礎的所有佈建產品 (堆疊) 的合併檢視。

  • 使用 AWS Service Management Connector 進行組態比較簡單,因為它只鎖定一個帳戶。

  • 查詢和使用 AWS Service Catalog 中的產品更容易。

先決條件和限制

先決條件

  • AWS CloudFormation IaC 和版本控制範本

  • 多帳戶設定AWS和服務目錄,用於佈建和管理AWS資源

限制

  • 此方法使用 AWS CloudFormation StackSets,而 的限制 StackSets 適用:

    • StackSets 不支援透過巨集部署 CloudFormation 範本。如果您使用巨集預先處理範本,您將無法使用 StackSets型部署。

    • StackSets 提供將堆疊與堆疊集取消關聯的能力,因此您可以鎖定特定堆疊來修正問題。不過,已解除關聯的堆疊無法與堆疊集重新關聯。

  • AWS Service Catalog 會自動產生 StackSet 名稱。目前不支援自訂。

架構

目標架構

使用者使用AWS CloudFormation 範本 和 管理 AWS Service Catalog 產品 StackSets。
  1. 使用者建立AWS CloudFormation 範本,以 JSON或 YAML 格式佈建AWS資源。

  2. CloudFormation 範本會在 AWS Service Catalog 中建立產品,並將其新增至產品組合。

  3. 使用者會建立佈建的產品,並在目標帳戶中建立 CloudFormation 堆疊。

  4. 每個堆疊都會佈建 CloudFormation 範本中指定的資源。

工具

AWS 服務

  • AWS CloudFormation 可協助您設定AWS資源、快速且一致地佈建資源,並在其整個生命週期內跨AWS帳戶和區域進行管理。

  • AWS 命令列介面 (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列 Shell 中的命令與 AWS服務互動。

  • AWS Identity and Access Management (IAM) 可協助您安全地管理 AWS 資源的存取權,方法是控制誰經過身分驗證並獲授權使用。

  • AWS Service Catalog 可協助您集中管理針對 核准的 IT 服務目錄AWS。最終使用者可在機構所設的限制範圍內,迅速地只部署自己需要且經核准的 IT 服務。

史詩

任務描述所需的技能

建立組合。

產品組合是容器,其中包含一或多個根據特定條件分組在一起的產品。將產品組合用於您的 產品,可協助您將常見的限制套用至您的 產品組合。

若要建立產品組合,請遵循 AWS Service Catalog 文件 中的指示。如果您使用的是 AWS CLI,以下是範例命令:

aws servicecatalog create-portfolio --provider-name my-provider --display-name my-portfolio

如需詳細資訊,請參閱 AWS CLI 文件

AWS 服務目錄、 IAM

建立 CloudFormation 範本。

建立描述 資源的 CloudFormation 範本。如適用,應參數化資源屬性值。

AWS CloudFormation, JSON/YAML

建立具有版本資訊的產品。

當您在 AWS Service Catalog 中發佈 CloudFormation 範本時,範本會變成產品。提供選用版本詳細資訊參數的值,例如版本標題和描述;這將有助於稍後查詢產品。

若要建立產品,請遵循 AWS Service Catalog 文件 中的指示。如果您使用的是 AWS CLI,範例命令為:

aws servicecatalog create-product --cli-input-json file://create-product-input.json

其中 create-product-input.json 是傳遞產品參數的檔案。如需此檔案的範例,請參閱其他資訊一節。如需詳細資訊,請參閱 AWS CLI 文件

AWS Service Catalog

套用限制條件。

將堆疊集限制套用至產品組合,以設定產品部署選項,例如多個AWS帳戶、區域和許可。如需指示,請參閱 AWS Service Catalog 文件

AWS Service Catalog

新增 許可。

為使用者提供許可,讓他們可以啟動產品組合中的產品。如需主控台說明,請參閱 AWS Service Catalog 文件 。如果您使用的是 AWS CLI,以下是範例命令:

aws servicecatalog associate-principal-with-portfolio \ --portfolio-id port-2s6abcdefwdh4 \ --principal-arn arn:aws:iam::444455556666:role/Admin \ --principal-type IAM

如需詳細資訊,請參閱 AWS CLI 文件

AWS 服務目錄、 IAM

佈建 產品。

佈建的產品是產品的資源執行個體。根據 CloudFormation 範本佈建產品會啟動 CloudFormation 堆疊及其基礎資源。

根據堆疊集限制,以適用的AWS區域和帳戶為目標來佈建產品。在 AWS 中CLI,以下是範例命令:

aws servicecatalog provision-product \ --product-id prod-abcdfz3syn2rg \ --provisioning-artifact-id pa-abc347pcsccfm \ --provisioned-product-name "mytestppname3"

如需詳細資訊,請參閱 AWS CLI 文件

AWS Service Catalog

相關資源

參考

教學課程和影片

其他資訊

當您使用 create-product命令時, cli-input-json 參數會指向指定資訊的檔案,例如產品擁有者、支援電子郵件和 CloudFormation 範本詳細資訊。以下是此類檔案的範例:

{ "Owner": "Test admin", "SupportDescription": "Testing", "Name": "SNS", "SupportEmail": "example@example.com", "ProductType": "CLOUD_FORMATION_TEMPLATE", "AcceptLanguage": "en", "ProvisioningArtifactParameters": { "Description": "SNS product", "DisableTemplateValidation": true, "Info": { "LoadTemplateFromURL": "<url>" }, "Name": "version 1" }