本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用自动部署 S AWS ervice Catalog 产品组合和产品 AWS CDK
由 Sandeep Gawande (AWS)、() 和 Viyoma Sachdev AWS a RAJNEESH TYAGI () 创作 AWS
环境:PoC 或试点 | 技术: DevOps;基础架构;管理和治理 | |
工作负载:开源 | AWSAWS服务:Service Catalog;AWSCDK |
Summary
AWSService Catalog 可帮助您集中管理获准在组织AWS环境中使用的 IT 服务或产品目录。一系列产品称为产品组合,产品组合还包含配置信息。借助 S AWS ervice Catalog,您可以为组织中的每类用户创建自定义产品组合,然后授予对相应产品组合的访问权限。然后,这些用户可在产品组合中快速部署他们需要的任何产品。
如果您拥有复杂的网络基础架构(例如多区域和多账户架构),建议您在单个中央账户中创建和管理服务目录组合。此模式描述了如何使用 AWS Cloud Development Kit (AWSCDK) 在中央账户中自动创建服务目录产品组合,向最终用户授予访问权限,然后(可选)在一个或多个目标AWS账户中配置产品。此 ready-to-use解决方案在源账户中创建 Service Catalog 产品组合。它还可以选择使用AWS CloudFormation 堆栈在目标客户中配置产品,并帮助您 TagOptions 为产品进行配置:
AWS CloudFormation StackSets— 您可以使用 StackSets 在多个AWS地区和账户中启动 Service Catalog 产品。在此解决方案中,您可选择在部署此解决方案时自动配置产品。有关更多信息,请参阅使用 AWS CloudFormation StackSets(S ervice Catalog 文档)和StackSets 概念(CloudFormation 文档)。
TagOption 库-您可以使用 TagOption 库管理已配置产品的标签。A TagOption是在 Serv AWS ice Catalog 中管理的键值对。它不是AWS标签,但它可以用作基于创建AWS标签的模板 TagOption。有关更多信息,请参阅TagOption 库(Service Catalog 文档)。
先决条件和限制
先决条件
要用作管理 Service Catalog 产品组合的源账户的活跃AWS账户。
如果您使用此解决方案在一个或多个目标客户中配置产品,则目标账户必须已经存在并且处于活动状态。
AWSIdentity and Access Management (IAM) 访问AWS服务目录的权限 AWS CloudFormation,以及AWSIAM。
产品版本
AWSCDK版本 2.27.0
架构
目标技术堆栈
集中AWS账户中的 Service Catalog 产品组合
部署至目标账户的 Service Catalog 产品
目标架构
在产品组合(或来源)账户中,您可以使用您的用例的AWS账户、AWS区域、IAM角色、产品组合和产品信息更新 config.json 文件。
您部署AWSCDK应用程序。
AWSCDK应用程序扮IAM演部署角色并创建 config.json 文件中定义的 Service Catalog 产品组合和产品。
如果您配置 StackSets 为在目标账户中部署产品,则该过程将继续进行。如果您未配置 StackSets 为配置任何产品,则该过程已完成。
该AWSCDK应用程序扮演StackSet 管理员角色并部署您在 config.j son 文件中定义的AWS CloudFormation 堆栈集。
在目标账户中, StackSets 担任StackSet 执行角色并配置产品。
工具
AWS服务
AWSCloud Development Kit (AWSCDK) 是一个软件开发框架,可帮助您在代码中定义和配置AWS云基础架构。
AWSCDKToolkit 是一个命令行云开发套件,可帮助您与AWSCDK应用程序进行交互。
AWS CloudFormation帮助您设置AWS资源,快速一致地配置资源,并在各个AWS账户和地区的整个生命周期中对其进行管理。
AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。
AWSS@@ ervice Catalog 可帮助您集中管理已获批准的 IT 服务目录。AWS最终用户可在遵循组织设定约束的情况下快速部署他们所需已获得批准的 IT 服务。
代码存储库
此模式的代码可在 GitHubaws-cdk-servicecatalog-automation
cdk-sevicecatalog-app— 此文件夹包含此解决方案的AWSCDK应用程序。
config — 此文件夹包含 config.json 文件和用于在 Service Catalog 产品组合中部署产品的 CloudFormation 模板。
config/config.json — 该文件包含所有配置信息。您可更新此文件,以针对您的用例自定义此解决方案。
配置/模板-此文件夹包含服务中心产品的 CloudFormation 模板。
setup.sh — 此脚本部署解决方案。
uninstall.sh-此脚本删除堆栈和部署此解决方案时创建的所有AWS资源。
若要使用示例代码,请按照操作部分的说明执行。
最佳实践
IAM用于部署此解决方案的角色应遵守最低权限原则(IAM文档)。
遵循开发云应用程序的最佳实践 AWS CDK
(AWS博客文章)。 遵守AWS CloudFormation 最佳实践(CloudFormation 文档)。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
安装工具AWSCDK包。 | 确保已安装AWSCDK工具包。输入以下命令,以确认是否已安装并检查版本。
如果未安装 AWS CDK Toolkit,则输入以下命令进行安装。
如果 AWS CDK Toolkit 版本低于 2.27.0,则输入以下命令将其更新到 2.27.0 版本。
| AWS DevOps, DevOps 工程师 |
克隆存储库。 | 输入以下 命令。在 “其他信息” 部分的 “克隆存储库” 中,您可以复制包含存储库URL的完整命令。这将从中克隆aws-cdk-servicecatalog-automation
这将在目标目录中创建
| AWS DevOps, DevOps 工程师 |
设置AWS凭据。 | 输入以下命令。它们会导出以下变量,这些变量定义了您要部署堆栈的AWS账户和区域。
AWS的凭证AWSCDK是通过环境变量提供的。 | AWS DevOps, DevOps 工程师 |
为最终用户IAM角色配置权限。 | 如果您要使用IAM角色来授予对产品组合及其中的产品的访问权限,则这些角色必须具有由 servic atalog.amazonaws.com 服务负责人担任的权限。有关如何授予这些权限的说明,请参阅使用 Service Catalog 启用可信访问(Organiz AWS at ions 文档)。 | AWS DevOps, DevOps 工程师 |
配置所需的IAM角色 StackSets。 | 如果您使用 StackSets 在目标账户中自动配置产品,则需要配置管理和运行堆栈集的IAM角色。
| AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
创建 CloudFormation 模板。 | 在该 | 应用程序开发者AWS DevOps、 DevOps 工程师 |
自定义配置文件。 | 在
有关已完成的配置文件的示例,请参阅其他信息部分的示例配置文件。 | 应用程序开发人员、 DevOps 工程师、AWS DevOps |
部署解决方案。 | 输入以下 命令。这将部署AWSCDK应用程序并按照 config.json 文件中指定的方式配置服务目录产品组合和产品。
| 应用程序开发人员、 DevOps 工程师、AWS DevOps |
验证部署。 | 通过执行以下操作,验证部署是否成功:
| 将军 AWS |
(可选)更新产品组合与产品。 | 如果您想使用此解决方案更新产品组合、产品或配置新产品:
例如,您可添加其他产品组合或预配置更多资源。该AWSCDK应用程序仅实现更改。如果先前部署的产品组合或产品无变化,则重新部署不会影响它们。 | 应用程序开发者、 DevOps 工程师、通用 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
(可选)移除此解决方案部署的AWS资源。 | 如果要删除预配置产品,请按删除预配置产品(Service Catalog 文档)中的说明进行操作。 如果您想删除此解决方案所创建的所有资源,请输入以下命令。
| AWS DevOps、 DevOps 工程师、应用程序开发人员 |
相关资源
AWSS@@ ervice Catalog 构造库(AWSAPI参考)
StackSets 概念(CloudFormation 文档)
AWSS@@ ervice Catalog
(AWS营销)
其他信息
其他信息
克隆存储库
输入以下命令以从中克隆存储库 GitHub。
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
示例配置文件
以下是带示例值的 config.json 文件示例。
{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }