管理各种环境中的数据可能是一项复杂的任务。透过 Amazon DataZone,用户能够轻松地对在 AWS、内部和第三方来源中储存的数据进行编目、发现、分享及治理。
许多组织管理著各个团队拥有的大量数据资产,这样的复杂生态系统对可扩展的数据管理构成挑战。这些组织需要一个强大的 IaC 解决方案来部署和管理他们的数据治理解决方案。在本篇文章中,我们将探讨如何使用 AWS Cloud Development Kit AWS CDK来部署 Amazon DataZone,达成无缝的数据治理。
通过与 AWS CDK 结合的 IaC,组织可以高效地部署和管理数据治理解决方案。此方法提供可扩展性、安全性及各团队之间无缝集成的机会,促进一致性和自动化部署。
AWS CDK 是用于定义云基础设施即代码的框架,并通过 AWS CloudFormation 进行资源配置。开发者可以使用任一支援的程式语言来定义可重用的云组件,称为 构建块。构建块是一个可重用的可编程组件,代表 AWS 资源。AWS CDK 将您定义的高级构建块转换为等效的 CloudFormation 模板,AWS CloudFormation 则根据模板提供指定的资源,简化了 AWS 上 IaC 的使用。
Amazon DataZone 的核心组件是建立全面的端到端数据管理和治理解决方案的基础部分。以下是 Amazon DataZone 的核心组件。更多详细信息,请参见 Amazon DataZone 的术语和概念。
组件描述Amazon DataZone 域用于组织资产、用户和项目,通过将其他 AWS 帐户与 Amazon DataZone 域关联,来整合数据来源。数据入口网站一个基于浏览器的应用程序,让不同用户能够以自助的方式编目、发现、治理、分享和分析数据。业务数据目录用于在整个组织内编目数据并提供业务上下文,使每个人能快速找到并理解数据。项目Amazon DataZone 中的业务用例组合,简化对 AWS 分析的访问。环境专案中的资源集合,供有特定 IAM 对应的用户运行。Amazon DataZone 数据源允许用户发布 AWS Glue 数据目录或 Amazon Redshift 数据源。发布和订阅工作流自动化流程可以确保数据在生成者和消费者之间安全传递,让组织内每个人都能访问适当的数据。我们将利用 AWS CDK 应用 来演示如何在 AWS 帐户中创建和部署 Amazon DataZone 的核心组件。以下图表显示了我们所创建的主要核心组件。
除了用 AWS CDK 部署的核心组件,我们还提供了一个自定义资源模组,用于创建 Amazon DataZone 的构件,例如 词汇表、词汇表术语 和 元数据表单,这些在撰写时尚不支援 AWS CDK 的构建块。
在开始之前,需要满足以下本地机器的先决条件:
拥有一个 AWS 帐户并启用 AWS IAM 身份中心。Bash 或 ZSH 终端。安装了 AWS 命令行介面 (AWS CLI) v2。可参见 安装指南。Python 版本 310 或更高版本。AWS SDK for Python 版本 13487 或更高版本。Node 版本 v1817 或更高版本。NPM 版本 v102 或更高版本。一个 AWS Glue 表作为 Amazon DataZone 项目的范例数据源。在本文中,我们希望从现有的 AWS Glue 数据库发布 AWS Glue 表。为此,您必须明确授予 Amazon DataZone 访问该 AWS Glue 数据库中表的许可。更多资讯请参见 为 Amazon DataZone 配置 Lake Formation 权限。
需要从 AWS Lake Formation 删除 IAMAllowedPrincipals 权限,这些权限是 Amazon DataZone 管理的表的许可。
确保在 Lake Formation 的数据目录设置中禁用预设权限。完成以下步骤以部署解决方案:
克隆 GitHub 仓库并进入下载的仓库资料夹的根目录:
bashgit clone https//githubcom/awssamples/amazondatazonecdkexamplegitcd amazondatazonecdkexample
安装本地依赖项:
bashnpm ci # 将根据 packagelockjson 安装相应的包
使用 AWS CLI 登入 AWS 帐户,并配置凭证文件用 替换为您的 AWS 帐户的配置文件名称:
bashexport AWSPROFILE=ltPROFILENAMEgt
引导 AWS CDK 环境这是一个一次性的操作,如果您的 AWS 帐户已经引导过则不需重复执行:
bashnpm run cdk bootstrap
运行脚本以替换配置文件中的 AWS 帐户和区域占位符:
bash/scripts/preparesh ltltYOURAWSACCOUNTIDgtgt ltltYOURAWSREGIONgtgt
上述命令将替换以下配置文件中的 AWSACCOUNTIDPLACEHOLDER 和 AWSREGIONPLACEHOLDER 值:
lib/config/projectconfigjsonlib/config/projectenvironmentconfigjsonlib/constantsts接下来,您将配置您的 Amazon DataZone 域、项目、业务词汇表、元数据表单和环境与您的数据源。
打开 lib/constantsts 文件。可以保留提供的 DOMAINNAME 或根据需要更新。打开 lib/config/projectconfigjson 文件。保留 projectName 和 projectDescription 的示例值或进行更新。示例中为 projectMembers 提供了一个示例值如下代码片段所示。用您选择的 IAM 角色 ARN 更新 memberIdentifier 参数,该角色将成为 此项目的拥有者:json projectMembers [ { memberIdentifier arnawsiamAWSACCOUNTIDPLACEHOLDERrole/Admin memberIdentifierType UserIdentifier } ]
打开 lib/config/projectglossaryconfigjson 文件。此文件为项目提供了一个业务词汇表和词汇术语示例;您可以保留原样或更新项目名称、业务词汇表及词汇术语。打开 lib/config/projectformconfigjson 文件。此文件提供的元数据表单示例可直接使用或根据项目名称及元数据表单进行更新。打开 lib/config/projectenvironmnentconfigjson 文件。用实际存在的 AWS Glue 数据库名称更新 EXISTINGGLUEDBNAMEPLACEHOLDER,该数据库必须与您在 AWS CDK 中部署 Amazon DataZone 核心组件的 AWS 帐户相同。确保在此 AWS Glue 数据库中至少有一个现有的 AWS Glue 表作为 Amazon DataZone 的数据源进行发布。将 DATASOURCENAMEPLACEHOLDER 和 DATASOURCEDESCRIPTIONPLACEHOLDER 替换为您选择的 Amazon DataZone 数据源名称和描述。提供了一个 cron 语法的示例时间表如下代码片段所示。这是数据源运行的时间设定,您可以保持不变或进行更新。json Schedule { schedule cron(0 7 ) }
接下来,您需要更新 AWS CDK 部署 IAM 角色的信任政策,以便部署自定义资源模组 (自定义资源模组)。
在 IAM 控制台中,按照 说明更新 IAM 角色的信任政策,该角色名称以 cdkhnb659fdscfnexecrole 开头,并添加以下许可。用您的特定 AWS 帐户和区域替换 {ACCOUNTID} 和 {REGION}。
json{ Effect Allow Principal { Service lambdaamazonawscom } Action stsAssumeRole Condition { ArnLike { awsSourceArn [ arnawslambda{REGION}{ACCOUNTID}functionDataZonePreqStackGlossaryLambda arnawslambda{REGION}{ACCOUNTID}functionDataZonePreqStackGlossaryTermLambda arnawslambda{REGION}{ACCOUNTID}functionDataZonePreqStackFormLambda ] } }}
现在您可以在 Lake Formation 中配置数据湖管理员。
在 Lake Formation 控制台中,选择导航栏中的“管理角色和任务”。在“数据湖管理员”下,选择“新增”,将以 cdkhnb659fdscfnexecrole 开头的 AWS CDK 部署 IAM 角色添加为管理员。此 IAM 角色需要在 Lake Formation 中拥有创建资源例如 AWS Glue 数据库的权限。否则,AWS CDK 堆栈部署将会失败。
部署解决方案:
bashnpm run cdk deploy all
在部署过程中,若希望对某些堆栈进行更改,请当提示“您是否希望部署这些更改 (y/n)?”时输入 y。
部署完成后,登录到您的 AWS 帐户并导航到 AWS CloudFormation 控制台,以验证基础架构是否已成功部署。您应该可以看到部署的 CloudFormation 堆栈列表,如下图所示。
在 AWS 帐户中打开 Amazon DataZone 控制台并访问您的域。打开摘要部分中的 数据入口网站 URL。

在数据入口网站中找到您的项目并运行 数据源任务。
这是一个单次活动,如果您希望立即在 Amazon DataZone 中发布并 搜索数据源。否则,请根据先前步骤中的 cron 语法等待数据源任务的运行。
如果您收到讯息 Domain name already exists under this account please use another one (Service DataZone Status Code 409 Request ID 2d054cb00fb7466fae04c53ff3c57c9a) (RequestToken 85ab4aa79e22c7e68f0080b5871e4bf7 HandlerErrorCode AlreadyExists),请更改 lib/constantsts 中的域名并重新尝试部署。
super加速器如果您收到 Resource of type AWSIAMRole with identifier CustomResourceProviderRole1 already exists (RequestToken 17a6384e7b0f03b31161198fb044464d HandlerErrorCode AlreadyExists),这意味著您不小心尝试在同一帐户中重新部署所有内容,但使用了不同的区域。请确保使用您初始部署所设置的区域。为简便起见,DataZonePreReqStack 位于同一帐户的单一区域中。
如果您在数据区域项目的数据资产上看到 “Unmanaged asset” Warning,您必须明确提供 Amazon DataZone 存取外部 AWS Glue 数据库中表的 Lake Formation 权限。详细资讯请参见 为 Amazon DataZone 配置 Lake Formation 权限。
为了避免将来产生费用,请删除资源。如果您已经使用 Amazon DataZone
全国咨询热线
Super加速器(中国)官方网站|Super加速器
联系电话:13594780123
联系人:李总
邮箱:sworn@mac.com
公司地址:邵武市清塑囚牢483号
微信扫一扫
手机官网