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

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

步骤 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 Spectrum 查询外部数据中的Amazon Redshift 数据库开发人员指南.

设置运行 Amazon Redshift 查询的权限

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。以您在中创建的 IAM 管理员用户身份登录创建 IAM 管理员用户(user namewAdministrator) 或者作为 IAM 用户使用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. 选择 Next:。标签

  14. 选择 Next:。审核

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

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

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

GRANTSelect对表的权限以在 Lake Formation 数据库中进行查询

  1. 通过 https://console.aws.amazon.com/lakeformation/ 中打开 Lake Formation 控制台。以数据湖管理员身份登录。

  2. 在导航窗格中的下Permissions (权限),选择数据湖权限(容量预留),然后选择Grant.

  3. 提供以下信息:

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

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

      表格列表随即填充。

    • 适用于,选择数据源中要查询的表。

    • 选择Select表权限。

  4. 选择 Grant(授权)。

设置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. Expand集群权限,对于可用的 IAM 角色,选择RedshiftLakeFormationRole. 然后选择 Add IAM role (添加 IAM 角色)

  7. 如果必须使用不同于默认值 5439 的端口,请在其他配置,关闭使用原定设置选项。展开部分数据库配置,然后输入一个新的数据库端口数字。

  8. 选择创建集群

    这些区域有:集群页面加载。

  9. 等到集群状态变成Available. 定期选择 “刷新” 图标。

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

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

    2. 在导航窗格中,选择用户,并将下面的托管策略附加到用户datalake_user.

      • AmazonRedshiftQueryEditor

      • AmazonRedshiftReadOnlyAccess

  11. 退出Amazon Redshift 控制台并以用户身份重新登录datalake_user.

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

    注意

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

  13. 新查询 1文本框中,输入并运行以下语句以映射数据库lakeformation_tutorial在 Lake Formation 中改为Amazon Redshift 模式名称redshift_jdbc

    重要

    Replace<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 行。

    现在,您可以对您具有相应权限的表和列运行查询。