本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用视图
该功能为预览版,可能会发生变化。有关更多信息,请参阅 Amazon 服务条款 |
在中 Amazon Glue Data Catalog,视图是一个虚拟表,其中的内容由引用一个或多个表的查询定义。您可以使用适用于 Amazon Athena、Amazon Redshift 或 Amazon EMR 的 SQL 编辑器创建一个最多引用 10 个表的视图。视图的基础引用表可以属于同一数据库,也可以属于同一 Amazon Web Services 账户内的不同数据库。
SQL 是一种用于查询表的编程语言,每个 Amazon 分析引擎都使用自己的 SQL 变体或 SQL 方言。数据目录支持使用不同的 SQL 方言创建视图,前提是每种方言引用一组相同的表、列和数据类型。通过定义可从多个引擎查询的通用视图架构和元数据对象,数据目录视图使您能够在整个数据湖中使用统一视图。
在数据目录中管理视图时,您可以使用通过命名的资源方法或使用 LF-Tags Amazon Lake Formation 来授予细粒度的权限,并在 Amazon 组织和组织单位之间 Amazon Web Services 账户共享这些权限。您也可以跨 Amazon Web Services 区域共享数据目录视图。这允许用户在 Amazon Web Services 区域 不复制数据源的情况下提供跨数据访问权限。
有关跨账户数据共享和跨区域数据访问的更多信息,请参阅:
您可以使用数据目录视图执行以下操作:
-
创建和管理对单个视图架构的权限。这有助于避免对在多个引擎中创建的重复视图的权限存在不一致的风险。
向用户授予对引用多个表的视图的权限,而无需直接授予对基础引用表的权限。
有关限制,请参阅数据目录视图注意事项和限制。
创建视图的先决条件
-
要在数据目录中创建视图,您必须向 Lake Formation 注册引用表的基础 Amazon S3 数据位置。
有关向 Lake Formation 注册数据的详细信息,请参阅向数据湖添加 Amazon S3 位置。
-
视图定义者必须是 IAM 角色。其他 IAM 身份无法创建数据目录视图。
-
定义视图的 IAM 角色必须具有以下权限:
对所有引用表具有
Grantable
选项的完整SELECT
权限。Lake Formation 和 Amazon Glue 服务机构承担该角色的信任政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DataCatalogViewDefinerAssumeRole1", "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
目标: Amazon Glue 和 Lake Formation 的PassRole 许可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DataCatalogViewDefinerPassRole1", "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] } } } ] }
-
Amazon Glue 以及 Lake Formation 权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "Glue:GetDatabase", "Glue:GetDatabases", "Glue:CreateTable", "Glue:GetTable", "Glue:UpdateTable", "Glue:DeleteTable", "Glue:GetTables", "Glue:SearchTables", "Glue:BatchGetPartition", "Glue:GetPartitions", "Glue:GetPartition", "Glue:GetTableVersion", "Glue:GetTableVersions", "lakeFormation:GetDataAccess", "lakeFormation:GetTemporaryTableCredentials", "lakeFormation:GetTemporaryGlueTableCredentials", "lakeFormation:GetTemporaryUserCredentialsWithSAML" ], "Resource": "*" } ] }
-
如果要创建视图的数据库具有已向
IAMAllowedPrincipals
组授予的Super
或ALL
权限,则无法创建视图。要撤销IAMAllowedPrincipals
组对数据库的Super
权限,请参阅步骤 4:将数据存储切换到 Lake Formation 权限模型。如果现有数据湖设置不允许将
IAMAllowedPrincipals
组的CreateTableDefaultPermissions
设置为空,则可以创建新数据库并使用以下结构对数据湖设置进行编码。{ "DataLakeSettings": { "DataLakeAdmins": [ { "DataLakePrincipalIdentifier": "arn:aws:iam::
<AccountId>
:user/<Username>
" } ], CreateTableDefaultPermissions": [ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": [] } ] }
创建视图
您可以使用适用于 Athena、Amazon Redshift 或 Amazon EMR 的 SQL 编辑器在 Amazon Glue Data Catalog中创建视图。
有关用于创建和管理数据目录视图的语法的更多信息,请参阅:
《Amazon Redshift 数据库开发人员指南》中的在 Amazon Glue Data Catalog中创建视图。
创建数据目录视图后,该视图的详细信息将显示在 Lake Formation 控制台中。
在 Lake Formation 控制台中选择“数据目录”下的视图。
可用视图列表将显示在“视图”页面上。
从列表中选择一个视图,详细信息页面将显示该视图的属性。
- 架构
选择一个
Column
行,然后选择编辑 LF 标签,以更新标签值或分配新的 LF 标签。- SQL 定义
您可以查看可用 SQL 定义的列表。选择添加 SQL 定义,然后选择要添加 SQL 定义的查询引擎。在
Edit definition
列下选择查询引擎(Athena 或 Amazon Redshift)以更新 SQL 定义。- LF 标签
选择编辑 LF 标签以编辑标签的值或分配新标签。您可以使用 LF 标签来授予对视图的权限。
- 跨账户存取
-
您可以在 “数据目录” 视图中查看已共享的组织和组织单位 (OU) 的列表。 Amazon Web Services 账户
- 基础表
用于创建视图的 SQL 定义中引用的基础表显示在此选项卡下。
授予对数据目录视图的权限
创建视图后,您可以跨 Amazon Web Services 账户、Organizations 和组织单位向主体授予数据湖对视图的权限。有关授予权限的更多信息,请参阅 使用命名资源方法授予对视图的权限 。