如何将 Amazon QuickSight 内容从开发账户迁移到 UAT/Prod 账户
如何将 Amazon QuickSight 内容从开发账户迁移到 UAT/Prod 账户
利用 Amazon SageMaker 开发 ML 模型的数据科学家更愿意使用 Amazon QuickSight 作为首选/具有成本效益的可视化工具,以便通过使用其他可用数据点丰富 ML 模型结果/预测来更好地做出决策。数据分析师还希望利用 Amazon QuickSight 作为他们首选的可视化工具。
在这篇博文中,我们将讨论如何将 AWS QuickSight 资源从一个账户迁移到另一个账户/QuickSight 资源的跨账户迁移。 AWS 中的不同账户主要用于隔离不同的环境,例如通过应用不同的访问控制集将开发环境和生产环境分开。
在大多数情况下,企业拥有多个 AWS 账户,例如用于开发的 Development 账户、用于测试的 Test 账户和用于生产部署目的的 Prod 账户。这些帐户不相互依赖,并用于不同的目的。
问题陈述: -
数据科学家/分析师可能已经在开发帐户中开发了 QuickSight 分析、仪表板、用户组等,并希望将这些 QuickSight 开发内容迁移到 Prod 环境中。 (或任何其他环境)。
迁移方法:-
在此 QuickSight 资源迁移中,我们希望使用控制台在开发环境中创建资源,并将通过使用 QuickSight API 从相同的 QuickSight 资源创建 JSON 文件来迁移到 Prod 环境。
以下是如何为资源创建 JSON 文件并将其传输到 prod 环境的高级流程。
Fig- Migration between Accounts
在图片中,您可以看到我们正在使用 Account A(开发环境)中的资源创建 JSON 文件,并将其迁移到 Account B(生产环境)以创建资源。
迁移的先决条件: -
1. 两个或两个以上 AWS 账户,一个用于开发,另一个用于生产。
2. 需要访问 QuickSight 资源
3. AWS和Python的基本了解。当我们使用 Amazon Sagemaker Notebooks 中的 python 脚本进行完整迁移时。
迁移步骤: -
1.权限设置。
2.准备迁移内容
3. 使用来自 Dev 的 JSON 文件将 QuickSight 资源重建到 Prod 环境中。
1. 权限设置
首先最重要的是提供对组或用户 AWS 环境的访问权限。下面提到的权限和访问可以在学习过程中应用,但在实际生产环境中,您可以限制策略访问。
打开 IAM 控制台。
我们将创建一个允许完全访问 QuickSight 的策略。
创建策略的步骤: -
1. 转到策略部分并单击创建策略按钮。
2. 单击服务并选择 QuickSight。
3. 在操作中,选择所有 QuickSight 操作。
4. 在资源中,单击所有资源。
5. 点击下一步,直到您到达审查政策页面,写下“QuickSight-FullAccess”,然后点击创建政策。
重复此步骤 在这两种环境中 您将用于迁移。
开发环境和生产环境所需的权限:-
1. 在 IAM 中创建一个组并确保用户属于该组。将策略 AmazonSagemakerFullAccess 和 QuickSightFullAccess 附加到组。
2. 我们将利用 Sagemaker notebook 使用下面提到的 python 脚本进行迁移。请将 QuickSightFullAccess 策略附加到 Sagemaker 笔记本 IAM 角色。
这是两个帐户中仅有的两个相似且需要的权限。
跨账户权限设置
现在我们将在开发环境中创建一个角色,该角色将提供跨账户资源共享权限。基本上,此角色将允许 Prod Environment 中的用户访问 Development Environment 中可用的 QuickSight 资源。在我们创建跨账户角色之前,我们必须从 Prod 获取用户的 ARN。 (您将在 IAM 服务的用户部分中找到 ARN)
脚步: -
1. 在 IAM 控制台中,转到角色部分并单击创建角色。
2. 在受信任的实体类型中选择“AWS 账户”。
3. 选择另一个 Aws 帐户并提供 Prod 帐户 ID。
4. 单击下一步并选择我们创建的“QuickSight-FullAccess”策略,然后再次单击下一步。
5. 提供角色名称为“qs-cross-acc-share”,然后单击创建角色按钮。
6. 创建角色后。再次,在 IAM 角色部分搜索相同的角色,然后单击信任关系并编辑信任策略。
7. 在信任策略的 Principal 部分粘贴从 Prod 复制的用户 ARN,最后单击更新策略进行更新。
在下面的示例中,您可以在可信实体策略中看到添加的用户 ARN — ** “ARN:aws:iam::86XXXXX55:user/Test-qs-admin-user”**
Figure — AWS blogs (reference)
2. 使用 QuickSight API 从开发环境以 JSON 格式准备迁移内容
我们会将以下内容从开发环境准备/导出为 JSON 格式,以将其部署在相应的产品环境中。
以下是资源在创建时如何相互依赖。
QuickSight 中的资源:-
1. 数据源: — 它表示数据来自的数据源与 QuickSight 之间的连接。 QuickSight 支持各种数据源,例如 Amazon Athena、S3、Amazon Aurora、Amazon Redshift 等等。
2. 数据集: — 它表示来自数据源的准备好的数据集。
3. 模板: — 模板是 QuickSight 中的一个实体,它封装了创建分析所需的元数据,您可以使用它来创建分析/仪表板。
4. 分析: — 分析是我们使用数据集构建的可视化图表和图形。
5. 仪表板: — 仪表板是分析的只读快照,您可以与其他 Amazon QuickSight 用户共享以用于报告目的
数据源位于层次结构的顶部,因此所有其他内容都依赖于数据源。在尝试迁移 Prod 环境中的其他 QuickSight 资源之前,请记住使所有数据源在 Prod 中可用,就像在开发环境中一样,这意味着所有(范围内)数据库、表、S3 文件等已在开发应该在 Prod Environment 中以准确的格式和结构可用。
所有资源文件都将是使用 QuickSight API 从开发环境中提取的 JSON 文件。基本上,我们必须运行 describe_dataset、describe_data_source 和 describe_template API,它为我们提供了该资源的描述。此 API 输出将转换为 JSON 文件并传输到 Prod 环境以复制资源。使用这个 JSON 和 QuickSight API,我们在 Prod 中创建/复制资源。
在 QuickSight 中迁移或构建分析和仪表板有点棘手。如果您使用 API,则只能从模板创建分析和仪表板。对于迁移分析和仪表板,首先从开发环境中已经可用的分析/仪表板创建模板。然后将该模板共享到 Prod 帐户,也可以称为资源的跨帐户共享。在 Prod 帐户中访问 Development Environment 的共享模板并在 Prod 帐户中创建类似的模板。接下来,一旦创建了模板,我们就必须使用这个模板来创建一个分析/仪表板。
基本上,我们使用共享模板方法在 Prod 中再次创建模板,然后在其上构建分析或仪表板。这是 QuickSight 在迁移资源时在两个账户之间的依赖关系。
请参阅链接以获取可用于为 QuickSight 资源创建 JSON 文件的代码。请记住,这些代码的设计考虑到在创建分析时只使用一个数据集,因为有可能将多个数据集链接到一个分析。
参考文件 Development_codes.ipynb & Production_codes.ipynb 文件在开发环境中创建 JSON 文件和在生产环境中创建资源。这是 GitHub 链接—— https://github.com/vishwakarma93/Quicksight-Migration-Via-Sagemaker.git
代码步骤: -
- 导入所需的库。
2. 我们必须获取属于数据源、数据集和分析或仪表板的所有 ID。通过运行 list API,我们可以得到当前账户中所有资源的列表。我们为所需资源提取 ID。查找资源的名称,然后从整个列表 API 输出中复制资源的 ID。
3. 复制资源 ID 后,将其放入以下部分。要从 Analysis 创建模板,请提供模板 ID 和模板名称。提供占位符名称,占位符与创建模板时使用的数据集映射。提供您要将资源迁移到的 Prod Environment(或任何)的帐户 ID。
4. 我们从下面描述的分析中找到数据集 ARN 和分析 ARN。我们使用此 ARN 来创建模板。模板是具有使用 API 创建分析和仪表板所需的所有元数据的实体。
5. 我们有一个从分析或仪表板创建模板的功能。我们将占位符与数据集进行映射,并将其提供给从分析中创建模板的函数。此模板在构建后会与 Prod 帐户(其他)共享。
6. 我们将在Development中使用describe API获取数据源、数据集和模板的描述,然后将描述输出转换为JSON文件。
到目前为止,我们已经从 Quicksight 资源中创建了 JSON 文件,例如描述数据源的 datasource.json 文件,描述数据集的 datset.json 文件,最后是包含有关 Analysis 信息的 template.json。
3. 使用 Development 中的 JSON 文件将 QuickSight 资源重建到 Prod 环境中
在 PROD 环境中,我们将使用 JSON 文件和 QuickSight API 从开发中复制 QuickSight 资源。在 Prod 环境中创建资源之前,我们必须确保所有数据库、表和数据都已在数据源中可用。例如,当我们在 QuickSight 中创建数据源时,它将连接到任何数据库服务,例如 Athena、S3、Aurora、RDS 等,具体取决于您在开发环境中使用的服务。因此,在 PROD 中创建资源之前,我们必须确保所有数据库都已迁移到 PROD。
为了使用 QuickSight API 在 QuickSight 环境中创建任何资源,我们必须向 API 提供一些输入以供执行。这些输入将取自从 Development 导出的 JSON 文件。每次创建新资源时,无论是数据集、分析还是其他任何东西,都将为该资源提供 ID 和名称。在我们的例子中,我们使用 JSON 文件中可用的相同名称和 ID 在 PROD 中创建资源。
首先将开发环境中的所有 JSON 文件复制到您的 Sagemaker 实例本地目录中。此外,将 Production_codes.ipynb 文件复制到同一位置。
参考并执行 Production_codes.ipynb 文件以在 PROD 环境中创建资源。
以下是我们创建资源的步骤。 Production_codes.ipynb 文件中的每个单元格代码都在此处进行了说明。
步骤1: -
导入 python 库,它将获得 Prod 环境的 AWS 账户 ID。
笔记: — 我们必须获取 QuickSight 用户的用户 ARN。 QuickSight 为在 QuickSight 中工作的每个用户创建用户 ARN,它不同于 IAM 中为该用户提供的用户 ARN。
要在 QuickSight 中获取用户 ARN,请运行以下命令。复制将包含您的电子邮件 ID 的用户 ARN,并将其粘贴到以下单元格中的变量“user_ARN”下。这是供您参考的 ARN –
ARN:aws:QuickSight:us-east-1:
第2步: —
这些包含用于创建数据集、数据源、分析和模板的功能。运行这个单元,因为我们将使用这个函数来创建资源。
第三步:——创建数据源
下面的代码将读取 datasource.json 文件,然后我们将获取在 Prod 环境中创建类似资源所需的一些输入。一旦我们有了所需的输入,我们就调用 create_dataousource 函数以及所需的参数来创建数据源,最后我们提取将用于创建数据集的已创建数据源的 ARN。
第 4 步:- 创建数据集
创建数据源后,我们读取下一组 json 文件,即 dataset.json。我们读取了创建数据集所需的所有输入。现在 dataset.json 文件中提到的数据源 ARN 将属于开发环境数据源。我们必须用我们在当前环境中创建的数据源 ARN 替换该 ARN。即我们在前面的步骤中创建的那个。运行以下命令,它将用最新的 ARN 替换 ARN。
调用我们的 create_dataset 函数以及输入来创建数据集。创建数据集后,我们将获取已创建数据集的 ARN。
第 5 步:— 创建模板
我们将使用共享开发模板创建模板。如前所述,从开发环境中导出的模板存在依赖关系,并在生产环境中利用该模板创建分析和仪表板,没有直接的方法来导出和导入分析和仪表板。
从创建模板所需的 JSON 文件中读取输入。下面的代码将创建具有与开发环境中相同的 ID 和名称的模板。
第 6 步:- 创建分析
最后一步是使用 prod 中创建的模板创建分析。以下代码将首先将数据集与模板用于创建分析的占位符进行映射。映射完成后,我们调用 create_analysis 函数来创建分析。
重要注意事项: -
1.分析和仪表板只能从另一个(Prod)帐户中的模板构建。
2. 必须在定义的依赖关系中创建资源,即首先我们应该创建数据源,然后是依赖于数据源的数据集。分析和仪表板最终由模板创建。
结论: -
这篇文章可用于在 AWS 账户之间迁移 QuickSight 资源。代码示例基于 SageMaker notebook python 内核显示,但同样可以使用 AWS Lambda 执行(稍作更改)。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明