在多个AWS账户和AWS区域中管理 S AWS ervice Catalog 产品 - AWS Prescriptive Guidance

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

在多个AWS账户和AWS区域中管理 S AWS ervice Catalog 产品

由 Ram Kandaswamy 创作 () AWS

环境:生产

技术:管理和治理;基础设施;现代化

工作负载:所有其他工作负载

AWSAWS服务:Service Catalog;AWS CloudFormation

Summary

Amazon Web Services (AWS) Service Catalog 简化并加快了企业基础设施即代码 (IaC) 模板的管理和分发。您可以使用AWS CloudFormation 模板来定义产品所需的AWS资源集合(堆栈)。AWS CloudFormation StackSets 扩展了此功能,使您能够通过一次操作在多个账户和AWS地区创建、更新或删除堆栈。

AWSService Catalog 管理员使用开发人员编写的 CloudFormation 模板创建产品并发布这些产品。然后将这些产品与产品组合相关联,并对治理施加约束。要将您的产品提供给其他AWS账户或组织部门的用户 (OUs),您通常会与他们共享您的产品组合。此模式描述了一种管理基于的 S AWS ervice Catalog 产品选项的替代方法AWS CloudFormation StackSets。与其共享产品组合,不如使用堆栈集约束来设置可以部署和使用产品的AWS区域和账户。通过使用这种方法,您可以在多个账户和AWS区域中配置您的 S AWS ervice Catalog 产品,并从一个中心位置对其进行管理,同时满足您的监管要求。OUs 

这种方法的优点:

  • 该产品从主账户进行预置和管理,不与其他账户共享。

  • 此方法提供了基于特定产品的所有预置产品(堆栈)的整合视图。

  • 使用AWS服务管理连接器进行配置更容易,因为它只针对一个帐户。

  • 可以更轻松地查询和使用 Ser AWS vice Catalog 中的产品。

先决条件和限制

先决条件

  • AWS CloudFormation 用于 IaC 和版本控制的模板

  • 用于配置和管理AWS资源的多账户设置和 S AWS ervice Catalog

限制

  • 这种方法使用 AWS CloudFormation StackSets,其限制 StackSets 适用:

    • StackSets 不支持通过宏部署 CloudFormation 模板。如果您使用宏来预处理模板,则无法使用 StackSets基于基础的部署。

    • StackSets 提供了解除堆栈与堆栈集关联的功能,因此您可以瞄准特定的堆栈来修复问题。但是,已解除关联的堆栈不能再与堆栈集重新关联。

  • AWSService Catalog 会自动生成 StackSet 名称。当前不支持自定义。

架构

目标架构

用户使用AWS CloudFormation 模板和管理 S AWS ervice Catalog 产品 StackSets。
  1. 用户创建AWS CloudFormation 模板来配置AWS资源,格式为JSON或YAML格式。

  2. 该 CloudFormation 模板在 S AWS ervice Catalog 中创建产品,然后将其添加到产品组合中。

  3. 用户创建预配置产品,在目标账户中创建 CloudFormation 堆栈。

  4. 每个堆栈都预置 CloudFormation 模板中指定的资源。

工具

AWS服务

  • AWS CloudFormation帮助您设置AWS资源,快速一致地配置资源,并在各个AWS账户和地区的整个生命周期中对其进行管理。

  • AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。

  • AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。

  • AWSS@@ ervice Catalog 可帮助您集中管理已获批准的 IT 服务目录。AWS最终用户可在遵循组织设定约束的情况下快速部署他们所需已获得批准的 IT 服务。

操作说明

任务描述所需技能

创建产品组合。

产品组合是一个容器,其中包含一个或多个根据特定条件组合在一起的产品。使用产品组合可以帮助您在整个产品集中应用常见约束。

要创建产品组合,请按照 S AWService Catalog 文档中的说明进行操作。如果你使用的是 AWSCLI,这里有一个命令示例:

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

有关更多信息,请参阅AWSCLI文档

AWSService Catalog,IAM

创建 CloudFormation 模板。

创建描述资源的 CloudFormation 模板。在适用的情况下,应对资源属性值进行参数化。

AWS CloudFormation, JSON/YAML

使用版本信息创建产品。

当您在 S AWS ervice Catalog 中发布 CloudFormation 模板时,该模板就会变成产品。为可选的版本详细信息参数提供值,例如版本标题和描述;这将有助于以后查询产品。

要创建产品,请按照 S AWService Catalog 文档中的说明进行操作。如果你使用的是 AWSCLI,则命令示例如下:

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

其中 create-product-input.json 是传递产品参数的文件。有关此文件的示例,请参阅其他信息部分。有关更多信息,请参阅AWSCLI文档

AWS Service Catalog

应用约束。

将堆栈集约束应用于产品组合,以配置产品部署选项,例如多个AWS账户、区域和权限。有关说明,请参阅 S AWService Catalog 文档

AWS Service Catalog

添加权限

为用户提供权限,以便他们可以启动产品组合中的产品。有关控制台的说明,请参阅 S AWService Catalog 文档。如果你使用的是 AWSCLI,这里有一个命令示例:

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

有关更多信息,请参阅AWSCLI文档

AWSService Catalog,IAM

预置产品。

预置产品是产品的资源实例。基于 CloudFormation 模板配置产品会启动 CloudFormation 堆栈及其底层资源。

根据堆栈集限制,通过定位适用的AWS区域和账户来配置产品。在中 AWSCLI,以下是一个命令示例:

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

有关更多信息,请参阅AWSCLI文档

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" }