使用 Amazon 构建企业数据网格 DataZone AWS CDK,以及 AWS CloudFormation - AWS Prescriptive Guidance

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

使用 Amazon 构建企业数据网格 DataZone AWS CDK,以及 AWS CloudFormation

由 Dhrubajyoti Mukherjee (AWS)、Adjoa Taylor ()、Ravi Kumar () 和 Weizhou Sun (AWS) 创作 AWS AWS

代码存储库:与 Amazon 的数据网格 DataZone

环境:生产

技术:分析;业务生产力;数据库;现代化;多账户策略

AWS服务:亚马逊 Athena AWSCDK;;;亚马逊;AWSGlue AWS CloudFormation;Identity an DataZone d Acces AWS s Management;亚马逊;亚马逊 S3 QuickSight

Summary

在 Amazon Web Services (AWS) 上,客户明白,数据是加速创新和提高企业商业价值的关键。要管理这些海量数据,你可以采用分散式架构,例如数据网格。数据网格架构促进了产品思维,这种思维方式将客户、目标和市场考虑在内。数据网格还有助于建立联合治理模型,提供对数据的快速、安全访问。

构建基于数据网格的企业解决方案的策略 AWS讨论了如何使用数据网格策略框架为组织制定和实施数据网格策略。通过使用数据网格策略框架,您可以优化团队的组织及其互动,从而加快数据网格之旅。

本文档提供了有关如何使用 Amazon 构建企业数据网格的指导 DataZone。Amazon DataZone 是一项数据管理服务,用于编目、发现、共享和管理存储在本地和第三方来源的数据。 AWS该模式包括代码工件,可帮助您使用和部署基于数据网格的数据解决方案基础架构。 AWS Cloud Development Kit (AWS CDK) AWS CloudFormation此模式适用于云架构师和 DevOps 工程师。

有关此模式的目标和解决方案范围的信息,请参阅 “其他信息” 部分。

先决条件和限制

先决条件

  • 至少有两个活跃账户 AWS 账户:一个用于中央治理账户,另一个用于成员账户

  • AWS 开发环境中中央治理账户的管理员凭证

  • AWS Command Line Interface (AWS CLI) 已安装,用于 AWS 服务 从命令行管理你的

  • 安装了 Node.js 和 Node Package Manager (npm) 来管理应用程序 AWS CDK

  • AWS CDK 使用 npm 在全球范围内安装工具包,用于合成和部署应用程序 AWS CDK

    npm install -g aws-cdk
  • 你的开发环境中安装了 Python 3.12 版本

  • TypeScript 安装在您的开发环境中或使用 npm 编译器全局安装:

    npm install -g typescript
  • 在你的开发环境中安装了 Docker

  • 使用版本控制系统(例如 Git)来维护解决方案的源代码(推荐)

  • 支持 Python 和(强烈推荐IDE)的集成开发环境 TypeScript () 或文本编辑器

限制

  • 该解决方案仅在运行 Linux 或 macOS 的计算机上进行了测试。

  • 在当前版本中,该解决方案不支持Amazon的集成 DataZone , AWS IAM Identity Center 默认情况下也是如此。但是,您可以将其配置为支持此集成。

产品版本

  • Python 版本 3.12

架构

下图显示了数据网格参考架构。该架构基于亚马逊,使用亚马逊 DataZone 简单存储服务 (Amazon S3) Simple Service AWS Glue Data Catalog 和作为数据源。根据贵组织的要求 AWS 服务 ,您在数据网格实施 DataZone 中与 Amazon 搭配使用的可能有所不同。

成员账户和中央治理账户的五步工作流程。
  1. 在生产者账户中,原始数据要么适合以当前形式使用,要么通过使用进行转换以供消费 AWS Glue。数据的技术元数据存储在 Amazon S3 中,并使用 AWS Glue 数据爬网程序进行评估。数据质量是使用AWS Glue 数据质量来衡量的。数据目录中的源数据库已注册为亚马逊 DataZone 目录中的资产。Amazon DataZone 目录使用亚马逊 DataZone 数据源任务托管在中央管理账户中。

  2. 中央管理账户托管亚马逊 DataZone 域名和亚马逊 DataZone 数据门户。数据生产者和使用者与 Amazon DataZone 域名相关联。 AWS 账户 数据生产者和消费者的亚马逊 DataZone 项目是在相应的亚马逊 DataZone 域名单位下组织的。

  3. 数据资产的最终用户使用其 AWS Identity and Access Management (IAM) 凭证或单点登录(通过 Ident IAM ity Center 集成)登录亚马逊 DataZone 数据门户。他们搜索、筛选和查看 Amazon 数据目录中的资产信息(例如,数据质量信息或业务和技术元 DataZone 数据)。

  4. 最终用户找到他们想要的数据资产后,他们会使用 Amazon DataZone 订阅功能来请求访问权限。创建者团队的数据所有者会收到通知,并在 Amazon DataZone 数据门户中评估订阅请求。数据所有者根据订阅请求的有效性批准或拒绝订阅请求。

  5. 在批准并完成订阅请求后,可以在消费者账户中访问该资产,用于以下活动:

    • 使用 Amazon 开发人工智能/机器学习模型 SageMaker

    • 使用亚马逊 Athena 和亚马逊进行分析和报告 QuickSight

工具

AWS 服务

  • Amazon Athena 是一项交互式查询服务,可帮助您使用标准直接分析亚马逊简单存储服务 (Amazon S3) 中的数据。SQL

  • AWS Cloud Development Kit (AWS CDK)是一个软件开发框架,可帮助您在代码中定义和配置 AWS Cloud 基础架构。

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

  • Amazon DataZone 是一项数据管理服务,可帮助您编目、发现、共享和管理存储在本地和第三方来源中的数据。 AWS

  • Amazon QuickSight 是一项云规模的商业智能 (BI) 服务,可帮助您在单个控制面板中可视化、分析和报告数据。

  • Amazon SageMaker 是一项托管机器学习 (ML) 服务,可帮助您构建和训练机器学习模型,然后将其部署到生产就绪的托管环境中。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • Amazon Simple Queue Service (AmazonSQS) 提供安全、耐用且可用的托管队列,可帮助您集成和分离分布式软件系统和组件。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

代码存储库

该解决方案可在 GitHub data-mesh-datazone-cdk-cloudformation 存储库中找到。

操作说明

任务描述所需技能

克隆存储库。

要克隆存储库,请在本地开发环境(Linux 或 macOS)中运行以下命令:

git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation
云架构师、 DevOps 工程师

创建环境。

要创建 Python 虚拟环境,请运行以下命令:

python3 -m venv .venv source .venv/bin/activate pip -r install requirements.txt
云架构师、 DevOps 工程师

引导账户。

要使用引导中央治理帐户 AWS CDK,请运行以下命令:

cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION>

登录 AWS Management Console,打开中央治理账户控制台,获取 AWS CDK 执行角色的 Amazon 资源名称 (ARN)。

云架构师、 DevOps 工程师

构造DzDataMeshMemberStackSet.yaml文件。

要从存储库的根目录中构造DzDataMeshMemberStackSet.yaml文件,请启动以下 bash 脚本:

./lib/scripts/create_dz_data_mesh_member_stack_set.sh
云架构师、 DevOps 工程师

确认模板创建。

确保 AWS CloudFormation 模板文件是在该lib/cfn-templates/DzDataMeshMemberStackSet.yaml位置创建的。

云架构师、 DevOps 工程师
任务描述所需技能

修改配置。

在该config/Config.ts文件中,修改以下参数:

DZ_APPLICATION_NAME - Name of the application. DZ_STAGE_NAME - Name of the stage. DZ_DOMAIN_NAME - Name of the Amazon DataZone domain DZ_DOMAIN_DESCRIPTION - Description of the Amazon DataZone domain DZ_DOMAIN_TAG - Tag of the Amazon DataZone domain DZ_ADMIN_PROJECT_NAME - Name of the Amazon DataZone project for administrators DZ_ADMIN_PROJECT_DESCRIPTION - Description of the Amazon DataZone project for administrators CDK_EXEC_ROLE_ARN - ARN of the cdk execution role DZ_ADMIN_ROLE_ARN - ARN of the administrator role

将其余参数留空。

云架构师、 DevOps 工程师

更新 Amazon DataZone 词汇表配置。

要更新lib/utils/glossary_config.json文件中的 Amazon DataZone 词汇表配置,请使用以下示例配置:

{ "GlossaryName": "PII Data", "GlossaryDescription": "If data source contains PII attributes", "GlossaryTerms": [{ "Name": "Yes", "ShortDescription": "Yes", "LongDescription": "Yes Glossary Term" }, { "Name": "No", "ShortDescription": "No", "LongDescription": "No Glossary Term" } ] }
云架构师、 DevOps 工程师

更新 Amazon DataZone 元数据表单配置。

要更新中的 Amazon DataZone 元数据表单配置lib/utils/metadata_form_config.json file,请使用以下示例配置:

{ "FormName": "ScheduleDataRefresh", "FormDescription": "Form for data refresh schedule", "FormSmithyModel": "@amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\nstructure ScheduleDataRefresh {\n @documentation(\"Schedule of Data Refresh\")\n @required\n @amazon.datazone#searchable\n @amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\n data_refresh_schedule: String\n}" }
云架构师、 DevOps 工程师

导出 AWS 凭证。

要将具有管理权限的IAM角色的 AWS 证书导出到您的开发环境中,请使用以下格式:

export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_SESSION_TOKEN=
云架构师、 DevOps 工程师

合成模板。

要合成 AWS CloudFormation 模板,请运行以下命令:

npx cdk synth
云架构师、 DevOps 工程师

部署解决方案。

要部署解决方案,请运行以下命令:

npx cdk deploy --all
云架构师、 DevOps 工程师
任务描述所需技能

部署 模板。

使用以下输入参数部署lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml位于成员账户中的 AWS CloudFormation 模板:

  • GovernanceAccountID− 治理账户的账户 ID

  • DataZoneKMSKeyID-用于加密 Amazon DataZone 元数据的 AWS Key Management Service (AWS KMS) 密钥的 ID

  • NotificationQueueName− 管理账户中的 Amazon SQS 通知队列的名称

云架构师、 DevOps 工程师

更新ARNs.

要更新成员账户的 AWS CloudFormation StackSet 执行角色ARNs列表,请使用以下代码:

DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST - List of Stack set execution role arns for the member accounts.
云架构师、 DevOps 工程师

合成并部署。

要合成 AWS CloudFormation 模板并部署解决方案,请运行以下命令:

npx cdk synth npx cdk deploy --all
云架构师、 DevOps 工程师

关联成员账户。

要将成员账户与中央治理账户关联,请执行以下操作:

  1. 登录中央治理账户的主机,然后在以下网址打开 Amazon DataZone 控制台https://console.aws.amazon.com/datazone/

  2. 选择您创建的域。

  3. 滚动至 “关联账户” 选项卡,然后选择 “请求关联”。

  4. 提供AWS账户 ID,然后选择AWSRAMPermissionDataZonePortalReadWriteRAM政策

  5. 选择 “请求关联”。

  6. 请等待,直到您收到一封电子邮件通知,告知您的帐户已成功启动。

云架构师、 DevOps 工程师

更新参数。

要更新配置文件中特定于成员账户的参数config/Config.ts,请使用以下格式:

export const DZ_MEMBER_ACCOUNT_CONFIG: memberAccountConfig = { '123456789012' : { PROJECT_NAME: 'TEST-PROJECT-123456789012', PROJECT_DESCRIPTION: 'TEST-PROJECT-123456789012', PROJECT_EMAIL: 'user@xyz.com' } }
云架构师、 DevOps 工程师

合成并部署模板。

要合成 AWS CloudFormation 模板并部署解决方案,请运行以下命令:

npx cdk synth npx cdk deploy --all
云架构师、 DevOps 工程师

添加成员账户。

要在数据解决方案中创建和配置其他成员帐户,请对每个成员帐户重复上述步骤。

该解决方案不区分数据生产者和消费者。

云架构师、 DevOps 工程师
任务描述所需技能

取消关联成员账户。

要取消关联账户,请执行以下操作:

  1. 登录控制台并打开 Amazon DataZone 控制台。

  2. 选择查看域名

  3. 选择您创建的域。

  4. 选择 “账户关联” 选项卡。

  5. 选择要取消关联的成员账户。

  6. 选择 “取消关联”,然后输入disassociate进行确认。

  7. 对所有成员账户重复步骤 3-6。

云架构师、 DevOps 工程师

删除堆栈实例。

要删除 AWS CloudFormation 堆栈实例,请执行以下操作:

  1. 打开 AWS CloudFormation 控制台,网址为https://console.aws.amazon.com/cloudformation/

  2. 在导航窗格中,选择StackSets

  3. 选择名为 StackSet-DataZone-DataMesh-Mem ber 的堆栈集,然后选择堆栈实例选项卡。

  4. 复制您要从成员资格中移除的成员账户的 AWS 账户 ID。 

  5. 选择 “操作”,选择 “从中删除堆栈” StackSet,然后保留默认选项。

  6. 账号字段中,输入账户 ID。 

  7. 在 “指定区域” 下拉列表中,选择 AWS 区域。 

  8. 选择 “下一步”,然后选择 “提交”。 

  9. 在 “操作” 选项卡上,确认操作已成功。删除堆栈可能需要一些时间。

  10. 对所有成员账户重复步骤 2-9。

云架构师、 DevOps 工程师

摧毁所有资源。

要销毁资源,请在本地开发环境(Linux 或 macOS)中执行以下步骤:

  1. 导航到存储库的根目录。 

  2. 导出用于创建 AWS CDK 堆栈的IAM角色的 AWS 证书。 

  3. 要销毁云资源,请运行以下命令:

    npx cdk destroy --all
云架构师、 DevOps 工程师

相关资源

其他信息

目标

实现此模式可实现以下效果:

  • 分散的数据所有权——将数据所有权从中央团队转移到代表组织源系统、业务部门或用例的团队。

  • 产品思维 − 在考虑组织中的数据资产时,引入一种基于产品的思维方式,包括客户、市场和其他因素。

  • 联合治理-改善组织数据产品的安全护栏、控制和合规性。

  • 多账户和多项目支持 − 支持组织各业务部门或项目之间高效、安全的数据共享和协作。

  • 集中监控和通知-使用 Amazon 监控数据网格的云资源 CloudWatch,并在关联新成员账户时通知用户。

  • 可扩展性和可扩展性 − 随着组织的发展,向数据网格中添加新的用例。

解决方案范围

使用此解决方案时,您可以从小规模开始,并随着数据网格之旅的进展进行扩展。通常,当成员账户采用数据解决方案时,它包含特定于组织、项目或业务部门的账户配置。该解决方案通过支持以下功能来适应这些不同的 AWS 账户 配置:

  • AWSGlue 数据目录作为亚马逊的数据源 DataZone

  • 管理 Amazon DataZone 数据域和相关数据门户

  • 管理在基于数据网格的数据解决方案中添加成员账户

  • Amazon DataZone 项目和环境的管理

  • 管理 Amazon DataZone 词汇表和元数据表单

  • 管理与基于数据网格的数据解决方案用户相对应的IAM角色

  • 通知基于数据网格的数据解决方案用户

  • 监控已配置的云基础架构

    该解决方案使用 AWS CDK 和 AWS CloudFormation 来部署云基础架构。它 AWS CloudFormation 用于执行以下操作:

    • 在较低的抽象级别上定义和部署云资源。

    • 部署来自的云资源 AWS Management Console。通过使用这种方法,您可以在没有开发环境的情况下部署基础架构。

    数据网格解决方案用于 AWS CDK 在更高的抽象级别上定义资源。因此,该解决方案通过选择相关工具来部署云资源,提供了一种解耦的、模块化和可扩展的方法。

后续步骤

您可以联系 AWS专家,获取有关使用 Amazon 构建数据网格的指导 DataZone。

该解决方案的模块化性质支持使用不同的架构(例如数据结构和数据湖)构建数据管理解决方案。此外,根据贵组织的要求,您可以将解决方案扩展到其他 Amazon DataZone 数据源。