第 12 步:使用 Amazon Redshift Spectrum 查询数据湖中的数据 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

第 12 步:使用 Amazon Redshift Spectrum 查询数据湖中的数据

您可以设置 Amazon Redshift Spectrum 以查询您导入到 Amazon Simple Storage Service (Amazon S3) 数据湖中的数据。首先,创建一个 Amazon Identity and Access Management (IAM) 角色,该角色用于启动 Amazon Redshift 集群和查询 Amazon S3 数据。然后,向该角色授予对您要查询的表的 Select 权限。然后,授予该用户使用 Amazon Redshift 查询编辑器的权限。最后,创建一个 Amazon Redshift 集群并运行查询。

您要以管理员身份创建集群,并以数据分析师的身份查询集群。

有关 Amazon Redshift Spectrum 的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的使用 Amazon Redshift Spectrum 查询外部数据

设置运行 Amazon Redshift 查询的权限
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。以您在中创建的管理员用户(用户名 Administrator)或使用 AdministratorAccess Amazon 托管策略的用户身份登录。

  2. 在导航窗格中,选择 Policies (策略)

    如果这是您首次选择 Policies,则会显示 Welcome to Managed Policies 页面。选择开始使用

  3. 选择 Create policy (创建策略)

  4. 请选择 JSON 选项卡。

  5. 粘贴以下 JSON 策略文档。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }
  6. 完成后,选择审核对策略进行审核。策略验证程序将报告任何语法错误。

  7. 查看策略页面上,输入 RedshiftLakeFormationPolicy 作为您要创建的策略的名称。输入描述(可选)。查看策略摘要以查看您的策略授予的权限。然后,选择创建策略以保存您的工作。

  8. 在 IAM 控制台的导航窗格中,选择 Roles,然后选择 Create role

  9. 对于选择可信实体,选择 Amazon 服务

  10. 选择 Amazon Redshift 服务来代入此角色。

  11. 为您的服务选择 Redshift Customizable (Redshift 可自定义)。然后选择 Next: Permissions (下一步:权限)

  12. 搜索刚创建的策略 RedshiftLakeFormationPolicy,然后在列表中选中该策略名称旁边的复选框。

  13. 请选择下一步:标签

  14. 请选择下一步:审核

  15. 对于角色名称,输入名称 RedshiftLakeFormationRole

  16. (可选)对于 Role description (角色描述),输入新角色的描述。

  17. 检查该角色,然后选择创建角色

授予对 Lake Formation 数据库中要查询的表的 Select 权限
  1. 通过 https://console.aws.amazon.com/lakeformation/ 中打开 Lake Formation 控制台。以数据湖管理员身份登录。

  2. 在导航窗格的权限下,选择数据湖权限,然后选择授权

  3. 提供以下信息:

    • 对于 IAM 用户和角色,选择您创建的 IAM 角色 RedshiftLakeFormationRole。运行 Amazon Redshift 查询编辑器时,它使用此 IAM 角色来获取数据权限。

    • 对于 Database (数据库),请选择 lakeformation_tutorial

      表列表即会填充。

    • 对于,选择数据来源中要查询的表。

    • 选择选择表权限。

  4. 选择授权

设置 Amazon Redshift Spectrum 并运行查询
  1. 通过以下网址打开 Amazon Redshift 控制台:https://console.amazonaws.cn/redshift。以用户 Administrator 的身份登录。

  2. 选择创建集群

  3. 创建集群页面上,输入 redshift-lakeformation-demo 作为集群标识符

  4. 对于节点类型,选择 dc2.large

  5. 向下滚动,在数据库配置下输入或接受以下参数:

    • 管理用户名称awsuser

    • 管理用户密码(Choose a password)

  6. 展开集群权限,对于可用的 IAM 角色,选择 RedshiftLakeFormationRole。然后选择 Add IAM role (添加 IAM 角色)

  7. 如果您必须使用的端口与默认值 5439 不同,请关闭其他配置旁边的使用默认值选项。展开数据库配置部分,然后输入新的数据库端口号

  8. 选择创建集群

    集群页面即会加载。

  9. 等待到集群状态变为可用。定期选择刷新图标。

  10. 向数据分析师授予对集群运行查询的权限。为此,请完成以下步骤。

    1. 通过网址 https://console.aws.amazon.com/iam/ 打开 IAM 控制台,然后以 Administrator 用户身份登录。

    2. 在导航窗格中,选择用户,然后选择将以下托管策略附加到用户 datalake_user

      • AmazonRedshiftQueryEditor

      • AmazonRedshiftReadOnlyAccess

  11. 退出 Amazon Redshift 控制台,然后以用户 datalake_user 身份重新登录。

  12. 在左侧垂直工具栏中,选择编辑器图标以打开查询编辑器并连接到集群。如果连接到数据库对话框出现,请选择集群名称 redshift-lakeformation-demo,然后输入数据库名称 dev、用户名 awsuser 和您创建的密码。然后,选择 Connect to database (连接到数据库)

    注意

    如果系统没有提示您输入连接参数,并且已经在查询编辑器中选择了另一个集群,请选择更改连接打开连接到数据库对话框。

  13. 新查询 1 文本框中,输入并运行以下语句以将 Lake Formation 中的数据库 lakeformation_tutorial 映射到 Amazon Redshift 架构名称 redshift_jdbc

    重要

    <account-id> 替换为有效的 Amazon 账户编号,并将 <region> 替换为有效的 Amazon 区域名称(例如,us-east-1)。

    create external schema if not exists redshift_jdbc from DATA CATALOG database 'lakeformation_tutorial' iam_role 'arn:aws:iam::<account-id>:role/RedshiftLakeFormationRole' region '<region>';
  14. 选择架构下的架构列表中,选择 redshift_jdbc

    表列表即会填充。查询编辑器仅显示您被授予了对其的 Lake Formation 数据湖权限的表。

  15. 在表名称旁边的弹出菜单中,选择预览数据

    Amazon Redshift 将返回前 10 行。

    现在,您可对您对其拥有权限的表和列运行查询。