

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

# 使用 AWS 受管資料表儲存貯體
<a name="s3-tables-aws-managed-buckets"></a>

AWS 受管資料表儲存貯體是專門的 Amazon S3 資料表儲存貯體，旨在存放 AWS 受管資料表，例如 [S3 中繼資料](metadata-tables-overview.md)日誌和即時庫存資料表。與直接建立和管理的客戶受管資料表儲存貯體不同，當您設定需要 AWS 受管資料表的功能 AWS 時， 會自動佈建 AWS 受管資料表儲存貯體。當建立受管資料表時，這些資料表是屬於根據來源儲存貯體名稱的預先定義命名空間。此預先定義的命名空間無法修改。

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

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


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

## 使用 AWS 受管資料表儲存貯體和查詢資料表的許可
<a name="aws-managed-buckets-permissions"></a>

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

下列範例政策可讓您透過 S3 中繼資料組態建立 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 受管資料表儲存貯體中的資料表
<a name="querying-tables-in-aws-managed-table-buckets"></a>

您可以使用 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 受管資料表儲存貯體的加密
<a name="aws-managed-buckets-encryption"></a>

根據預設， AWS 受管資料表儲存貯體會使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密。建立 AWS 受管資料表儲存貯體之後，您可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableBucketEncryption.html)將儲存貯體的預設加密設定設定為使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)。

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

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