將 Amazon S3 Tables 與 AWS 分析服務整合 - Amazon Simple Storage Service

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

將 Amazon S3 Tables 與 AWS 分析服務整合

本主題涵蓋將您的 Amazon S3 資料表儲存貯體與 AWS 分析服務整合所需的先決條件和程序。如需整合運作方式的概觀,請參閱 S3 Tables 整合概觀

注意

此整合使用 AWS Glue 和 AWS Lake Formation 服務,並可能產生 AWS Glue 請求和儲存成本。如需詳細資訊,請參閱AWS Glue 定價

在 S3 資料表上執行查詢則採用另外的定價。如需詳細資訊,請參閱您正在使用的查詢引擎定價資訊。

整合的先決條件

整合資料表儲存貯體與 AWS 分析服務時需要下列先決條件:

重要

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

如果您的資料表定義包含大寫字母,您在 Athena 中執行SELECT查詢時會收到下列錯誤訊息:「GENERIC_INTERNAL_ERROR:取得資料表請求失敗:com.amazonaws.services.glue.model.ValidationException:不支援的聯合資源 - 無效的資料表或資料欄名稱。」

將資料表儲存貯體與 AWS 分析服務整合

此整合必須在每個 AWS 區域完成一次。

重要

AWS 分析服務整合現在使用 registerResource Lake Formation API 操作中的 WithPrivilegedAccess選項來註冊 S3 資料表儲存貯體。整合現在也會 AWS Glue Data Catalog 使用 CreateCatalog AWS Glue API 操作中的 AllowFullTableExternalDataAccess選項,在 中建立s3tablescatalog目錄。

如果您設定與預覽版本的整合,您可以繼續使用目前的整合。不過,更新的整合程序可提供效能改善,因此我們建議遷移。若要遷移至更新的整合,請參閱 遷移至更新的整合程序

  1. 開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

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

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

    建立資料表儲存貯體 頁面隨即開啟。

  4. 輸入資料表儲存貯體名稱,並確認已選取啟用整合核取方塊。

  5. 選擇 建立資料表儲存貯體。Amazon S3 將嘗試自動整合您在該區域中的資料表儲存貯體。

您第一次在任何區域中整合資料表儲存貯體時,Amazon S3 會代表您建立新的 IAM 服務角色。此角色允許 Lake Formation 存取您帳戶中的所有資料表儲存貯體,並在 AWS Glue Data Catalog中聯合存取您的資料表。

使用 整合資料表儲存貯體 AWS CLI

下列步驟說明如何使用 AWS CLI 來整合資料表儲存貯體。若要使用這些步驟,user input placeholders請以您自己的資訊取代 。

  1. 建立資料表儲存貯體。

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. 建立允許 Lake Formation 存取資料表資源的 IAM 服務角色。

    1. 建立名為 的檔案Role-Trust-Policy.json,其中包含下列信任政策:

      JSON

      使用下列命令建立 IAM 服務角色:

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. 建立名為 的檔案LF-GluePolicy.json,其中包含下列政策:

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }

      使用下列命令將政策連接至角色:

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. 建立名為 的檔案input.json,其中包含下列項目:

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }

    使用下列命令向 Lake Formation 註冊資料表儲存貯體:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. 建立名為 的檔案catalog.json,其中包含下列目錄:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }

    使用下列命令建立s3tablescatalog目錄。建立此目錄會將對應至資料表儲存貯體、命名空間和資料表的 AWS Glue Data Catalog 物件填入 。

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  5. AWS Glue 使用以下命令確認s3tablescatalog目錄已新增至 :

    aws glue get-catalog --catalog-id s3tablescatalog

AWS 分析服務整合程序已更新。如果您已設定與預覽版本的整合,您可以繼續使用目前的整合。不過,更新的整合程序可提供效能改善,因此我們建議您使用下列步驟進行遷移。如需遷移或整合程序的詳細資訊,請參閱《 開發人員指南》中的建立 Amazon S3 Tables 目錄 AWS Glue Data CatalogAWS Lake Formation

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

  2. 執行下列動作以刪除您的s3tablescatalog目錄:

    • 在左側導覽窗格中,選擇目錄

    • 選取目錄清單中s3tablescatalog目錄旁的選項按鈕。在操作功能表上,選擇刪除

  3. 執行下列動作,取消註冊s3tablescatalog目錄的資料位置:

    • 在左側導覽窗格中,前往管理區段,然後選擇資料湖位置

    • 選取s3tablescatalog資料湖位置旁的選項按鈕,例如 s3://tables:region:account-id:bucket/*

    • 動作功能表中,選擇移除

    • 在出現的確認對話方塊中,選擇移除

  4. 現在您已刪除s3tablescatalog目錄和資料湖位置,您可以依照步驟使用更新的整合程序,將資料表儲存貯體與 AWS 分析服務整合。

注意

如果您想要在整合式 AWS 分析服務中使用 SSE-KMS 加密資料表,您使用的角色需要具有許可,才能將 AWS KMS 金鑰用於加密操作。如需詳細資訊,請參閱 授予 IAM 主體在整合 AWS 分析服務中使用加密資料表的許可

整合 IAM 主體獲得存取資料表的 Lake Formation 許可後,如果您想要允許其他 IAM 主體存取資料表,您需要將資料表的 Lake Formation 許可授予這些主體。如需詳細資訊,請參閱使用 Lake Formation 管理對資料表或資料庫的存取