

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

# 跨不同 Amazon Web Services account 和 AWS 区域 复制 AWS Service Catalog 产品
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions"></a>

*Sachin Vighe 和 Santosh Kale，Amazon Web Services*

## Summary
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-summary"></a>

AWS Service Catalog 是一项区域性服务，这意味着 AWS Service Catalog [产品组合和产品](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)仅在创建它们的 AWS 区域 可见。如果您在新区域设置 [AWS Service Catalog 中心](https://aws.amazon.com/about-aws/whats-new/2020/06/aws-service-catalog-now-supports-sharing-portfolios-across-an-organization-from-a-delegated-member-account/)，则必须重新创建现有产品，这可能是一个耗时的过程。

此模式的方法介绍如何将源 Amazon Web Services account 或区域中 AWS Service Catalog 中心的产品复制到目标账户或区域的新中心，以简化进程。有关 AWS Service Catalog 中心和分支模型的更多信息，请参阅 AWS 管理与治理博客上的 [AWS Service Catalog 中心和分支模型：如何自动向多个账户部署和管理 AWS Service Catalog](https://aws.amazon.com/blogs/mt/aws-service-catalog-hub-and-spoke-model-how-to-automate-the-deployment-and-management-of-service-catalog-to-many-accounts/) 

该模式还提供了跨账户或其他区域复制 AWS Service Catalog 产品所需单独代码包。通过使用此模式，您的组织可节省时间，在新的 AWS Service Catalog 中心中提供现有和以前的产品版本，最大限度地降低手动错误的风险，并跨多个账户或区域扩展该方法。

**注意**  
此模式的*操作说明*部分提供了两个复制产品的选项。您可使用选项 1 跨账户复制产品，也可选择选项 2 跨区域复制产品。

## 先决条件和限制
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account。
+ 源账户或区域中的现有 AWS Service Catalog 产品。
+ 目标账户或区域中的现有 AWS Service Catalog 中心。
+ 如果您想跨账户复制产品，则必须共享包含产品的 AWS Service Catalog 产品组合，然后将其导入至目标账户。有关这方面的更多信息，请参阅 AWS Service Catalog 文档中的[共享与导入产品组合](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_sharing.html)。

**限制**
+ 您想要跨区域或账户复制的 AWS Service Catalog 产品不得属于多个产品组合。

## 架构
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-architecture"></a>

下图显示了将 AWS Service Catalog 产品从源账户复制至目标账户的过程。

![\[区域 1 中的跨账户角色、区域 2 中的 Lambda 执行角色和 Lambda 函数。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/7ede5d17-89eb-4455-928f-6953d145ac9f/images/26738220-1ed2-4f84-911b-3c88e954b60e.png)


 下图显示了将 AWS Service Catalog 产品从源区域复制到目标区域的过程。

![\[在区域 2 中使用 Lambda scProductCopy 函数复制的产品。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/7ede5d17-89eb-4455-928f-6953d145ac9f/images/0a936792-3bdc-45c2-ba05-17e828615061.png)


**技术堆栈**
+ Amazon CloudWatch
+ AWS Identity and Access Management（IAM）
+ AWS Lambda
+ AWS Service Catalog

**自动化和扩缩**

您可使用 Lambda 函数扩展这种模式方法，该函数可以根据收到的请求数量或需要复制的 AWS Service Catalog 产品数量进行扩展。有关这方面的更多信息，请参见 AWS Lambda 文档中的 [Lambda 函数扩展](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html)。

## 工具
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-tools"></a>
+ [AWS 命令行界面（AWS CLI）](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)是一种开源工具，它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。
+ [AWS Identity and Access Management (AWS IAM) ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)通过控制验证和授权使用您 AWS 资源的用户，帮助您安全地管理对您 AWS 资源的访问。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一项计算服务，可帮助您运行代码，而无需预置或管理服务器。它仅在需要时运行您的代码，并且能自动扩缩，因此您只需为使用的计算时间付费。
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 可帮助您集中管理获准在 AWS 上使用的 IT 服务目录。最终用户可在遵循组织设定约束的情况下快速部署他们所需已获得批准的 IT 服务。

**代码**

您可以使用 ` cross-account-copy` 软件包（附件）跨账户复制 AWS Service Catalog 产品，也可以使用 `cross-region-copy` 软件包（附件）跨区域复制产品。

`cross-account-copy` 软件包包含以下文件：
+ `copyconf.properties` — 包含用于跨账户复制产品的区域和 Amazon Web Services account ID 参数的配置文件。
+ `scProductCopyLambda.py` — 用于跨账户复制产品的 Python 函数。
+ `createDestAccountRole.sh` — 用于在目标账户中创建 IAM 角色的脚本。
+ `createSrcAccountRole.sh` — 用于在源账户中创建 IAM 角色的脚本。
+ `copyProduct.sh` — 创建和调用 Lambda 函数以跨账户复制产品的脚本。

`cross-region-copy` 软件包包含以下文件：
+ `copyconf.properties` — 包含用于跨区域复制产品的区域和 Amazon Web Services account ID 参数的配置文件。
+ `scProductCopyLambda.py` — 用于跨区域复制产品的 Python 函数。
+ `copyProduct.sh` — 创建 IAM 角色和创建并调用 Lambda 函数以跨区域复制产品的脚本。

## 操作说明
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-epics"></a>

### 选项 1 — 跨账户复制 AWS Service Catalog 产品
<a name="option-1-ndash-copy-aws-service-catalog-products-across-accounts"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 更新配置文件。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 管理员、AWS 系统管理员、云管理员 | 
| 在目标账户中配置 AWS CLI 的凭证。 | 通过运行 `aws configure` 命令并提供以下值，配置您的凭证以访问目标账户中的 AWS CLI：<pre>$aws configure <br />AWS Access Key ID [None]: <your_access_key_id> <br />AWS Secret Access Key [None]: <your_secret_access_key> <br />Default region name [None]: Region<br />Default output format [None]:</pre>有关更多信息，请参见 AWS Command Line Interface 文档中的[配置基础知识](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。  | AWS 管理员、AWS 系统管理员、云管理员 | 
| 在源账户中配置 AWS CLI 的凭证。 | 通过运行 `aws configure` 命令并提供以下值，配置您的凭证以在您的源账户中访问 AWS CLI： <pre>$aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: <your_secret_access_key><br />Default region name [None]: Region<br />Default output format [None]:</pre>有关更多信息，请参见 AWS Command Line Interface 文档中的[配置基础知识](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。  | AWS 管理员、AWS 系统管理员、云管理员 | 
| 在目标账户中创建 Lambda 执行角色。 | 在您的目标账户中运行 `createDestAccountRole.sh ` 脚本。该脚本实施以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 管理员、AWS 系统管理员、云管理员 | 
| 在您的源账户中创建跨账户 IAM 角色。 | 在您的源账户中运行 `createSrcAccountRole.sh ` 脚本。该脚本实施以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 管理员、AWS 系统管理员、云管理员 | 
| 在您的目标账户中运行 copyProduct 脚本。 | 在您的目标账户中运行 `copyProduct.sh ` 脚本。该脚本实施以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 管理员、AWS 系统管理员、云管理员 | 

### 选项 2 — 将 AWS Service Catalog 产品从源区域复制到目标区域
<a name="option-2-ndash-copy-aws-service-catalog-products-from-a-source-region-to-a-destination-region"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 更新配置文件。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 系统管理员、云管理员、AWS 管理员 | 
| 使用您的 AWS 凭证配置 CLI | 通过运行 `aws configure` 命令并提供以下值，配置您的凭证以在您的环境中访问 AWS CLI：<pre>$aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: <your_secret_access_key><br />Default region name [None]: Region<br />Default output format [None]:</pre>有关更多信息，请参见 AWS Command Line Interface 文档中的[配置基础知识](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。  | AWS 管理员、AWS 系统管理员、云管理员 | 
| 运行 copyProduct 脚本。 | 在您的目标账户中运行 `copyProduct.sh` 脚本。该脚本实施以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.html) | AWS 管理员、AWS 系统管理员、云管理员 | 

## 相关资源
<a name="copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions-resources"></a>
+ [创建 Lambda 执行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)（AWS Lambda 文档）
+ [创建 Lambda 函数](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html)（AWS Lambda 文档）
+ [AWS Service Catalog API 参考](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_Operations_AWS_Service_Catalog.html)
+ [AWS Service Catalog 文档](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

## 附件
<a name="attachments-7ede5d17-89eb-4455-928f-6953d145ac9f"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/7ede5d17-89eb-4455-928f-6953d145ac9f/attachments/attachment.zip)