從 Lake Formation 中的JDBC來源建立資料湖 - AWS Lake Formation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從 Lake Formation 中的JDBC來源建立資料湖

本教學課程會引導您完成在 AWS Lake Formation 主控台上執行的步驟,以使用 Lake Formation 從JDBC來源建立和載入第一個資料湖。

目標對象

下表列出本AWS Lake Formation JDBC教學課程 中使用的角色。

角色 描述
IAM 管理員 可以建立 AWS Identity and Access Management (IAM) 使用者和角色以及 Amazon Simple Storage Service (Amazon S3) 儲存貯體的使用者。具有 AdministratorAccess AWS 受管政策。
Data lake 管理員 可以存取 Data Catalog、建立資料庫,以及將 Lake Formation 許可授予其他使用者的使用者。IAM 許可少於IAM管理員,但足以管理資料湖。
資料分析 可針對資料湖執行查詢的使用者。僅具有足夠的許可來執行查詢。
工作流程角色 具有執行工作流程所需IAM政策的角色。

如需完成教學課程先決條件的相關資訊,請參閱 JDBC 教學課程先決條件

JDBC 教學課程先決條件

開始AWS Lake Formation JDBC教學課程 之前,請確定您已執行下列動作:

  • 完成 Lake Formation 入門 中的任務。

  • 在您要用於教學課程的JDBC可存取資料存放區上做出決定。

  • 收集建立 所需的資訊 AWS Glue 類型 的連線JDBC。此資料目錄物件包括URL資料存放區 的 、登入憑證,以及如果資料存放區是在 Amazon Virtual Private Cloud (AmazonVPC) 中建立的,則還包括其他 VPC特定的組態資訊。如需詳細資訊,請參閱中的定義連線 AWS GlueAWS Glue 開發人員指南 中的資料目錄

本教學課程假設您熟悉 AWS Identity and Access Management (IAM)。如需 的相關資訊IAM,請參閱 IAM 使用者指南

若要開始使用,請繼續 步驟 1:建立資料分析師使用者

步驟 1:建立資料分析師使用者

在此步驟中,您會建立 AWS Identity and Access Management (IAM) 使用者,作為 中資料湖的資料分析師 AWS Lake Formation。

此使用者具有查詢資料湖的最小許可集。

  1. 開啟位於 IAM 的 https://console.aws.amazon.com/iam 主控台。使用 AdministratorAccess AWS 受管政策,以您在 中建立的管理員使用者建立具有管理存取權的使用者或使用者身分登入。

  2. datalake_user 使用下列設定建立名為 的使用者:

    • 啟用 AWS Management Console 存取。

    • 設定密碼,不需要重設密碼。

    • 連接 AmazonAthenaFullAccess AWS 受管政策。

    • 連接下列內嵌政策。將政策命名為 DatalakeUserBasic

      { "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": "*" } ] }

步驟 2:在 中建立連線 AWS Glue

注意

如果您已有 ,請略過此步驟 AWS Glue 與JDBC資料來源的連線。

AWS Lake Formation 透過 存取JDBC資料來源 AWS Glue 連線 。連線是 Data Catalog 物件,其中包含連線至資料來源所需的所有資訊。您可以使用 建立連線 AWS Glue 主控台。

建立連線
  1. 開啟 AWS Glue 主控台https://console.aws.amazon.com/glue/,並以您在 中建立的管理員使用者身分登入建立具有管理存取權的使用者

  2. 在導覽窗格中,於 Data catalog ( Data Catalog ) 下選擇 Connections (連線)。

  3. Connectors (連接器) 頁面上,選擇 Create custom connector (建立自訂連接器)

  4. 連接器屬性頁面上,輸入 datalake-tutorial作為連線名稱,然後選擇 JDBC作為連線類型。然後選擇下一步

  5. 繼續進行連線精靈並儲存連線。

    如需建立連線的相關資訊,請參閱 AWS Glue 開發人員指南 中的AWS Glue JDBC連線屬性

步驟 3:為資料湖建立 Amazon S3 儲存貯體

在此步驟中,您會建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體,該儲存貯體將成為資料湖的根位置。

  1. 在 開啟 Amazon S3 主控台,https://console.aws.amazon.com/s3/並以您在 中建立的管理員使用者身分登入建立具有管理存取權的使用者

  2. 選擇建立儲存貯體 ,然後瀏覽精靈以建立名為 的儲存貯體<yourName>-datalake-tutorial,其中 <yourName> 是您的名字縮寫和姓氏。例如:jdoe-datalake-tutorial

    如需建立 Amazon S3 儲存貯體的詳細指示,請參閱 Amazon Simple Storage Service 使用者指南 中的如何建立 S3 儲存貯體?

步驟 4:註冊 Amazon S3 路徑

在此步驟中,您將 Amazon Simple Storage Service (Amazon S3) 路徑註冊為資料湖的根位置。

  1. 在 開啟 Lake Formation 主控台https://console.aws.amazon.com/lakeformation/。以資料湖管理員身分登入。

  2. 在導覽窗格中的管理 下,選擇 Data lake 位置

  3. 選擇註冊位置 ,然後選擇瀏覽

  4. 選取您先前建立的<yourName>-datalake-tutorial儲存貯體,接受預設IAM角色 AWSServiceRoleForLakeFormationDataAccess,然後選擇註冊位置

    如需註冊位置的詳細資訊,請參閱 將 Amazon S3 位置新增至您的資料湖

步驟 5:授予資料位置許可

主體必須在資料湖位置上具有資料位置許可,才能建立指向該位置的資料目錄資料表或資料庫。您必須授予工作流程IAM角色的資料位置許可,工作流程才能寫入資料擷取目的地。

  1. 在 Lake Formation 主控台的導覽窗格中,在許可 下,選擇資料位置

  2. 選擇授予 ,然後在授予許可對話方塊中執行下列動作:

    1. 針對IAM使用者和角色 ,選擇 LakeFormationWorkflowRole

    2. 針對儲存位置 ,選擇您的<yourName>-datalake-tutorial儲存貯體。

  3. 選擇 Grant (授予)。

如需資料位置許可的詳細資訊,請參閱 Underlying data access control

步驟 6:在 Data Catalog 中建立資料庫

Lake Formation Data Catalog 中的中繼資料資料表會儲存在資料庫中。

  1. 在 Lake Formation 主控台的導覽窗格中的資料目錄 下,選擇資料庫

  2. 選擇建立資料庫 ,然後在資料庫詳細資訊 下,輸入名稱 lakeformation_tutorial

  3. 將其他欄位保留空白,然後選擇建立資料庫

步驟 7:授予資料許可

您必須授予許可,才能在 Data Catalog 中建立中繼資料資料表。由於工作流程使用角色 執行LakeFormationWorkflowRole,您必須將這些許可授予角色。

  1. 在 Lake Formation 主控台的導覽窗格中,在許可 下,選擇 Data lake 許可

  2. 選擇授予 ,然後在授予資料許可對話方塊中,執行下列動作:

    1. 主體 下,針對IAM使用者和角色 ,選擇 LakeFormationWorkflowRole

    2. LF 標籤或目錄資源 下,選擇具名資料目錄資源

    3. 針對資料庫 ,選擇您先前建立的資料庫 lakeformation_tutorial

    4. 資料庫許可 下,選取建立資料表 修改 捨棄 ,並在選取時清除 Super

  3. 選擇 Grant (授予)。

如需授予 Lake Formation 許可的詳細資訊,請參閱 Lake Formation 許可權概述

步驟 8:使用藍圖建立工作流程

AWS Lake Formation 工作流程會產生 AWS Glue 任務、爬蟲程式和觸發程序,可探索資料並擷取資料至資料湖。您可以根據其中一個預先定義的 Lake Formation 藍圖建立工作流程。

  1. 在 Lake Formation 主控台的導覽窗格中,選擇藍圖 ,然後選擇使用藍圖

  2. 使用藍圖頁面上的藍圖類型 下,選擇資料庫快照

  3. 匯入來源 下,針對資料庫連線 ,選擇您剛建立的連線,datalake-tutorial或選擇資料來源的現有連線。

  4. 對於來源資料路徑 ,輸入要從中擷取資料的路徑,格式為 <database>/<schema>/<table>

    您可以用百分比 (%) 萬用字元取代結構描述或資料表。對於支援結構描述的資料庫,請輸入 <database>/<schema>/% 以符合 中的所有資料表 <schema> 在 內 <database>。 Oracle 資料庫和 MySQL 不支援路徑中的結構描述;而是輸入 <database>/%。 對於 Oracle 資料庫,<database> 是系統識別碼 (SID)。

    例如,如果 Oracle 資料庫以其 orcl為 SID,請輸入 orcl/% 以比對JDCB連線中指定的使用者可存取的所有資料表。

    重要

    此欄位會區分大小寫。

  5. 匯入目標 下,指定下列參數:

    目標資料庫 lakeformation_tutorial
    目標儲存位置 s3://<yourName>-datalake-tutorial
    資料格式 (選擇 Parquet 或 CSV)
  6. 針對匯入頻率,選擇隨需執行

  7. 匯入選項 下,指定下列參數:

    工作流程名稱 lakeformationjdbctest
    IAM 角色 LakeFormationWorkflowRole
    資料表字首 jdbctest
    注意

    必須是小寫。

  8. 選擇建立 ,然後等待主控台報告工作流程已成功建立。

    提示

    您是否收到下列錯誤訊息?

    User: arn:aws:iam::<account-id>:user/<datalake_administrator_user> is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole...

    如果是,請檢查是否已取代 <account-id> 在具有有效 AWS 帳戶號碼的資料湖管理員使用者的內嵌政策中。

步驟 9:執行工作流程

由於您指定工作流程為 run-on-demand,因此您必須在 中手動啟動工作流程 AWS Lake Formation。

  1. 在 Lake Formation 主控台的藍圖頁面上,選取工作流程 lakeformationjdbctest

  2. 選擇動作 ,然後選擇開始

  3. 當工作流程執行時,請在上次執行狀態欄中檢視其進度。偶爾選擇重新整理按鈕。

    狀態會從 RUNNING到探索 、 到匯入 、 到 COMPLETED

    當工作流程完成時:

    • Data Catalog 有新的中繼資料資料表。

    • 您的資料會擷取到資料湖中。

    如果工作流程失敗,請執行下列動作:

    1. 選取工作流程。選擇動作 ,然後選擇檢視圖形

      工作流程會在 中開啟 AWS Glue 主控台。

    2. 選取工作流程,然後選擇歷史記錄索引標籤。

    3. 選取最近的執行,然後選擇檢視執行詳細資訊

    4. 在動態 (執行時間) 圖形中選取失敗的任務或爬蟲程式,然後檢閱錯誤訊息。失敗的節點為紅色或黃色。

步驟 10:SELECT授予資料表

您必須授予 中新 Data Catalog 資料表的SELECT許可, AWS Lake Formation 資料分析師才能查詢資料表指向的資料。

注意

工作流程會自動將所建立資料表的SELECT許可授予執行該資料表的使用者。由於資料湖管理員執行此工作流程,您必須SELECT授予資料分析師。

  1. 在 Lake Formation 主控台的導覽窗格中,在許可 下,選擇 Data lake 許可

  2. 選擇授予 ,然後在授予資料許可對話方塊中,執行下列動作:

    1. 主體 下,針對IAM使用者和角色 ,選擇 datalake_user

    2. LF 標籤或目錄資源 下,選擇具名資料目錄資源

    3. 針對資料庫 ,選擇 lakeformation_tutorial

      資料表清單會填入 。

    4. 對於資料表 ,請從資料來源中選擇一或多個資料表。

    5. 資料表和資料欄許可 下,選擇選取

  3. 選擇 Grant (授予)。

下一個步驟會以資料分析師身分執行。

步驟 11:使用 查詢資料湖 Amazon Athena

使用 Amazon Athena 主控台查詢資料湖中的資料。

  1. 在 開啟 Athena 主控台https://console.aws.amazon.com/athena/,並以資料分析師身分登入使用者 datalake_user

  2. 如有必要,請選擇開始使用以繼續前往 Athena 查詢編輯器。

  3. 對於 Data source (資料來源),請選擇 AwsDataCatalog

  4. 針對 Database (資料庫),輸入 lakeformation_tutorial

    資料表清單會填入 。

  5. 在其中一個資料表旁的快顯功能表中,選擇預覽資料表

    查詢會執行並顯示 10 列資料。

步驟 12:使用 Amazon Redshift Spectrum 查詢資料湖中的資料

您可以設定 Amazon Redshift Spectrum 來查詢匯入 Amazon Simple Storage Service (Amazon S3) 資料湖的資料。首先,建立用於啟動 Amazon Redshift 叢集和查詢 Amazon S3 資料的 AWS Identity and Access Management (IAM) 角色。然後,在您要查詢的資料表上授予此角色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 AWS 受管政策的使用者身分登入。

  2. 在導覽窗格中,選擇政策

    如果這是您第一次選擇 Policies (政策),將會顯示 Welcome to Managed Policies (歡迎使用受管政策) 頁面。選擇 Get Started (開始使用)

  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. 完成時,選擇 Review (檢閱) 以檢閱該政策。政策驗證程式會回報任何語法錯誤。

  7. 檢閱政策頁面上,輸入您要建立RedshiftLakeFormationPolicy的政策名稱。輸入 Description (說明) (選用)。檢閱政策 Summary (摘要) 來查看您的政策所授予的許可。然後選擇 Create policy (建立政策) 來儲存您的工作。

  8. 在IAM主控台的導覽窗格中,選擇角色 ,然後選擇建立角色

  9. 對於 Select trusted entity (選取信任的實體) 區段,選擇 AWS service (AWS 服務)。

  10. 選擇 Amazon Redshift 服務以擔任此角色。

  11. 選擇服務的 Redshift Customizable (Redshift 可自訂) 使用案例。然後選擇下一步:許可

  12. 搜尋您建立的許可政策 RedshiftLakeFormationPolicy,然後選取清單中政策名稱旁的核取方塊。

  13. 選擇下一步:標籤

  14. 選擇下一步:檢閱

  15. Role name (角色名稱) 中,輸入名稱 RedshiftLakeFormationRole

  16. (選用) 在 Role description (角色說明) 中,輸入新角色的說明。

  17. 檢閱角色,然後選擇 Create role (建立角色)。

在 Lake Formation 資料庫中授予要查詢之資料表的Select許可
  1. 在 開啟 Lake Formation 主控台https://console.aws.amazon.com/lakeformation/。以資料湖管理員身分登入。

  2. 在導覽窗格中的許可 下,選擇 Data lake 許可 ,然後選擇授予

  3. 請提供下列資訊:

    • 針對IAM使用者和角色 ,選擇您建立IAM的角色 RedshiftLakeFormationRole。當您執行 Amazon Redshift 查詢編輯器時,它會使用此IAM角色來取得資料的許可。

    • 針對 Database (資料庫),輸入 lakeformation_tutorial

      表格清單會填入 。

    • 對於,選擇要查詢的資料來源中的資料表。

    • 選擇選取資料表許可。

  4. 選擇 Grant (授予)。

設定 Amazon Redshift Spectrum 並執行查詢
  1. 在 開啟 Amazon Redshift 主控台https://console.aws.amazon.com/redshift。以使用者 身分登入Administrator

  2. 選擇建立叢集

  3. 建立叢集頁面上,輸入 redshift-lakeformation-demo 以取得叢集識別符

  4. 針對節點類型 ,選取 dc2.large

  5. 向下捲動,然後在資料庫組態 下,輸入或接受下列參數:

    • 管理員使用者名稱awsuser

    • 管理使用者密碼(Choose a password)

  6. 展開叢集許可 ,對於可用IAM角色 ,請選擇 RedshiftLakeFormationRole。然後選擇新增IAM角色

  7. 如果您必須使用與預設值 5439 不同的連接埠,請在其他組態 旁關閉使用預設值選項。展開資料庫組態 的 區段,然後輸入新的資料庫連接埠號碼。

  8. 選擇建立叢集

    叢集頁面載入。

  9. 等待叢集狀態變為可用 。定期選擇重新整理圖示。

  10. 授予資料分析師針對叢集執行查詢的許可。若要這樣做,請完成下列步驟。

    1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/,並以Administrator使用者身分登入。

    2. 在導覽窗格中,選擇使用者 ,然後將下列受管政策連接至使用者 datalake_user

      • AmazonRedshiftQueryEditor

      • AmazonRedshiftReadOnlyAccess

  11. 登出 Amazon Redshift 主控台,並以使用者 身分重新登入datalake_user

  12. 在左側垂直工具列中,選擇 EDITOR 圖示以開啟查詢編輯器並連線至叢集。如果出現連線至資料庫對話方塊,請選擇叢集名稱 redshift-lakeformation-demo,然後輸入資料庫名稱 dev、使用者名稱 awsuser和您建立的密碼。選擇 Connect to database (連線至資料庫)

    注意

    如果未提示您輸入連線參數,且已在查詢編輯器中選取另一個叢集,請選擇變更連線以開啟連線至資料庫對話方塊。

  13. 新查詢 1 文字方塊中,輸入並執行下列陳述式,將 Lake Formation lakeformation_tutorial中的資料庫映射至 Amazon Redshift 結構描述名稱 redshift_jdbc

    重要

    Replace (取代) <account-id> 具有有效的 AWS 帳戶號碼,以及 <region> 具有有效的 AWS 區域名稱 (例如 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 列。

    您現在可以針對您擁有許可的資料表和資料欄執行查詢。

步驟 13:使用 Amazon Redshift Spectrum 授予或撤銷 Lake Formation 許可

Amazon Redshift 支援使用修改的SQL陳述式授予和撤銷資料庫和資料表的 Lake Formation 許可。這些陳述式類似於現有的 Amazon Redshift 陳述式。如需詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南REVOKE中的 GRANT和 。