使用 AWS 受管資料表儲存貯體 - Amazon Simple Storage Service

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

使用 AWS 受管資料表儲存貯體

AWS 受管資料表儲存貯體是專門的 Amazon S3 資料表儲存貯體,主要設計來儲存 AWS 受管資料表,例如 S3 Metadata 日誌和即時庫存資料表。與您直接建立和管理的客戶自管資料表儲存貯體不同之處在於,當您設定需要 AWS 受管資料表的功能時,AWS 會自動佈建 AWS 受管資料表儲存貯體。當建立受管資料表時,這些資料表是屬於根據來源儲存貯體名稱的預先定義的命名空間。此預先定義的命名空間無法修改。

遵循命名慣例 aws-s3,每個 AWS 帳戶 在每個區域都有一個 AWS 受管資料表儲存貯體。此儲存貯體可做為與該區域中帳戶資源相關聯的所有受管資料表的集中位置。

下表將 AWS 受管資料表儲存貯體與客戶自管資料表儲存貯體做比較。

功能 AWS 受管資料表儲存貯體 客戶自管資料表儲存貯體
建立 由 AWS 服務 自動建立 您可以手動建立這些
命名 使用標準命名慣例 (aws-s3) 您定義自己的名稱
資料表建立 只有 AWS 服務 可以建立資料表 您可以建立資料表
命名空間控制 您無法建立或刪除命名空間 (所有資料表都屬於固定命名空間) 您可以建立和刪除命名空間
存取 唯讀存取 完整存取
加密 只要使用客戶自管 AWS Key Management Service (AWS KMS) 金鑰加密初始資料表,您就可以變更預設加密 (SSE-S3) 設定 您可以設定儲存貯體層級的預設加密,並可隨時修改
維護 由 AWS 服務 管理 您可以在儲存貯體層級自訂自動化維護

使用 AWS 受管資料表儲存貯體和查詢資料表的許可權

若要使用 AWS 受管資料表儲存貯體,您需要許可權來建立 AWS 受管資料表儲存貯體和資料表,並指定 AWS 受管資料表的加密設定。您也需要查詢 AWS 受管資料表儲存貯體中的資料表的權限。

下列範例政策可讓您透過 S3 Metadata 組態來建立 AWS 受管資料表儲存貯體:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToWorkWithMetadataTables", "Effect":"Allow", "Action":[ "s3:CreateBucketMetadataTableConfiguration", "s3tables:CreateTableBucket", "s3tables:CreateNamespace", "s3tables:CreateTable", "s3tables:GetTable", "s3tables:PutTablePolicy" "s3tables:PutTableEncryption", "kms:DescribeKey" ], "Resource":[ "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

下列範例政策允許您查詢 AWS 受管資料表儲存貯體中的資料表:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PermissionsToQueryMetadataTables", "Effect":"Allow", "Action":[ "s3tables:GetTable", "s3tables:GetTableData", "s3tables:GetTableMetadataLocation", "kms:Decrypt" ], "Resource":[ "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3", "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

查詢 AWS 受管資料表儲存貯體中的資料表

您可以使用 S3 Tables 支援的存取方法和引擎,查詢 AWS 受管資料表儲存貯體中的 AWS 受管資料表。部分範例查詢如下。

Using standard SQL

下列範例示範如何使用標準 SQL 語法查詢 AWS 受管資料表:

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" LIMIT 10;

下列範例示範如何將 AWS 受管資料表與您自己的資料表聯結:

SELECT * FROM "s3tablescatalog/aws-s3"."b_amzn-s3-demo-source-bucket"."inventory" a JOIN "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" b ON a.key = b.key LIMIT 10;
Using Spark

下列範例示範如何使用 Spark 查詢資料表:

spark.sql(""" SELECT * FROM ice_catalog.inventory a JOIN ice_catalog.my_table b ON a.key = b.key """).show(10, true)

下列範例示範如何將 AWS 受管資料表與另一個資料表聯結:

SELECT * FROM inventory a JOIN my_table b ON a.key = b.key LIMIT 10;

為 AWS 受管資料表儲存貯體加密

依預設,AWS 受管資料表儲存貯體會使用 Amazon S3 受管金鑰 (SSE-S3) 藉由伺服器端加密來進行加密。建立 AWS 受管資料表儲存貯體之後,您可以使用 PutTableBucketEncryption 將儲存貯體的預設加密設定值,設定為使用具有 AWS Key Management Service(AWS KMS) 金鑰 (SSE-KMS) 的伺服器端加密。

在建立 AWS 受管中繼資料表期間,您可以選擇使用 SSE-KMS 為資料表加密。如果您選擇使用 SSE-KMS,則必須在與您的 AWS 受管資料表儲存貯體相同的區域中,提供客戶管理的 KMS 金鑰。您只能在建立資料表期間,為您的 AWS 受管資料表設定加密類型。建立 AWS 受管資料表後,您無法變更其加密設定。

如果您希望 AWS 受管資料表儲存貯體和儲存在其中的資料表,均使用相同的 KMS 金鑰,請務必在建立資料表儲存貯體後,使用與加密資料表相同的 KMS 金鑰來加密資料表儲存貯體。變更資料表儲存貯體的預設加密設定以使用 SSE-KMS 之後,這些加密設定會用於在儲存貯體中建立的任何未來資料表。