随着时间的推移,各组织在创建专用的、基于云的数据湖上进行了大量投资,但这些数据湖通常是相互隔离的。一个主要的挑战是如何在这些建立在不同技术栈上的数据湖之间,实现跨组织的数据发现和访问。数据网格data mesh通过四个原则解决了这些问题:以领域为导向的去中心化数据所有权与架构、将数据视为产品、提供自助数据基础设施作为平台、以及实施联合治理。数据网格使组织能够围绕数据领域进行组织,专注于将数据作为产品进行交付。
2019年,大众汽车VW与亚马逊云服务AWS建立了战略合作关系,共同开发数字生产平台DPP,旨在将生产和物流效率提高30,同时降低生产成本。DPP旨在通过处理集成并提供标准化接口,简化来自生产车间设备和制造系统的数据访问。然而,随着平台上应用的演变,一个显著的挑战浮现:如何在多个独立的数据湖中共享存储的应用数据,而无需将数据集中到一个中央数据湖中。另一项挑战是发现存储在多个数据湖中的可用数据,并促进在每个工厂内跨业务领域请求数据访问的工作流。目前的方法主要依赖于电子邮件和一般沟通,这不仅增加了工作量,还在数据治理方面因用例不同而有所差异。这篇博客文章介绍了 Amazon DataZone,以及大众汽车如何利用其构建数据网格,以实现跨多个数据湖的数据访问的精简。文章重点讨论了解决方案的关键方面,即使数据提供者能够自动将数据资产发布到 Amazon DataZone,以此作为增强数据可发现性的中央数据网格。此外,文章提供了实施的代码指导。
Amazon DataZone 是一种数据管理服务,使客户能够更快、更轻松地编目、发现、共享和管理存储在 AWS、本地和第三方源的数据。Amazon DataZone 的主要特点包括一个业务数据目录,允许用户搜索已发布的数据、请求访问并在几天而不是几周内开始处理数据。Amazon DataZone项目使团队可以通过数据资产进行协作,并能够管理和监控跨项目的数据资产。它还包括 Amazon DataZone 门户,通过基于Web的应用程序或 API 提供个性化的分析体验。最后,Amazon DataZone 管理的数据共享确保正确的数据由正确的用户以正确的目的访问,且实现了管理工作流。
架构图图1表示了基于数据网格模式的高级设计。它将源系统、数据领域生产者数据发布者、数据领域消费者数据订阅者和中央治理分开,以突出关键方面。该跨账户数据网格架构旨在为数据平台创建一个可扩展的基础,以支持生产者和消费者的一致治理。
数据领域生产者位于一个 AWS 账户中,并使用 Amazon S3 存储原始和转换后的数据。生产者通过他们管理、所有和操作的管道将数据摄取到他们的 S3 存储桶中。他们负责数据的完整生命周期,从原始捕获到适合外部消费的形式。数据领域生产者使用 AWS Glue 维护自己的 ETL 栈,使用 AWS Lambda 进行处理,使用 AWS Glue Databrew 对数据进行分析并准备数据资产数据产品,然后将其编目到他们账户中的 AWS Glue 数据目录。另一种模式是数据领域生产者将数据资产准备并存储为 Amazon Redshift 中的表,使用 AWS S3 复制。数据领域生产者使用数据源运行将数据资产 发布到 Amazon DataZone 中的中央治理账户。这会填充每个数据资产的商业数据目录中的技术元数据。商业元数据可以由业务用户添加,以提供商业上下文、标签和数据分类。生产者控制共享内容、共享期限和消费者如何与其互动。生产者可以 注册 并 创建 来自他们所有 S3 桶的目录条目。在中央治理账户中,通过元数据链接,安全地在生产者与消费者之间共享数据集,除了日志之外,没有数据存在于此账户中。数据所有权仍归生产者所有。使用 Amazon DataZone,数据一旦编目并发布到 DataZone 域,就可以与多个消费者账户共享。Amazon DataZone 数据门户为用户提供个性化视图,以发现/搜索并提交数据资产的订阅请求,使用的是基于Web的应用程序。数据领域生产者会在数据门户中收到订阅请求的通知,并可以批准/拒绝这些请求。一旦获批,消费者账户可以读取并进一步处理数据资产,以实施各种用例,包括使用 AWS Lambda、AWS Glue、Amazon Athena、Amazon Redshift 查询编辑器 v2、Amazon QuickSight 分析用例和 Amazon Sagemaker 机器学习用例。要从生产者账户发布数据资产,必须分别将每个资产注册为 Amazon DataZone 的数据源供消费者订阅。 Amazon DataZone 用户指南 提供了详细步骤以实现此目标。在没有自动注册流程的情况下,所有必需的任务必须手动完成。
使用自动化注册工作流,可以自动处理需要在 Amazon DataZone 域 中发布的任何新数据资产,或者在已经发布的数据资产发生模式更改时。同样,自动化解决方案 可以减少将数据源AWS Glue 表发布到 Amazon DataZone 域中的重复手动操作。
自动化发布数据资产的步骤:
在生产者账户账户B中,待共享的数据存放在一个 Amazon S3 桶中图2。已为数据集配置 AWS Glue 爬虫,以使用 AWS 云开发工具包 (AWS CDK) 自动创建模式。配置完后,AWS Glue 爬虫会爬取 Amazon S3 桶并更新 AWS Glue 数据目录 中的元数据。AWS Glue 爬虫成功完成后,会在 Amazon EventBridge 的默认事件总线上生成一个事件。配置 EventBridge 规则以检测此事件并调用数据集注册的 AWS Lambda 函数。AWS Lambda 函数执行所有步骤,以自动注册并在 Amazon DataZone 中发布数据集。数据集注册 AWS Lambda 函数执行的步骤
AWS Lambda 函数从成功执行 AWS Glue 爬虫触发的 Amazon Eventbridge 事件中检索 AWS Glue 数据库和 Amazon S3 数据集的信息。它通过在中央治理账户中假设一个 IAM 角色,获取生产者账户中的 Amazon DataZone 数据湖蓝图 ID,以及 Amazon DataZone 域 ID 和项目 ID。它在生产者账户中启用 Amazon DataZone 数据湖蓝图。它检查 Amazon Datazone 环境是否已存在于 Amazon DataZone 项目中。如果不存在,则发起环境创建过程。如果环境存在,则继续下一步。它在生产者账户的 Lake Formation 中注册数据集的 Amazon S3 位置。函数在 Amazon DataZone 项目中创建一个数据源,并监控数据源创建的完成情况。最后,它检查是否需要在 Amazon DataZone 中启动数据源同步作业。如果创建或更新了新的 AWS Glue 表或元数据,则启动数据源同步作业。作为本解决方案的一部分,您需要将现有的 AWS Glue 数据库中的数据资产发布到 Amazon DataZone 域,因此需要执行以下前提条件。
您需要两个 AWS 账户 来部署该解决方案。一个 AWS 账户将作为数据领域生产者账户账户B,其中将包含待共享的 AWS Glue 数据集。第二个 AWS 账户是中央治理账户账户A,其中将部署 Amazon DataZone 域和项目。此账户是 Amazon DataZone 账户。确保这两个 AWS 账户属于同一 AWS 组织。
从使用 Amazon DataZone 管理权限的 AWS Lake Formation 表中移除 IAMAllowedPrincipals 权限。
确保在两个 AWS 账户中,您已在 Lake Formation 的数据目录设置中清除了新创建的数据库和表的默认权限复选框图3。登录到账户A中央治理账户,确保您已 创建 Amazon DataZone 域 和 域中的项目。如果您的 Amazon DataZone 域已使用 AWS 密钥管理服务 (KMS) 密钥进行加密,请将账户B生产者账户添加到 密钥策略,并授予以下操作:
json{ Sid Allow use of the key Effect Allow Principal { AWS arnawsiamltAccount Bgtroot } Action [ kmsEncrypt kmsDecrypt kmsReEncrypt kmsGenerateDataKey kmsDescribeKey ] Resource }
确保您已创建一个 AWS 身份与访问管理 (IAM) 角色,供账户B生产者账户假设,并且该 IAM 角色已 作为成员贡献者添加到您的 Amazon DataZone 项目。该角色应具备以下权限:

在本示例中,该 IAM 角色称为 dzassumableenvdatasetregistrationrole。添加此角色将使您能够成功运行 datasetregistration Lambda 函数。将以下策略中的 accountregion、account id 和 DataZonekmsKey 替换为您的信息。这些值与您的 Amazon DataZone 域的创建位置以及用于加密 Amazon DataZone 域的 AWS KMS 密钥的 Amazon 资源名称 (ARN) 相对应。
json{ Version 20121017 Statement [ { Action [ DataZoneCreateDataSource DataZoneCreateEnvironment DataZoneCreateEnvironmentProfile DataZoneGetDataSource DataZoneGetEnvironment DataZoneGetEnvironmentProfile DataZoneGetIamPortalLoginUrl DataZoneListDataSources DataZoneListDomains DataZoneListEnvironmentProfiles DataZoneListEnvironments DataZoneListProjectMemberships DataZoneListProjects DataZoneStartDataSourceRun ] Resource Effect Allow } { Action [ kmsDecrypt kmsDescribeKey kmsGenerateDataKey ] Resource arnawskms{accountregion}{accountid}key/{DataZonekmsKey} Effect Allow } ]}
在此角色的信任关系中,添加 AWS 账户,信任关系如下所示。将 ProducerAccountId 替换为账户B数据领域生产者账户的 AWS 账户 ID。
json{ Version 20121017 Statement [ { Effect Allow Principal { AWS [ arnawsiam{ProducerAccountId}root ] } Action stsAssumeRole } ]}
部署解决方案所需的工具如下:
Bash 或 ZSH 终端使用 Node Version Manager 的 Node 和 NPM
安装Node Version Manager (NVM)使用以下命令安装 Node 版本 18120bash nvm install 18120
node 和 npm 二进制文件现在应该可用
PythonAWS 命令行接口 (AWS CLI)AWS SDK for PythonAWS CDK在完成前提条件后,使用提供的 AWS CDK 堆栈在 GitHub 上部署自动注册数据资产到 DataZone 域的解决方案。
小熊加速器 官网使用以下命令将仓库从 GitHub 克隆到您首选的 IDE。
bashgit clone https//githubcom/awssamples/automateandsimplifyawsgluedataassetpublishtoamazondatazonegitcd automateandsimplifyawsgluedataassetpublishtoamazondatazone
在仓库文件的根目录下,运行以下命令以构建并将资源部署到 AWS。
bashnpm install npm run lint
使用您的配置文件名称登录到 AWS 账户 B数据领域生产者账户,通过 AWS 命令行接口。
确保您 在凭据配置文件中配置了 AWS 区域。使用以下命令在仓库根目录 引导 CDK 环境。将 ltPROFILENAMEgt 替换为您的部署账户账户 B的配置
NVIDIA GTC 2024:在AWS上加速生成AI的创新关键要点AWS 在 NVIDIA GTC 2024 上与超过18000名现场及267000名虚拟参与者分享了生成 AI 的最新突破。AWS 与 NVIDIA 的合作不断深入,并推出新一代 Blackwell GPU 平台,专注于高效运行大型...