本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用企业蓝图工厂
本节可帮助您在环境中创建、更新或删除蓝图。它提供了在蓝图的整个生命周期中对其进行管理的详细说明。
要创建或更新自定义蓝图,必须了解如何创建 IaC 模板,例如 AWS CloudFormation模板或 AWS Cloud Development Kit (AWS CDK) 构造。本指南不包括有关如何定义通过企业蓝图工厂发布的蓝图的信息或说明。
先决条件
以下是在您的 AWS 环境中使用企业蓝图工厂的先决条件:
创建蓝图
企业蓝图工厂管道部署您在配置文件中定义的蓝图。开发人员通过将配置文件合并到配置存储库中来启动配置管道。然后,企业蓝图工厂使用将蓝图作为产品部署ServiceCatalogLaunchConstraintRole到 Service Catalog 中。有关创建蓝图时配置管道和发布管道执行的操作的更多信息,请参阅本指南中的蓝图创建。
将蓝图添加到产品存储库中
-
确保已按照本指南中设置企业蓝图工厂中的说明设置企业蓝图工厂。
-
确认该
ServiceCataloglogLaunchConstraintRole角色的策略允许您配置蓝图中定义的资源。 -
在产品存储库 (
ServiceCatalog-BlueprintProductRepo) 中,为新蓝图创建一个文件夹。 -
将 IaC 模板(CloudFormation 模板或 AWS CDK 构造)粘贴到您创建的文件夹中。
-
在你创建的文件夹中创建一个名为 p roduct_config.json 的文件。
-
打开 produc t_config.json 文件,然后将以下内容粘贴到文件中:
{ "SchemaVersion": "1.0", "ProductVersionName": "1.0.1", "Deprecated_Versions" : [], "ProductVersionDescription": "<description>", "ProductType": "CLOUD_FORMATION_TEMPLATE", "Properties": { "TemplateFilePath": "./<folder name>/<file name>" } }其中:
-
<description>是对蓝图版本的简要描述 -
<folder name>是您在产品存储库中创建的文件夹的名称 -
<file name>是 IaC 模板的名称
注意
您可以更新架构版本或产品版本名称以符合您组织的政策。
-
-
保存并关闭 produc t_config.json 文件。
-
输入以下命令将更改合并到产品存储库中:
cd ServiceCatalog-BlueprintProductRepo git add <folder name>/<file name> <folder name>\product_config.json git commit -m "The first version of <file name> blueprint" git push origin main
更新配置文件
-
在配置存储库 (
ServiceCatalog-ConfigRepo) 中,打开 config.yml 文件。 -
根据需要编辑新蓝图的
portfoliosproducts部分和部分。有关更多信息,请参阅本指南中的配置文件。 -
保存并关闭 config.yml 文件。
-
输入以下命令将更改合并到配置存储库中:
cd ServiceCatalog-ConfigRepo git add config.yml git commit -m "<description of change>" git push origin main批准此拉取请求将启动配置管道。配置管道为产品创建发布管道。
查看部署日志
-
登录企业蓝图工厂管理帐户。
-
在名称中,选择产品的发布渠道。默认情况下,管道名称为
BluePrint_<Product-Name>-<CloudFormation-Stack-Name>。 -
选择 View history (查看历史记录)。
-
查看管道的状态和阶段执行。有关状态的更多信息,请参阅 CodePipeline 文档中的查看执行状态。
-
如果管道出现故障,请查看失败原因。有关如何为管道配置监控的说明,请参阅 CodePipeline 文档中的监控管道。如果发布管道因 cfn-lint 或 cfn_nag 检查而失败,请更正模板中的错误。向产品存储库提交另一个拉取请求。这将重新启动发布管道。有关更正模板错误的更多信息,请参阅本指南中的 “疑难解答” 部分。
-
等到发布管道状态变为
Succeeded。
验证部署
-
登录组织中的消费者账户。
-
担任 I
ServiceCatalogEndUserRoleAM 角色。 -
打开 S ervice Catalog 控制台
。 -
在导航窗格中,选择产品。
-
确认新产品在产品列表中可用。
更新蓝图
有关配置管道和发布管道在创建蓝图时执行的操作的更多信息,请参阅本指南中的蓝图更新。
更新蓝图
-
在产品存储库中,导航到该产品的文件夹。
-
粘贴更新后的 IaC 模板。确保文件名与先前版本相同。
-
打开 p roduct_config.json 文件。
-
对于
ProductVersionName,请更新版本号。 -
如果要防止将来部署先前的产品版本,对于
Deprecated_Versions,请在逗号分隔的列表中输入以前的版本号。 -
输入以下命令将更改合并到产品存储库中:
cd ServiceCatalog-BlueprintProductRepo git add <folder name>/<file name> <folder name>\product_config.json git commit -m "Version <number> of <file name> blueprint" git push origin main批准此拉取请求将启动产品的发布渠道。
查看部署日志
-
登录企业蓝图工厂管理帐户。
-
在名称中,选择发布管道。默认情况下,管道名称为
BluePrint_<Product-Name>-<CloudFormation-Stack-Name>。 -
选择 View history (查看历史记录)。
-
查看管道的状态和阶段执行。有关状态的更多信息,请参阅 CodePipeline 文档中的查看执行状态。
-
如果管道出现故障,请查看失败原因。有关如何为管道配置监控的说明,请参阅 CodePipeline 文档中的监控管道。如果发布管道因 cfn-lint 或 cfn_nag 检查而失败,请更正模板中的错误。向产品存储库提交另一个拉取请求。这将重新启动发布管道。有关更正模板错误的更多信息,请参阅本指南中的 “疑难解答” 部分。
-
等到发布管道状态变为
Succeeded。
验证更新
-
登录组织中的消费者账户。
-
担任 I
ServiceCatalogEndUserRoleAM 角色。 -
打开 S ervice Catalog 控制台
。 -
在导航窗格中,选择产品。
-
确认新产品版本在产品列表中可用。
删除蓝图
删除产品时,Service Catalog 会从包含该产品的每个产品组合中删除所有产品版本。有关更多信息,请参阅 Service Catalog 文档中的删除产品。有关配置管道和发布管道在创建蓝图时执行的操作的更多信息,请参阅本指南中的蓝图删除。
删除蓝图
-
在配置存储库中,打开 config.yml 文件。
-
编辑产品分区,删除或注释您要删除的产品。
-
保存并关闭 config.yml 文件。
-
输入以下命令将更改合并到配置存储库中:
cd ServiceCatalog-ConfigRepo git add config.yml git commit -m "<description of change>" git push origin main批准此拉取请求将启动配置管道。配置管道会删除产品及其发布管道。
-
在产品存储库中,删除产品的文件夹,包括其内容。
-
输入以下命令将更改合并到产品存储库中:
cd ServiceCatalog-BlueprintProductRepo git add . git commit -m "Delete <file name> blueprint" git push origin main
验证删除
-
登录组织中的消费者账户。
-
担任 I
ServiceCatalogEndUserRoleAM 角色。 -
打开 S ervice Catalog 控制台
。 -
在导航窗格中,选择产品。
-
确认已删除的产品不再可用。
故障排除
创建或更新蓝图时,cfn-lint 和 cfn-nag 工具会验证蓝图。有关发布管道中验证的更多信息,请参阅本指南中的发布管道。任何报告的语法或安全错误都会导致管道失败。 要通过发布管道成功部署蓝图,必须更正蓝图中的错误。
以下是输出示例,显示了两个与安全相关的错误,一个是失败错误,一个是警告。
BP-SNS.yml --------------------------------------------------- BP-SNS.yml --------------------------------------------------- | WARN W47 | | Resource: ["ExampleTopic"] | Line numbers: [5] | | SNS Topic should specify KmsMasterKeyId property --------------------------------------------------- | FAIL F18 | | Resource: ["ExampleTopicPolicy"] | Line numbers: [10] | | SNS topic policy should not allow * principal Failures count: 1 Warnings count: 1
要更正这些错误,在蓝图文件中,您需要替换亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题策略中的*委托人,并将AWS KMS() 密钥与 AWS Key Management Service 该主题关联。以下代码示例演示了这些更新。
ExampleTopic: Type: AWS::SNS::Topic Properties: TopicName: ExampleTopic ExampleTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: KmsMasterKeyId: alias/aws/sns # Added KMS key PolicyDocument: Id: Id1 Version: '2012-10-17' Statement: - Sid: Sid2 Effect: Allow Principal: "Service" : "s3.amazonaws.com" # Replaced "AWS": '*' Action: 'sns:Publish' Resource: !Ref ExampleTopic Topics: - !Ref ExampleTopic