本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配使用 Amazon S3 Tables 與 AWS 分析服務
若要讓 AWS 分析服務存取您帳戶中的資料表,您可以將 Amazon S3 資料表儲存貯體與 Amazon SageMaker Lakehouse 整合。此整合可讓 AWS 分析服務自動探索和存取您的資料表資料。您可以使用此整合來使用這些服務中的資料表:
注意
此整合使用 AWS Glue 和 AWS Lake Formation 服務,並可能產生 AWS Glue 請求和儲存成本。如需詳細資訊,請參閱AWS Glue 定價
在 S3 資料表上執行查詢則採用另外的定價。如需詳細資訊,請參閱您正在使用的查詢引擎定價資訊。
整合的運作方式
當您在主控台中建立資料表儲存貯體時,Amazon S3 會啟動下列動作,以整合您所選區域中的資料表儲存貯體與 AWS 分析服務:
-
建立新的 AWS Identity and Access Management (IAM) 服務角色,讓 Lake Formation 存取您所有的資料表儲存貯體。
-
Lake Formation 會使用服務角色,在目前區域中註冊資料表儲存貯體。這可讓 Lake Formation 管理該區域中所有目前和未來資料表儲存貯體的存取、許可和管控。
-
將
s3tablescatalog
目錄新增至目前區域中 AWS Glue Data Catalog 的 。新增s3tablescatalog
目錄可讓所有資料表儲存貯體、命名空間和資料表填入資料目錄。
注意
這些動作會透過 Amazon S3 主控台自動化。如果您以程式設計方式執行此整合,則必須手動執行所有這些動作。
每個 AWS 區域整合資料表儲存貯體一次。整合完成後,所有目前和未來的資料表儲存貯體、命名空間和資料表都會新增至該區域中 AWS Glue Data Catalog 的 。
下圖顯示s3tablescatalog
目錄如何自動填入目前區域中的資料表儲存貯體、命名空間和資料表,做為資料目錄中的對應物件。資料表儲存貯體會填入為子目錄。資料表儲存貯體中的命名空間會填入其個別子目錄中的資料庫。資料表會作為其個別資料庫中的資料表填入。

許可的運作方式
我們建議您將資料表儲存貯體與 AWS 分析服務整合,以便跨使用 AWS Glue Data Catalog 做為中繼資料存放區的服務使用資料表資料。整合可透過 啟用精細存取控制 AWS Lake Formation。此安全方法表示,除了 AWS Identity and Access Management (IAM) 許可之外,您還必須在資料表上授予 IAM 主體 Lake Formation 許可,才能使用這些許可。
中有兩種主要類型的許可 AWS Lake Formation:
-
中繼資料存取許可控制在 Data Catalog 中建立、讀取、更新和刪除中繼資料資料庫和資料表的能力。
-
基礎資料存取許可控制將資料讀取和寫入資料目錄資源指向的基礎 Amazon S3 位置的能力。
Lake Formation 使用自己的許可模型和 IAM 許可模型的組合來控制對 Data Catalog 資源和基礎資料的存取:
-
若要請求存取 Data Catalog 資源或基礎資料以成功,請求必須同時通過 IAM 和 Lake Formation 的許可檢查。
-
IAM 許可控制對 Lake Formation 和 AWS Glue APIs存取,而 Lake Formation 許可控制對 Data Catalog 資源、Amazon S3 位置和基礎資料的存取。
Lake Formation 許可僅適用於授予許可的區域中,而且委託人必須由資料湖管理員或其他具有必要許可的委託人授權,才能授予 Lake Formation 許可。
如需詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的 Lake Formation 許可概觀。
請務必遵循 整合的先決條件和 中的步驟,將資料表儲存貯體與 AWS 分析服務整合以便您擁有適當的許可來存取 AWS Glue Data Catalog 和資料表資源,以及使用 AWS 分析服務。
重要
如果您不是為您的帳戶執行資料表儲存貯體與 AWS 分析服務整合的使用者,您必須獲得資料表上必要的 Lake Formation 許可。如需詳細資訊,請參閱授予資料表或資料庫的許可。
整合的先決條件
整合資料表儲存貯體與 AWS 分析服務時需要下列先決條件:
將 AWSLakeFormationDataAdmin AWS 受管政策連接至您的 AWS Identity and Access Management (IAM) 主體,讓該使用者成為資料湖管理員。如需如何建立資料湖管理員的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員。
-
將
glue:PassConnection
操作的許可新增至您的 IAM 主體。 -
將
lakeformation:RegisterResource
和lakeformation:RegisterResourceWithPrivilegedAccess
操作的許可新增至您的 IAM 主體。
重要
建立資料表時,請確定您在資料表名稱和資料表定義中使用所有小寫字母。例如,請確定您的資料欄名稱都是小寫。如果您的資料表名稱或資料表定義包含大寫字母,則 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
目錄。
如果您設定與預覽版本的整合,您可以繼續使用目前的整合。不過,更新的整合程序可提供效能改善,因此我們建議您進行遷移。若要遷移至更新的整合,請參閱 遷移至更新的整合程序。
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 在左側導覽窗格中,選擇資料表儲存貯體。
選擇 建立資料表儲存貯體。
建立資料表儲存貯體 頁面隨即開啟。
輸入資料表儲存貯體名稱,並確認已選取啟用整合核取方塊。
選擇 建立資料表儲存貯體。Amazon S3 將嘗試自動整合您在該區域中的資料表儲存貯體。
您第一次在任何區域中整合資料表儲存貯體時,Amazon S3 會代表您建立新的 IAM 服務角色。此角色允許 Lake Formation 存取您帳戶中的所有資料表儲存貯體,並在 AWS Glue Data Catalog中聯合存取您的資料表。
使用 整合資料表儲存貯體 AWS CLI
下列步驟說明如何使用 AWS CLI 來整合資料表儲存貯體。若要使用這些步驟,請將 取代
為您自己的資訊。user input placeholders
建立資料表儲存貯體。
aws s3tables create-table-bucket \ --region
us-east-1
\ --nameamzn-s3-demo-table-bucket
-
建立允許 Lake Formation 存取資料表資源的 IAM 服務角色。
-
建立名為 的檔案
Role-Trust-Policy.json
,其中包含下列信任政策:{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
" } } } ] }使用下列命令建立 IAM 服務角色:
aws iam create-role \ --role-name
S3TablesRoleForLakeFormation
\ --assume-role-policy-document file://Role-Trust-Policy.json
-
建立名為 的檔案
LF-GluePolicy.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
-
-
建立名為 的檔案
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
-
建立名為 的檔案
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
AWS Glue 使用以下命令確認
s3tablescatalog
目錄已新增至 :aws glue get-catalog --catalog-id s3tablescatalog
AWS 分析服務整合程序已更新。如果您已設定與預覽版本的整合,您可以繼續使用目前的整合。不過,更新的整合程序可提供效能改善,因此我們建議您使用下列步驟進行遷移。如需遷移或整合程序的詳細資訊,請參閱《 開發人員指南》中的建立 Amazon S3 資料表目錄 AWS Glue Data Catalog。 AWS Lake Formation
-
在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/
,並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員。 -
執行下列動作來刪除您的
s3tablescatalog
目錄:-
在左側導覽窗格中,選擇目錄。
-
選取目錄清單中
s3tablescatalog
目錄旁的選項按鈕。在操作功能表上,選擇刪除。
-
-
執行下列動作,取消註冊
s3tablescatalog
目錄的資料位置:-
在左側導覽窗格中,前往管理區段,然後選擇資料湖位置。
-
選取
s3tablescatalog
資料湖位置旁的選項按鈕,例如s3://tables:
。region
:account-id
:bucket/* -
在動作功能表中,選擇移除。
-
在出現的確認對話方塊中,選擇移除。
-
-
現在您已刪除
s3tablescatalog
目錄和資料湖位置,您可以依照步驟使用更新的整合程序,將資料表儲存貯體與 AWS 分析服務整合。
注意
如果您想要在整合式 AWS 分析服務中使用 SSE-KMS 加密資料表,您使用的角色需要具有許可,才能將 AWS KMS 金鑰用於加密操作。如需詳細資訊,請參閱 授予 IAM 主體在整合 AWS 分析服務中使用加密資料表的許可。
建立資料表命名空間的資源連結 (Amazon Data Firehose)
若要存取資料表,Amazon Data Firehose 需要以資料表命名空間為目標的資源連結。資源連結是資料目錄物件,可作為另一個資料目錄資源 (例如資料庫或資料表) 的別名或指標。連結會儲存在建立該連結之帳戶或區域的資料目錄中。如需詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的資源連結的運作方式。
將資料表儲存貯體與 AWS 分析服務整合後,您可以建立資源連結,以在 Amazon Data Firehose 中使用資料表。如需建立這些連結的詳細資訊,請參閱 使用 Amazon Data Firehose 將資料串流至資料表。
授予資料表資源的 Lake Formation 許可
將資料表儲存貯體與 AWS 分析服務整合後,Lake Formation 會管理對資料表資源的存取。Lake Formation 使用自己的許可模型 (Lake Formation 許可),為 Data Catalog 資源啟用精細存取控制。Lake Formation 需要授權每個 IAM 主體 (使用者或角色),才能對由 Lake Formation 管理的資源執行動作。如需詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的 Lake Formation 許可概觀。如需跨帳戶資料共用的資訊,請參閱《 AWS Lake Formation 開發人員指南》中的 Lake Formation 中的跨帳戶資料共用。
在 IAM 主體可以存取 AWS 分析服務中的資料表之前,您必須授予這些資源的 Lake Formation 許可。
注意
如果您是執行資料表儲存貯體整合的使用者,您已擁有資料表的 Lake Formation 許可。如果您是將存取資料表的唯一主體,您可以略過此步驟。您只需將資料表的 Lake Formation 許可授予其他 IAM 主體。這可讓其他主體在執行查詢時存取資料表。如需詳細資訊,請參閱授予資料表或資料庫的許可。
您必須授予資料表資源上的其他 IAM 主體 Lake Formation 許可,才能在下列服務中使用它們:
-
Amazon Redshift
-
Amazon Data Firehose
-
Amazon QuickSight
-
Amazon Athena
授予資料表或資料庫的許可
您可以透過 Lake Formation 主控台或 ,對資料表儲存貯體中的資料表或資料庫授予委託人 Lake Formation 許可 AWS CLI。
注意
當您將 Data Catalog 資源的 Lake Formation 許可授予外部帳戶或直接授予另一個帳戶中的 IAM 主體時,Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果承授者帳戶與承授者帳戶位於相同的組織中,則承授者可以立即使用共用資源。如果承授者帳戶不在同一個組織中, AWS RAM 會向承授者帳戶傳送邀請,以接受或拒絕資源授予。然後,若要提供共用資源,承授者帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 AWS CLI 接受邀請。如需跨帳戶資料共用的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的 Lake Formation 中的跨帳戶資料共用。