

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

# S3 資料表儲存貯體中的資料表
<a name="s3-tables-tables"></a>

S3 資料表代表由基礎資料表資料和相關中繼資料組成的結構化資料集。此資料會作為子資源儲存在資料表儲存貯體中。資料表儲存貯體中的所有資料表都會以 [Apache Iceberg](https://iceberg.apache.org/docs/latest/) 資料表格式儲存。Amazon S3 會透過自動檔案壓縮和快照管理來管理資料表的維護作業。如需詳細資訊，請參閱[資料表的維護](s3-tables-maintenance.md)。

若要讓 AWS 分析服務存取您帳戶中的資料表，您可以將 Amazon S3 資料表儲存貯體與 整合 AWS Glue Data Catalog。此整合可讓 Amazon Athena 和 Amazon Redshift 等 AWS 分析服務自動探索和存取您的資料表資料。

當您建立資料表時，Amazon S3 會自動產生資料表的倉儲位置。這是唯一的 S3 位置，可儲存與資料表相關聯的物件。下列範例顯示倉儲位置的格式：

```
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
```

在資料表儲存貯體中，您可以將資料表組織成稱為命名空間的邏輯分組。如需詳細資訊，請參閱[資料表命名空間](s3-tables-namespace.md)。

您可以重新命名資料表，但每個資料表都有自己的唯一 Amazon Resource Name (ARN) 和唯一資料表 ID。每個資料表也都有附加的資源政策。您可以使用此政策來管理對資料表的存取。

資料表 ARN 使用下列格式：

```
arn:aws:s3tables:region:owner-account-id:bucket/bucket-name/table/table-id
```

根據預設，您最多可以在資料表儲存貯體中建立 10，000 個資料表。若要請求提高資料表儲存貯體或資料表的配額，請聯絡 [支援](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)。

Amazon S3 支援資料表儲存貯體中的下列資料表類型：

**客戶資料表**  
客戶資料表是您可以讀取和寫入的資料表。您可以使用整合式查詢引擎，從這些資料表擷取資料。您可以使用 S3 API 操作或整合式查詢引擎，在其內插入、更新或刪除資料。

**AWS 資料表**  
AWS 資料表是由 AWS 服務 代表您產生的唯讀資料表。這些資料表是由 Amazon S3 管理，無法透過 Amazon S3 本身以外的任何 IAM 主體進行修改。您可以從這些資料表擷取資訊，但無法修改其中的資料。 AWS 資料表包含 S3 中繼資料表，其中包含從 S3 一般用途儲存貯體中的物件擷取的中繼資料。如需詳細資訊，請參閱[S3 Metadata 資料表探索您的資料](metadata-tables-overview.md)。

**Topics**
+ [建立 Amazon S3 資料表](s3-tables-create.md)
+ [刪除 Amazon S3 資料表](s3-tables-delete.md)
+ [檢視 Amazon S3 資料表的詳細資訊](s3-tables-table-details.md)
+ [管理資料表政策](s3-tables-table-policy.md)
+ [搭配 S3 資料表使用標籤](table-tagging.md)

# 建立 Amazon S3 資料表
<a name="s3-tables-create"></a>

Amazon S3 資料表是資料表儲存貯體的子資源。因為資料表以 Apache Iceberg 格式儲存，所以您可以透過使用查詢引擎和其他支援 Apache Iceberg 的應用程式來使用這些資料表。Amazon S3 會持續最佳化您的資料表，以協助降低儲存成本並提高分析查詢效能。

當您建立資料表時，Amazon S3 會自動產生資料表的*倉儲位置*。倉儲位置是唯一的 S3 位置，您可以在其中讀取和寫入與資料表相關聯的物件。下列範例顯示倉儲位置的格式：

```
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
```

資料表具有下列 Amazon Resource Name (ARN) 格式：

```
arn:aws:s3tables:region:owner-account-id:bucket/bucket-name/table/table-id
```

根據預設，您最多可以在資料表儲存貯體中建立 10，000 個資料表。若要請求提高資料表儲存貯體或資料表的配額，請聯絡 [支援](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)。

您可以使用連接至資料表儲存貯體的 Amazon S3 主控台、Amazon S3 REST API、 AWS SDKs、 AWS Command Line Interface (AWS CLI) 或查詢引擎來建立資料表。

建立資料表時，您可以指定該資料表的加密設定，除非是使用 Athena 建立資料表。如果未指定加密設定，則您會使用資料表儲存貯體的預設設定來加密資料表。如需詳細資訊，請參閱[指定資料表加密](s3-tables-kms-specify.md#specify-kms-table)。

**建立資料表的先決條件**

若要建立資料表，您必須先執行下列動作：
+ [建立資料表儲存貯體](s3-tables-buckets-create.md).
+ 資料表儲存貯體中的 [建立命名空間。](s3-tables-namespace-create.md)。
+ 請確定您具有 `s3tables:CreateTable`和 的 AWS Identity and Access Management (IAM) 許可`s3tables:PutTableData`。
+ 
**注意**  
如果您為資料表使用 SSE-KMS 加密，則需要 的許可`s3tables:PutTableEncryption`，以及所選 AWS KMS 金鑰的`DescribeKey`許可。此外，您使用的 AWS KMS 金鑰需要授予 S3 Tables 執行自動資料表維護的許可。如需詳細資訊，請參閱[S3 Tables SSE-KMS 加密的許可要求](s3-tables-kms-permissions.md)

如需有效資料表名稱的相關資訊，請參閱 [資料表和命名空間的命名規則](s3-tables-buckets-naming.md#naming-rules-table)。

**重要**  
建立資料表時，請務必在資料表名稱和資料表定義中，全部都使用小寫字母。例如，確定欄的名稱都小寫。如果您的資料表名稱或資料表定義包含大寫字母，則 AWS Lake Formation 或 不支援資料表 AWS Glue Data Catalog。在這種情況下，即使您的資料表儲存貯體與 AWS 分析服務整合，Amazon Athena 等 AWS 分析服務也看不到您的資料表。  
如果您的資料表定義包含大寫字母，您在 Athena 中執行 `SELECT` 查詢時會收到下列錯誤訊息："GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names."

## 使用 S3 主控台和 Amazon Athena
<a name="create-table-console"></a>

下列程序會使用 Amazon S3 主控台建立具有 Amazon Athena 的資料表。如果您尚未在資料表儲存貯體中建立命名空間，您可以在此程序中執行此操作。在執行下列步驟之前，請確定您已將資料表儲存貯體與此區域中的 AWS 分析服務整合在一起。如需詳細資訊，請參閱[將 Amazon S3 Tables 與 AWS 分析服務整合](s3-tables-integrating-aws.md)。

**注意**  
當您使用 Athena 建立資料表時，該資料表會從資料表儲存貯體繼承預設加密設定。如果您想要使用不同的加密類型，您需要使用其他方法建立資料表。

**若要建立資料表**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 在**資料表儲存貯體**頁面上，選擇要建立資料表的儲存貯體。

1. 在儲存貯體詳細資訊頁面上，選擇**使用 Athena 建立資料表**。

1. 在**使用 Athena 建立資料表**對話方塊中，執行下列其中一項操作：
   + 建立新命名空間。選擇**建立命名空間**，然後在**命名空間名稱**欄位中輸入名稱。命名空間名稱必須具有 1 到 255 個字元，而且在資料表儲存貯體中是唯一的。有效字元為 a-z、0-9 和 \$1 (`_`)。命名空間名稱開頭不得為底線。
   + 選擇 **Create namespace (建立命名空間)**。
   + 指定現有的命名空間。選擇**指定此資料表儲存貯體中的現有命名空間**。然後選擇**從現有命名空間中選擇**或**輸入現有命名空間名稱**。如果您的儲存貯體中有超過 1,000 個命名空間，而當命名空間名稱未出現在清單中時，您必須輸入命名空間名稱。

1. 選擇**使用 Athena 建立資料表**。

1. Amazon Athena 主控台隨即開啟，並顯示 Athena 查詢編輯器。**目錄**欄位應填入 **s3tablescatalog/**，後面接資料表儲存貯體的名稱，例如 **s3tablescatalog/*amzn-s3-demo-bucket***。**資料庫**欄位應填入您先前建立或選取的命名空間。
**注意**  
如果在**目錄**和**資料庫**欄位中沒有看到這些值，請確定您已將資料表儲存貯體與此區域中的 AWS 分析服務整合在一起。如需詳細資訊，請參閱[將 Amazon S3 Tables 與 AWS 分析服務整合](s3-tables-integrating-aws.md)。

1. 查詢編輯器會填入可用來建立資料表的查詢範例。修改查詢以指定您希望資料表擁有的資料表名稱和欄位。

1. 修改完查詢後，請選擇**執行**以建立資料表。
**注意**  
如果您嘗試在 Athena 中執行查詢時收到錯誤訊息：「執行查詢的權限不足。主體對指定資源沒有任何權限」，您必須獲得資料表上必要的 Lake Formation 許可權。如需詳細資訊，請參閱[授予資料表或資料庫的 Lake Formation 許可](grant-permissions-tables.md#grant-lf-table)。
如果您在嘗試在 Athena 中執行查詢時收到錯誤「Iceberg 無法存取請求的資源」，請前往 AWS Lake Formation 主控台，並確定您已授予自己所建立資料表儲存貯體目錄和資料庫 （命名空間） 的許可。授予這些許可權時，請勿指定資料表。如需詳細資訊，請參閱[授予資料表或資料庫的 Lake Formation 許可](grant-permissions-tables.md#grant-lf-table)。
如果您在 Athena 中執行 `SELECT` 查詢時收到下列錯誤訊息，而此訊息的肇因來自資料表名稱中有大寫字母，或資料表定義中有欄名稱："GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names." 請確定您的資料表和欄名稱都是小寫。

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

## 使用 AWS CLI
<a name="create-table-CLI"></a>

此範例示範如何使用 建立具有結構描述的資料表， AWS CLI 並透過 指定資料表中繼資料JSON。若要使用此範例，請以您自己的資訊取代 `user input placeholders`。

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

針對 `mytabledefinition.json` 檔案，使用下列範例資料表定義。若要使用此範例，請以您自己的資訊取代 `user input placeholders`。

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

## 使用查詢引擎
<a name="create-table-engine"></a>

您可以在連接到資料表儲存貯體的支援查詢引擎中建立資料表，例如在 Amazon EMR 的 Apache Spark 工作階段中。

下列範例示範如何透過使用 `CREATE` 陳述式，以 Spark 建立資料表，並透過使用 `INSERT` 陳述式或從現有檔案讀取資料，新增資料表資料。若要使用此範例，請以您自己的資訊取代 `user input placeholders`。

```
spark.sql( 
" CREATE TABLE IF NOT EXISTS s3tablesbucket.example_namespace.`example_table` ( 
    id INT, 
    name STRING, 
    value INT 
) 
USING iceberg "
)
```

建立資料表之後，您可以將資料載入資料表。請選擇下列其中一種方法：
+ 使用 `INSERT` 陳述式將資料新增至資料表。

  ```
  spark.sql(
  """
      INSERT INTO s3tablesbucket.my_namespace.my_table 
      VALUES 
          (1, 'ABC', 100), 
          (2, 'XYZ', 200)
  """)
  ```
+ 載入現有的資料檔案。

  1. 將資料讀取至 Spark：

     ```
     val data_file_location = "Path such as S3 URI to data file"
     val data_file = spark.read.parquet(data_file_location)
     ```

  1. 將資料寫入 Iceberg 資料表：

     ```
     data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()
     ```

# 刪除 Amazon S3 資料表
<a name="s3-tables-delete"></a>

您可以使用 Amazon S3 REST API、 AWS SDKs、 AWS Command Line Interface (AWS CLI) 或使用整合式查詢引擎來刪除資料表。

**注意**  
S3 Tables 不支援使用 `purge=false` 的 `DROP TABLE` 操作。即使執行 `DROP TABLE PURGE` 命令，部分 Apache Spark 的版本始終會將此旗標設定為 `false`。若要刪除資料表，您可以使用 `purge=true` 重試 `DROP TABLE`，或使用 S3 Tables [https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html) REST API 操作。

**重要**  
 刪除資料表時，您需要知道下列事項：  
刪除資料表是永久刪除，無法復原。刪除資料表之前，請確定您已備份或複寫任何重要的資料。
與資料表相關聯的所有資料和組態，都會永久移除。

## 使用 AWS CLI
<a name="delete-table-CLI"></a>

此範例說明如何使用 AWS CLI刪除資料表。若要使用此命令，請以您自己的資訊取代 `user input placeholders`。

```
aws s3tables delete-table \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
    --namespace example_namespace --name example_table
```

## 使用查詢引擎
<a name="create-table-namespace-engine"></a>

您可以在連線至 Amazon S3 資料表儲存貯體的 Apache Spark 工作階段中刪除資料表。

此範例說明如何使用 `DROP TABLE PURGE` 命令刪除資料表。若要使用此命令，請以您自己的資訊取代 `user input placeholders`。

```
spark.sql( 
" DROP TABLE [IF EXISTS] s3tablesbucket.example_namespace.example_table PURGE")
```

# 檢視 Amazon S3 資料表的詳細資訊
<a name="s3-tables-table-details"></a>

您可以在主控台，或以程式設計方式檢視資料表儲存貯體中資料表的一般詳細資訊，例如建立詳細資訊、格式和類型。您可以使用 S3 Tables REST API AWS CLI 或 AWS SDKs，以程式設計方式檢視資料表加密設定和維護設定。

## 檢視資料表詳細資訊
<a name="table-details-view"></a>

### 使用 AWS CLI
<a name="table-details-CLI"></a>

此範例示範如何使用 AWS CLI來取得資料表的詳細資訊。若要使用此範例，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables get-table --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket --namespace my-namespace --name my-table
```

### 使用 S3 主控台
<a name="table-details-console"></a>

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

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 選取您的資料表儲存貯體，然後選取您的資料表。

1. 選取**屬性**索引標籤。

1. (選用) 如需附加至資料表之許可政策的相關資訊，請選取**許可**。

## 預覽資料表資料
<a name="table-preview-data"></a>

### 使用 S3 主控台
<a name="table-preview-data-console"></a>

您可以使用下列程序，直接從 Amazon S3 主控台預覽資料表中的資料。

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

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 在**資料表儲存貯體**頁面上，選擇包含您要查詢之資料表的儲存貯體。

1. 選取您要預覽的資料表，然後選擇**預覽**。

**注意**  
預覽會顯示資料表的前 10 列和最多 25 欄。無法預覽超過 50mb 的資料表。

## 加密詳細資訊
<a name="table-encryption-view"></a>

如需有關資料表儲存貯體加密的詳細資訊，請參閱 [在資料表儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](s3-tables-kms-encryption.md)。

### 使用 AWS CLI
<a name="table-encryption-view-CLI"></a>

此範例示範如何使用 AWS CLI來取得資料表加密設定的詳細資訊。若要使用此範例，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables get-table-encryption --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket --namespace my-namespace --name my-table
```

## 維護詳細資訊
<a name="table-maintenance-view"></a>

如需維護設定的相關資訊，請參閱 [資料表儲存貯體的維護](s3-table-buckets-maintenance.md)。

### 使用 AWS CLI
<a name="table-maintenance-view-CLI"></a>

此範例示範如何使用 AWS CLI取得有關資料表維護組態設定的詳細資料。若要使用此範例，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables get-table-maintenance-configuration --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket --namespace my-namespace --name my-table
```

# 管理資料表政策
<a name="s3-tables-table-policy"></a>

您可以使用 Amazon S3 主控台、Amazon S3 REST API、 AWS SDK 和 來新增、刪除、更新和檢視資料表的資料表政策 AWS CLI。如需詳細資訊，請參閱下列主題。如需 Amazon S3 Tables 支援的 AWS Identity and Access Management (IAM) 動作和條件索引鍵的詳細資訊，請參閱 [S3 Tables 的存取管理](s3-tables-setting-up.md)。如需資料表政策的範例，請參閱[適用於 S3 Tables 的資源型政策](s3-tables-resource-based-policies.md)。

## 新增資料表政策
<a name="table-policy-add"></a>

若要將資料表政策新增至資料表，您可以使用 Amazon S3 REST API、 AWS SDK 和 AWS CLI。

### 使用 AWS CLI
<a name="table-policy-get-CLI"></a>

此範例說明如何使用 AWS CLI檢視連接到資料表的政策。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables get-table-policy \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1/table/tableID \
    --namespace my-namespace \
    --name my-table
```

### 使用 S3 主控台
<a name="table-policy-add-console"></a>

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

1. 在左側導覽窗格中，選擇 **Amazon S3**。

1. 選擇**資料表儲存貯體**，並選取包含資料表的資料表儲存貯體名稱，然後從該儲存貯體中選取資料表。

1. 選擇**許可**索引標籤。

1. 在**資料表政策**下，選擇**編輯**。

1. 在政策編輯器中，輸入您的政策 JSON。

1. (選用) 選擇**政策範例**，查看您可以根據需求調整的範例政策。

1. 輸入您的政策後，選擇**儲存變更**。

## 檢視資料表政策
<a name="table-policy-get"></a>

若要檢視連接至資料表的儲存貯體政策，您可以使用 Amazon S3 REST API、 AWS SDK 和 AWS CLI。

### 使用 AWS CLI
<a name="table-policy-get-CLI"></a>

此範例說明如何使用 AWS CLI檢視連接到資料表的政策。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables get-table-policy \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket  \
    --namespace my-namespace \
    --name my-table
```

### 使用 S3 主控台
<a name="get-policy-table-console"></a>

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

1. 在左側導覽窗格中，選擇 **Amazon S3**。

1. 選擇**資料表儲存貯體**，並選取包含資料表的資料表儲存貯體名稱，然後從該儲存貯體中選取資料表。

1. 選擇**許可**索引標籤。

## 刪除資料表政策
<a name="table-policy-delete"></a>

若要刪除連接到資料表的政策，您可以使用 Amazon S3 REST API、 AWS SDK 和 AWS CLI。

### 使用 AWS CLI
<a name="table-policy-delete-CLI"></a>

此範例說明如何使用 AWS CLI刪除資料表政策。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

```
aws s3tables delete-table-policy \
    --table-ARN arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
    --namespace your-namespace \
    --name your-table
```

### 使用 S3 主控台
<a name="table-policy-delete-console"></a>

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

1. 在左側導覽窗格中，選擇 **Amazon S3**。

1. 選擇**資料表儲存貯體**，並選取包含資料表的資料表儲存貯體名稱，然後從該儲存貯體中選取資料表。

1. 選擇**許可**索引標籤。

1. 在**資料表儲存貯體政策**下，選擇**刪除**。

# 搭配 S3 資料表使用標籤
<a name="table-tagging"></a>

 AWS 標籤是金鑰值對，可保留資源的中繼資料，在此情況下為 Amazon S3 資料表。您可以在建立 S3 資料表時為其加上標籤，或管理現有資料表上的標籤。如需有關標籤的一般資訊，請參閱 [成本分配或屬性型存取控制 (ABAC) 的標記](tagging.md)。

**注意**  
在超過標準 S3 API 請求率的資料表上使用標籤不會產生額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 搭配資料表使用標籤的常見方式
<a name="common-ways-to-use-tags-table"></a>

在 S3 資料表上使用標籤：

1. **成本分配** – 依資料表標籤追蹤儲存成本 AWS 帳單與成本管理。如需詳細資訊，請參閱[使用標籤分配成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-cost-allocation)。

1. **屬性型存取控制 (ABAC)** – 擴展存取許可，並根據其標籤授予對 S3 資料表的存取。如需詳細資訊，請參閱[使用標籤執行 ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac)。

**注意**  
您可以將相同的標籤同時用於成本分配和存取控制。

### S3 資料表的 ABAC
<a name="abac-for-tables"></a>

Amazon S3 資料表支援使用標籤的屬性型存取控制 (ABAC)。在您的 AWS 組織、 AWS Identity and Access Management (IAM) 和 S3 資料表政策中使用標籤型條件索引鍵。Amazon S3 中的 ABAC 支援跨多個 AWS 帳戶進行授權。

在 IAM 政策中，您可以使用`s3tables:TableBucketTag/tag-key`條件索引鍵或[AWS 全域條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) `aws:ResourceTag/key-name`、 `aws:RequestTag/key-name`或 ，根據資料表的標籤控制對 S3 資料表的存取`aws:TagKeys`。

#### aws：ResourceTag/key-name
<a name="table-condition-key-resource-tag"></a>

使用此條件索引鍵來比較您在政策中指定的標籤索引鍵/值對與連接至資源的索引鍵/值對。例如，您可以要求只有在資料表具有`Department`值為 的標籤索引鍵時，才允許存取資料表`Marketing`。

此條件索引鍵適用於使用 Amazon S3 主控台、命令列界面 AWS (CLI)、S3 APIs 或 AWS SDKs執行的資料表動作。

如需政策範例，請參閱 [1.1 - 使用標籤限制資料表操作的資料表政策](#example-policy-table-resource-tag)。

如需其他範例政策和詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。

**注意**  
對於在資料表上執行的動作，此條件索引鍵作用於套用至資料表的標籤，而非套用至包含資料表之資料表儲存貯體的標籤。如果您希望 ABAC 政策在執行資料表動作時對資料表儲存貯體的標籤採取行動，請`s3tables:TableBucketTag/tag-key`改用 。

#### aws：RequestTag/key-name
<a name="table-condition-key-request-tag"></a>

使用此條件索引鍵，將請求中傳遞的標籤索引鍵值對與您在政策中指定的標籤對進行比較。例如，您可以檢查標記資料表的請求是否包含標籤索引鍵，`Department`以及其是否具有值 `Accounting`。

此條件金鑰適用於在 `TagResource`或 `CreateTable` API 操作請求中傳遞標籤金鑰，或使用 Amazon S3 主控台、 AWS 命令列界面 (CLI) 或 SDKs 標記或 AWS 建立具有標籤的資料表。

如需政策範例，請參閱 [1.2 - 建立或修改具有特定標籤的資料表的 IAM 政策](#example-policy-table-request-tag)。

如需其他範例政策和詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[控制 AWS 請求期間的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)。

#### aws:TagKeys
<a name="table-condition-key-tag-keys"></a>

使用此條件索引鍵將請求中的標籤索引鍵與您在政策中指定的索引鍵進行比較，以定義允許存取的標籤索引鍵。例如，若要在`CreateTable`動作期間允許標記，您必須建立同時允許 `s3tables:TagResource`和 `s3tables:CreateTable`動作的政策。然後，您可以使用 `aws:TagKeys`條件金鑰來強制執行請求中僅使用特定標籤`CreateTable`。

此條件金鑰適用於在 `TagResource`、 `UntagResource`或 `CreateTable` API 操作中傳遞標籤金鑰，或使用 AWS 命令列界面 (CLI) 或 AWS SDKs 標記、取消標記或建立具有標籤的資料表。

如需政策範例，請參閱 [1.3 - IAM 政策，用於控制對維護標記控管之現有資源的標籤修改](#example-policy-table-tag-keys)。

如需其他範例政策和詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[根據標籤索引鍵控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。

#### s3tables：TableBucketTag/tag-key
<a name="table-bucket-tag-condition-key"></a>

使用此條件索引鍵，使用標籤將許可授予資料表儲存貯體中的特定資料。此條件索引鍵主要作用於所有 S3 資料表動作指派給資料表儲存貯體的標籤。即使您建立具有標籤的資料表，此條件索引鍵仍會作用於套用至包含該資料表之資料表儲存貯體的標籤。例外狀況如下：
+ 當您使用標籤建立資料表儲存貯體時，此條件索引鍵會作用於請求中的標籤。

如需政策範例，請參閱 [1.4 - 使用 s3tables：TableBucketTag 條件金鑰](#example-policy-table-bucket-tag-tables)。

#### 資料表的 ABAC 政策範例
<a name="example-table-abac-policies"></a>

請參閱下列 Amazon S3 資料表的 ABAC 政策範例。

**注意**  
如果您有根據委託人標籤限制 IAM 使用者和 IAM 角色的 IAM 或 S3 Tables 資源型政策，您必須將相同的委託人標籤連接至 Lake Formation 用來存取 Amazon S3 資料的 IAM 角色 （例如 LakeFormationDataAccessRole)，並授予此角色必要的許可。這是您的標籤型存取控制政策與 S3 Tables 分析整合搭配使用的必要條件。

##### 1.1 - 使用標籤限制資料表操作的資料表政策
<a name="example-policy-table-resource-tag"></a>

在此資料表政策中，指定的 IAM 主體 （使用者和角色） 只有在資料表`project`標籤的值符合主體`project`標籤的值時，才能執行`GetTable`動作。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGetTable",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3tables:GetTable",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/my_example_tab;e",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

##### 1.2 - 建立或修改具有特定標籤的資料表的 IAM 政策
<a name="example-policy-table-request-tag"></a>

在此 IAM 政策中，具有此政策的使用者或角色只有在資料表在資料表建立請求`Trinity`中以標籤索引鍵`project`和標籤值標記資料表時，才能建立 S3 資料表。只要`TagResource`請求包含標籤鍵/值對 ，他們也可以在現有的 S3 資料表上新增或修改標籤`project:Trinity`。此政策不會授予資料表或其物件的讀取、寫入或刪除許可。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateTableWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTable",
        "s3tables:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

##### 1.3 - IAM 政策，用於控制對維護標記控管之現有資源的標籤修改
<a name="example-policy-table-tag-keys"></a>

在此 IAM 政策中，只有在資料表標籤的值符合主體`project`標籤的值時，IAM 主體 （使用者或角色） 才能修改資料表上的`project`標籤。這些資料表只允許`aws:TagKeys`條件索引鍵中`cost-center`指定的四個標籤 `project` `environment``owner`、、 和 。這有助於強制執行標籤控管、防止未經授權的標籤修改，並使標籤結構描述在資料表中保持一致。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3tables:TagResource",
        "s3tables:UntagResource"
      ],
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/my_example_table",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

##### 1.4 - 使用 s3tables：TableBucketTag 條件金鑰
<a name="example-policy-table-bucket-tag-tables"></a>

在此 IAM 政策中，只有在資料表儲存貯體具有標籤索引鍵`Environment`和標籤值 時， 條件陳述式才允許存取資料表儲存貯體的資料`Production`。與`aws:ResourceTag/<tag-key>`條件索引鍵`s3tables:TableBucketTag/<tag-key>`不同，因為除了根據資料表儲存貯體的標籤控制對資料表儲存貯體的存取之外，它還允許您根據其父資料表儲存貯體上的標籤控制對資料表的存取。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificTables",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "s3tables:TableBucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## 管理資料表的標籤
<a name="table-working-with-tags"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (CLI)、 AWS SDKs 或使用 S3 APIs 來新增或管理 S3 資料表的標籤：[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) 和 [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)。如需詳細資訊，請參閱：

**Topics**
+ [搭配資料表使用標籤的常見方式](#common-ways-to-use-tags-table)
+ [管理資料表的標籤](#table-working-with-tags)
+ [使用標籤建立資料表](table-create-tag.md)
+ [將標籤新增至資料表](table-tag-add.md)
+ [檢視資料表標籤](table-tag-view.md)
+ [從資料表刪除標籤](table-tag-delete.md)

# 使用標籤建立資料表
<a name="table-create-tag"></a>

您可以在建立 Amazon S3 資料表時為其加上標籤。在超過標準 S3 API 請求率的資料表上使用標籤不會產生額外費用。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。如需標記資料表的詳細資訊，請參閱 [搭配 S3 資料表使用標籤](table-tagging.md)。

## 許可
<a name="table-create-tag-permissions"></a>

若要建立具有標籤的資料表，您必須具有下列許可：
+ `s3tables:CreateTable`
+ `s3tables:TagResource`

## 故障診斷錯誤
<a name="table-create-tag-troubleshooting"></a>

如果您在嘗試建立具有標籤的資料表時遇到錯誤，您可以執行下列動作：
+ 確認您擁有[許可](#table-create-tag-permissions)建立資料表並對其套用標籤所需的 。
+ 檢查您的 IAM 使用者政策是否具備任何屬性型存取控制 (ABAC) 條件。您的政策可能會要求您只使用特定的標籤索引鍵和值來標記資料表。如需 ABAC 和範例資料表 ABAC 政策的詳細資訊，請參閱適用於 [ S3 資料表的 ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/table-tagging.html#abac-for-tables)。

## 步驟
<a name="table-create-tag-steps"></a>

您可以使用 AWS Command Line Interface (AWS CLI)、Amazon S3 Tables REST API 和 AWS SDKs 建立具有套用標籤的資料表。

## 使用 REST API
<a name="table-create-tag-api"></a>

如需建立具有標籤之資料表的 Amazon S3 Tables REST API 支援的相關資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的下列章節：
+ [CreateTable](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_CreateTable.html)

## 使用 AWS CLI
<a name="table-create-tag-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例說明如何使用 建立具有標籤的資料表 AWS CLI。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

建立資料表時，您必須提供組態詳細資訊。如需詳細資訊，請參閱[建立 Amazon S3 資料表](s3-tables-create.md)。您也必須使用遵循資料表命名慣例的名稱來命名資料表。如需更多資訊，請參閱[Amazon S3 資料表儲存貯體、資料表和命名空間命名規則](s3-tables-buckets-naming.md)。

**要求:**

```
aws --region us-west-2 \
s3tables create-table \
--endpoint https://ufwae60e2k.execute-api.us-west-2.amazonaws.com/personal/ \
--table-bucket-arn arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket
--tags '{"Department":"Engineering"}' \
--name my_table_abc \
--namespace my_namesapce_123a \
--format ICEBERG
```

# 將標籤新增至資料表
<a name="table-tag-add"></a>



您可以將標籤新增至 Amazon S3 資料表，並修改這些標籤。如需標記資料表的詳細資訊，請參閱 [搭配 S3 資料表使用標籤](table-tagging.md)。

## 許可
<a name="table-tag-add-permissions"></a>

若要將標籤新增至資料表，您必須具有下列許可：
+ `s3tables:TagResource`

## 故障診斷錯誤
<a name="table-tag-add-troubleshooting"></a>

如果您在嘗試將標籤新增至資料表時遇到錯誤，您可以執行下列動作：
+ 確認您有將標籤[許可](#table-tag-add-permissions)新增至資料表所需的 。
+ 如果您嘗試新增以 AWS 預留字首 開頭的標籤金鑰`aws:`，請變更標籤金鑰，然後再試一次。
+ 標籤金鑰為必要項目。此外，請確定標籤索引鍵和標籤值不超過字元長度上限，而且不包含限制字元。如需詳細資訊，請參閱[成本分配或屬性型存取控制 (ABAC) 的標記](tagging.md)。

## 步驟
<a name="table-tag-add-steps"></a>

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (AWS CLI)、Amazon S3 Tables REST API 和 AWS SDKs，將標籤新增至資料表。

## 使用 S3 主控台
<a name="table-tag-add-console"></a>

若要使用 Amazon S3 主控台將標籤新增至資料表：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 選擇資料表儲存貯體名稱。

1. 選擇資料表名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，選擇**新增標籤**。

1. **新增標籤**頁面隨即開啟。您最多可以輸入 50 個鍵值對。

1. 若您使用與現有標籤相同的標籤鍵名稱來新增標籤，新標籤值會覆寫現有標籤值。

1. 在此頁面上，您也可以編輯現有標籤的值。

1. 新增標籤後，選擇**儲存變更**。

## 使用 REST API
<a name="table-tag-add-api"></a>

如需將標籤新增至資料表的 Amazon S3 REST API 支援相關資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的下列章節：
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_TagResource.html)

## 使用 AWS CLI
<a name="table-tag-add-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例示範如何使用 將標籤新增至資料表 AWS CLI。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws --region us-west-2 \ 
s3tables tag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table \
--tags '{"Department":"engineering"}'
```

# 檢視資料表標籤
<a name="table-tag-view"></a>

您可以檢視或列出套用至 Amazon S3 資料表的標籤。如需標籤的詳細資訊，請參閱[搭配 S3 資料表使用標籤](table-tagging.md)。

## 許可
<a name="table-tag-view-permissions"></a>

若要檢視套用至資料表的標籤，您必須具有下列許可：
+ `s3tables:ListTagsForResource`

## 故障診斷錯誤
<a name="table-tag-view-troubleshooting"></a>

如果您在嘗試列出或檢視資料表的標籤時遇到錯誤，您可以執行下列動作：
+ 確認您具有[許可](#table-tag-view-permissions)檢視或列出資料表標籤所需的 。

## 步驟
<a name="table-tag-view-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs 來檢視套用至資料表的標籤。

## 使用 S3 主控台
<a name="table-tag-view-console"></a>

若要使用 Amazon S3 主控台檢視套用至資料表的標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 選擇資料表儲存貯體名稱。

1. 選擇資料表儲存貯體中的資料表名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段以檢視套用至資料表的所有標籤。

1. **標籤**區段預設顯示**使用者定義的標籤**。您可以選取 **AWS產生的標籤**索引標籤，以檢視服務套用至資料表的標籤 AWS 。

## 使用 REST API
<a name="table-tag-view-api"></a>

如需檢視套用至資料表之標籤的 Amazon S3 REST API 支援相關資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的下列章節：
+ [ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_ListTagsForResource.html)

## 使用 AWS CLI
<a name="table-tag-view-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例說明如何檢視套用至資料表的標籤。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws --region us-west-2 \ 
s3tables list-tags-for-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table
```

# 從資料表刪除標籤
<a name="table-tag-delete"></a>

您可以從 Amazon S3 資料表移除標籤。如需標記資料表的詳細資訊，請參閱 [搭配 S3 資料表使用標籤](table-tagging.md)。

**注意**  
如果您刪除標籤，但後來發現它被用於追蹤成本或存取控制，您可以將該標籤新增回資料表。

## 許可
<a name="table-tag-delete-permissions"></a>

若要從資料表刪除標籤，您必須具有下列許可：
+ `s3tables:UntagResource`

## 故障診斷錯誤
<a name="table-tag-delete-troubleshooting"></a>

如果您在嘗試從資料表刪除標籤時遇到錯誤，您可以執行下列動作：
+ 確認您具有從資料表[許可](#table-tag-delete-permissions)刪除標籤所需的 。

## 步驟
<a name="table-tag-delete-steps"></a>

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、Amazon S3 Tables REST API 和 AWS SDKs 從資料表刪除標籤。

## 使用 S3 主控台
<a name="table-tag-delete-console"></a>

若要使用 Amazon S3 主控台從資料表刪除標籤：

1. 從 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 選擇資料表儲存貯體名稱。

1. 選擇資料表名稱。

1. 選擇**屬性**索引標籤。

1. 捲動至**標籤**區段，然後選取您要刪除的標籤旁的核取方塊。

1. 選擇 **刪除**。

1. **刪除使用者定義的標籤**快顯視窗隨即出現，並且要求您確認是否刪除您選取的標籤。

1. 選擇**刪除**以確認刪除。

## 使用 REST API
<a name="table-tag-delete-api"></a>

如需從資料表刪除標籤的 Amazon S3 REST API 支援相關資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的下列章節：
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_UntagResource.html)

## 使用 AWS CLI
<a name="table-tag-delete-cli"></a>

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例說明如何使用 從資料表中刪除標籤 AWS CLI。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**要求:**

```
aws --region us-west-2 \ 
s3tables untag-resource \
--resource-arn arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/table/my_example_table \
--tag-keys '["department"]'
```