本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Glue 数据目录视图(预览)
注意
Amazon 亚马逊 EMR 中的 Glue 数据目录视图为预览版,可能会发生变化。该功能作为 Amazon 服务条款
您可以在 Amazon Glue 数据目录中创建和管理单个常用视图。单个常用视图很有用,因为它们支持多个 SQL 查询引擎,因此您可以跨不同的视图访问相同的视图,例如亚马逊 EMR Amazon Web Services、Amazon Athena 和 Amazon Redshift。
通过在数据目录中创建视图,您可以在中使用资源授予和基于标签的访问控制 Amazon Lake Formation 来授予对数据目录视图的访问权限。使用这种访问控制方法,您无需为创建视图时引用的表配置其他访问权限。这种授予权限的方法称为定义者语义,这些视图称为定义者视图。有关 Lake Formati on 中访问控制的更多信息,请参阅授予和撤消数据目录资源的权限。 在《 Amazon Lake Formation 开发人员指南》中。
数据目录视图对以下用例非常有用:
-
精细访问控制-创建一个视图,根据用户所需的权限限制数据访问。例如,您可以使用 Data Catalog 中的视图来防止不在 HR 部门工作的员工查看个人身份信息 (PII)。
-
完整视图定义-通过对数据目录中的视图应用某些筛选器,可以确保数据目录中视图内的数据记录始终完整。
-
增强安全性-用于创建视图的查询定义必须完整。此优势意味着数据目录中的视图不易受到恶意玩家的 SQL 命令的影响。
-
简单共享数据 — Amazon Web Services 账户 无需移动任何数据即可与他人共享数据。有关更多信息,请参阅 La ke Formation 中的跨账户数据共享。
创建 Data Catalog 视图
重要
在此预览版中,Amazon EMR 不会验证您在创建视图时使用的 Spark-SQL。为了降低风险,我们建议您限制向其授予视图创建权限的用户。
要创建数据目录视图,您必须使用具有完全SELECT
权限的 IAM 角色,该角色具有创建视图时要引用的所有表的Grantable
选项。此角色称为定义者角色。有关创建数据目录视图所需的权限和先决条件的完整列表,请参阅《 Amazon Lake Formation 开发人员指南》中的使用视图。您必须使用 Amazon CLI 来配置您的 IAM 角色。有关更多信息,请参阅中的 Amazon CLI使用 IAM 角色。
按照以下步骤创建数据目录视图。
注意
要从 Amazon EMR 上的 Apache Spark 访问数据目录视图,您必须将方言设置为,并将方言设置SPARK
为。DialectVersion
3.4.1-amzn-2
-
首先下载预览模型。
aws s3 cp s3://emr-data-access-control-us-east-1/beta/glue-views/model/service-2.json
-
将配置 Amazon CLI 为使用预览模型。
aws configure add-model --service-model file:///
<path-to-preview-model>
/service-2.json --service-name glue-views -
创建视图。
aws glue-views create-table --cli-input-json '{ "DatabaseName": "<
database
>", "TableInput": { "Name": "<view
>", "StorageDescriptor": { "Columns": [ { "Name": "<col1
>", "Type": "<data-type
>" }, ... { "Name": "<colN
>", "Type": "<data-type
>" } ] }, "ViewDefinition": { "SubObjects": [ "arn:aws:glue:<aws-region;
>:<aws-account-id
>:table/<database
>/<referenced-table1
>", ... "arn:aws:glue:<aws-region
>:<aws-account-id
>:table/<database
>/<referenced-tableN
>", ], "IsProtected": true, "Representations": [ { "Dialect": "SPARK", "DialectVersion": "3.4.1-amzn-2", "ViewOriginalText": "<Spark-SQL
>", "ViewExpandedText": "<Spark-SQL
>" } ] } } }'
启用对数据目录视图的访问权限
重要
我们建议您仅允许在测试环境中使用 EMR 集群访问数据目录视图,而不要在生产环境中启用对数据目录视图的访问权限。
要在亚马逊 EMR 上通过 Apache Spark 访问数据目录视图,必须先启用对 Lake Formation 的支持,然后使用以下脚本启用对亚马逊 EMR 上使用 Spark 视图的支持。有关启用支持的更多信息,请参阅使用 Amazon EMR 启用 Lake Formation 和使用自定义引导操作。
# Download the script and upload it to Amazon S3 wget https://emr-data-access-control-us-east-1.s3.amazonaws.com/beta/glue-views/ba/enable-mdv.sh /Users/$USER/enable-mdv.sh aws s3 cp /Users/$USER/enable-views.sh s3://<
bucket
>/<prefix
>/enable-views.sh # EMR Security Configuration cat <<EOT > /Users/$USER/lakeformation-protection.json { "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true }, "LakeFormationConfiguration":{ "AuthorizedSessionTagValue":"Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://<BUCKET
>/<PREFIX
>/certificates.zip" } } } } EOT SECURITY_CONFIG="RuntimeRolesWithAWSLakeFormation" aws emr create-security-configuration \ --name $SECURITY_CONFIG \ --security-configuration file:///Users/$USER/lakeformation-protection.json # EMR Cluster version RELEASE_LABEL="emr-6.15.0"
然后使用以下使用引导操作的 Amazon CLI 命令创建支持数据目录视图的 EMR 集群。
aws emr create-cluster \ ... --release-label $RELEASE_LABEL \ --security-configuration $SECURITY_CONFIG \ --bootstrap-actions \ Name='Enable Views',Path="s3://<
bucket
>/<prefix
>/enable-views.sh"
查询 Data Catalog 视图
重要
在此预览版中,我们建议您仅访问来自可信来源的视图。在预览版中,Amazon EMR 的验证数量有限,可以保护您的 EMR 集群。
创建数据目录视图后,您现在可以使用 IAM 角色查询该视图。IAM 角色必须拥有数据目录视图的SELECT
权限。您无需授予对视图中引用的基础表的访问权限。您必须将此 IAM 角色用作运行时角色。您可以使用 Amazon EMR 步骤、EMR Studio 和 Studio 中的运行时角色从 EMR 集群访问视图。 SageMaker 有关运行时角色的更多信息,请参阅 Amazon EMR 步骤的运行时角色。
设置完所有内容后,就可以查询视图了。例如,在 EMR Studio 中将 EMR 集群连接到 Workspace 后,您可以运行以下查询来访问视图。
SELECT * from <database>.<glue-data-catalog-view> LIMIT 10
限制
使用数据目录视图时,请考虑以下限制。
-
您只能使用 Amazon EMR 6.15.0 创建数据目录视图。
-
在视图定义中,您最多只能引用 10 个表。
-
您只能创建
PROTECTED
数据目录视图。UNPROTECTED
不支持视图。 -
您不能在数据目录视图中引用其他视图 Amazon Web Services 账户 中的表。
-
不支持用户定义的函数 (UDF)。
-
你不能在数据目录视图中引用诸如 Apache Hudi 或 Apache Iceberg 之类的开放表格式。
-
您不能在数据目录视图中引用其他视图。