教學課程:開始使用 S3 Tables - Amazon Simple Storage Service

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

教學課程:開始使用 S3 Tables

在本教學課程中,您會建立資料表儲存貯體,並將區域中的資料表儲存貯體與 AWS 分析服務整合。接著,您將使用 AWS CLI 在資料表儲存貯體中建立第一個命名空間和資料表。然後,您可以使用 AWS Lake Formation 授予資料表的許可,以便開始使用 Athena 查詢資料表。

提示

如果您要將表格式資料從一般用途儲存貯體移轉至資料表儲存貯體,在 AWS 解決方案程式庫中可找到引導式解決方案來協助您。此解決方案使用 Apache Iceberg和 Amazon EMR 搭配 ,自動將已註冊 AWS Glue Data Catalog 並存放在一般用途儲存貯體中的 Apache Hive AWS Step Functions 和 資料表移至資料表儲存貯體Apache Spark。如需詳細資訊,請參閱 AWS 解決方案程式庫中的將表格式資料從 Amazon S3 移轉至 S3 資料表的指引

步驟 1:建立資料表儲存貯體並將其與 AWS 分析服務整合

在此步驟中,您可以使用 Amazon S3 主控台來建立您的第一個資料表儲存貯體。如需建立資料表儲存貯體的其他方法,請參閱建立資料表儲存貯體

注意

根據預設,Amazon S3 主控台會自動整合您的資料表儲存貯體與 Amazon SageMaker Lakehouse,這可讓 AWS 分析服務自動探索和存取您的 S3 Tables 資料。如果您使用 AWS Command Line Interface (AWS CLI)、 AWS SDKs或 REST API,以程式設計方式建立第一個資料表儲存貯體,則必須手動完成 AWS 分析服務整合。如需詳細資訊,請參閱將 Amazon S3 Tables 與 AWS 分析服務整合

  1. 登入 AWS 管理主控台 ,並在 https://https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  2. 在頁面頂端的導覽列中,選擇目前顯示的名稱 AWS 區域。​接下來,選擇您要在其中建立資料表儲存貯體的區域。

  3. 在左側導覽窗格中,選擇資料表儲存貯體

  4. 選擇 建立資料表儲存貯體

  5. 一般組態下,輸入資料表儲存貯體的名稱。

    資料表儲存貯體名稱必須;

    • 對於目前區域中的 ,在 AWS 帳戶 中是唯一的。

    • 長度必須介於 3 與 63 個字元之間。

    • 只能由小寫字母、數字和連字號 (-) 組成。

    • 開頭和結尾為字母或數字。

    建立儲存貯體後,您無法變更其名稱。 AWS 帳戶 建立資料表儲存貯體的 擁有它。如需有關命名資料表儲存貯體的詳細資訊,請參閱 資料表儲存貯體命名規則

  6. 與 AWS 分析服務整合區段中,確定已選取啟用整合核取方塊。

    如果使用主控台建立第一個資料表儲存貯體時選取啟用整合,Amazon S3 會嘗試整合資料表儲存貯體與 AWS 分析服務。此整合可讓您使用 AWS 分析服務來存取目前區域中的所有資料表。如需詳細資訊,請參閱將 Amazon S3 Tables 與 AWS 分析服務整合

  7. 選擇建立儲存貯體

步驟 2:建立資料表命名空間和資料表

在此步驟中,您會在資料表儲存貯體中建立命名空間,然後在該命名空間下建立新的資料表。您可以使用主控台或 AWS CLI建立資料表命名空間和資料表。

重要

建立資料表時,請務必在資料表名稱和資料表定義中,全部都使用小寫字母。例如,確定欄的名稱都小寫。如果您的資料表名稱或資料表定義包含大寫字母,則 AWS Lake Formation 或 不支援資料表 AWS Glue Data Catalog。在這種情況下,即使您的資料表儲存貯體與 AWS 分析服務整合,Amazon Athena 等 AWS 分析服務也看不到您的資料表。

如果您的資料表定義包含大寫字母,您在 Athena 中執行 SELECT 查詢時會收到下列錯誤訊息:"GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names."

下列程序會使用 Amazon S3 主控台建立具有 Amazon Athena 的命名空間和資料表。

建立資料表命名空間和資料表
  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇資料表儲存貯體

  3. 資料表儲存貯體頁面上,選擇要在其中建立資料表的資料表儲存貯體。

  4. 在資料表儲存貯體詳細資訊頁面上,選擇使用 Athena 建立資料表

  5. 使用 Athena 建立資料表對話方塊中,選擇建立命名空間,然後在命名空間名稱欄位中輸入名稱。命名空間名稱必須具有 1 到 255 個字元,而且在資料表儲存貯體中是唯一的。有效字元為 a-z、0-9 和 _ (_)。命名空間名稱開頭不得為底線。

  6. 選擇 Create namespace (建立命名空間)

  7. 選擇使用 Athena 建立資料表

  8. Amazon Athena 主控台隨即開啟,並顯示 Athena 查詢編輯器。查詢編輯器會填入可用來建立資料表的查詢範例。修改查詢以指定您希望資料表擁有的資料表名稱和欄位。

  9. 修改完查詢後,請選擇執行以建立資料表。

如果您的資料表建立成功,新資料表的名稱會出現在 Athena 中的資料表清單中。當您導覽回到 Amazon S3 主控台時,新資料表會在重新整理清單後,出現在資料表儲存貯體的詳細資訊頁面上的資料表清單中。

若要使用下列 AWS CLI 範例命令在資料表儲存貯體中建立命名空間,然後在該命名空間下建立具有結構描述的新資料表,請將user input placeholder值取代為您自己的值。

先決條件
  1. 執行下列命令,在資料表儲存貯體中建立新的命名空間:

    aws s3tables create-namespace \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace
    1. 執行下列命令,確認成功建立您的命名空間:

      aws s3tables list-namespaces \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
  2. 執行以下命令,建立具資料表結構描述的新資料表。

    aws s3tables create-table --cli-input-json file://mytabledefinition.json

    針對 mytabledefinition.json 檔案,使用下列範例資料表定義:

    { "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "my_namespace", "name": "my_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"} ] } } } }

(選用) 步驟 3:授予資料表上的 Lake Formation 許可

在此步驟中,您會將新資料表的 Lake Formation 許可權授予其他 IAM 主體。這些許可權允許您以外的主體,使用 Athena 和其他 AWS 分析服務來存取資料表儲存貯體資源。如需詳細資訊,請參閱授予資料表或資料庫的 Lake Formation 許可。如果您是存取資料表的唯一使用者,則可略過此步驟。

  1. 在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/,並以資料湖管理員身分登入。如需有關如何建立資料湖管理員的詳細資訊,請參閱建立資料湖管理員

  2. 在導覽窗格中,選擇資料許可,然後選擇授予

  3. 授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選擇您允許在資料表上執行查詢的 IAM 使用者或角色。

  4. LF-標籤或型錄資源下,選擇已命名的的資料型錄資源

  5. 執行下列其中一項操作,取決於您是否要授予您帳戶中所有資料表的存取權,或是否只授予您建立之資料表儲存貯體內資源的存取權:

    • 針對目錄,選擇您在整合資料表儲存貯體時,所建立的帳戶層級目錄。例如 111122223333:s3tablescatalog

    • 針對目錄,選擇資料表儲存貯體的子目錄。例如 111122223333:s3tablescatalog/amzn-s3-demo-table-bucket

  6. (選用) 如果您選擇資料表儲存貯體的子目錄,請執行下列其中一項或兩項操作:

    • 針對資料庫,選擇您建立的資料表儲存貯體命名空間。

    • 針對資料表,選擇您在資料表儲存貯體中建立的資料表,或選擇所有資料表

  7. 根據您是否選擇目錄或子目錄,以及您是否接著選擇資料庫或資料表,您可以在目錄、資料庫或資料表層級設定許可權。如需有關 Lake Formation 許可的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的管理 Lake Formation 許可

    執行以下任意一項:

    • 針對目錄許可,選擇超級以授予其他主體您目錄上的所有許可權,或選擇更精細的許可權,例如描述

    • 對於資料庫許可,您無法選擇超級,將資料庫上的所有許可權授予其他主體。反之,請選擇更精細的許可權,例如描述

    • 針對資料表許可,選擇超級以授予其他主體資料表上的所有許可權,或選擇更精細的許可權,例如精選描述

      注意

      當您將 Data Catalog 資源的 Lake Formation 許可授予外部帳戶或直接授予另一個帳戶中的 IAM 主體時,Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果承授者帳戶與授予者帳戶位於相同的組織中,則承授者可立即使用共享資源。如果承授者帳戶不在同一個組織中, AWS RAM 會傳送邀請給承授者帳戶,以接受或拒絕資源授予。然後,若要提供共用資源,承授者帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 AWS CLI 接受邀請。如需有關跨帳戶資料共享的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的 Lake Formation 中的跨帳戶資料共享

  8. 選擇 Grant (授予)。

步驟 4:在 Athena 中使用 SQL 查詢資料

您可以在 Athena 中使用 SQL 查詢資料表。Athena 支援 S3 Tables 的資料定義語言 (DDL)、資料處理語言 (DML) 和資料查詢語言 (DQL) 查詢。

您可以從 Amazon S3 主控台或透過 Amazon Athena 主控台查詢。

下列程序使用 Amazon S3 主控台存取 Athena 查詢編輯器,讓您可以使用 Amazon Athena 查詢資料表。

查詢資料表
  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇資料表儲存貯體

  3. 資料表儲存貯體頁面上,選擇包含您要查詢之資料表的資料表儲存貯體。

  4. 在資料表儲存貯體詳細資訊頁面上,選擇您要查詢之資料表名稱旁的選項按鈕。

  5. 選擇使用 Athena 查詢資料表

  6. Amazon Athena 主控台隨即開啟,並顯示 Athena 查詢編輯器,其中提供為您載入的範例 SELECT 查詢。視需要為您的使用案例修改此查詢。

  7. 若要執行查詢,選擇 Run (執行)。

查詢資料表
  1. 前往 https://console.aws.amazon.com/athena/ 開啟 Athena 主控台。

  2. 查詢您的資料表。以下是您可以修改的範例查詢。請務必以您自己的資訊取代 user input placeholders

    SELECT * FROM "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" LIMIT 10
  3. 若要執行查詢,選擇 Run (執行)。