

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

# S3 Tables 的 VPC 連線能力
<a name="s3-tables-VPC"></a>

S3 Tables 中的所有資料表皆採用 Apache Iceberg 格式，而且是由兩種類型的 S3 物件組成。這兩種類型的物件是資料檔案，用於存放資料和中繼資料檔案，可追蹤資料檔案在不同時間點的資訊。所有資料表儲存貯體、命名空間和資料表操作 (例如 `CreateNamespace`、`CreateTable` 等) 都會透過 S3 Tables 端點 (`s3tables.region.amazonaws.com`) 路由，而讀取或寫入資料和中繼資料檔案的所有物件層級操作都會繼續透過 S3 服務端點 (`s3.region.amazonaws.com`) 路由。

若要存取 S3 Tables，Amazon S3 使用 AWS PrivateLink閘道端點和介面端點支援兩種類型的 VPC 端點。閘道端點是您在路由表中指定的閘道，可透過 AWS 網路從 VPC 存取 S3。介面端點使用私有 IP 位址，將請求從您的 VPC 內部、內部部署或使用 VPC 對等互連或 AWS Transit Gateway在其他 AWS 區域 的 VPC 路由至 Amazon S3，來擴展閘道端點的功能。

若要從 VPC 存取 S3 Tables，建議您建立兩個 VPC 端點 (一個用於 S3，另一個用於 S3 Tables)。您可以建立閘道或介面端點，將檔案 (物件) 層級操作路由至 S3，以及建立介面端點，將儲存貯體和資料表層級操作路由至 S3 Tables。您可以使用 S3，為檔案層級請求建立和使用 VPC 端點。如需詳細資訊，請參閱《AWS PrivateLink 使用者指南》**中的[閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。

若要進一步了解如何使用 AWS PrivateLink 來建立和使用 S3 Tables 的端點，請參閱下列主題。如要建立 VPC 介面端點，請參閱《*AWS PrivateLink 指南*》中的[建立 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

**Topics**
+ [為 S3 Tables 建立 VPC 端點](#s3-tables-endpoints)
+ [使用 透過端點存取資料表儲存貯體和資料表 AWS CLI](#s3-tables-endpoints-cli-sdks)
+ [在使用查詢引擎時設定 VPC 網路](#s3-tables-query-engine)
+ [使用雙堆疊端點存取資料表和資料表儲存貯體](#s3-tables-dual-stack-endpoints)
+ [限制對 VPC 網路內對 S3 Tables 的存取](#s3-tables-VPC-policy)

## 為 S3 Tables 建立 VPC 端點
<a name="s3-tables-endpoints"></a>

在您建立介面 VPC 端點時，S3 Tables 會產生兩種類型的端點特定 DNS 名稱：區域和地區。
+ 區域 DNS 名稱的格式如下：`VPCendpointID.s3tables.AWSregion.vpce.amazonaws.com`。例如，針對 VPC 端點 ID `vpce-1a2b3c4d`，產生的 DNS 名稱將類似於 `vpce-1a2b3c4d-5e6f.s3tables.us-east-1.vpce.amazonaws.com`。
+ 地區 DNS 名稱的格式如下：`VPCendpointID-AvailabilityZone.s3tables.AWSregion.vpce.amazonaws.com`。例如，針對 VPC 端點 ID `vpce-1a2b3c4d-5e6f.`，產生的 DNS 名稱將類似於 `vpce-1a2b3c4d-5e6f-us-east-1a.s3tables.us-east-1.vpce.amazonaws.com`。

   地區 DNS 名稱包含您的可用地區。如果您的架構會隔離可用區域，則可以使用地區 DNS 名稱。您可以從 S3 公有 DNS 網域解析端點特定 S3 DNS 名稱。

您還可以使用私有 DNS 選項來簡化透過 VPC 端點的 S3 流量路由，並協助您利用適用於應用程式的成本最低網路路徑。私有 DNS 會將 S3 Tables 的公有端點 (例如 `s3tables.region.amazonaws.com`)，對應至 VPC 中的私有 IP。您可以使用私有 DNS 選項來路由區域 S3 流量，而無需更新 S3 用戶端，以使用介面端點的端點特定 DNS 名稱。

## 使用 透過端點存取資料表儲存貯體和資料表 AWS CLI
<a name="s3-tables-endpoints-cli-sdks"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 透過介面端點存取資料表儲存貯體和資料表。透過 AWS CLI， `aws s3`命令會透過 Amazon S3 端點路由流量。`aws s3tables` AWS CLI 命令使用 Amazon S3 Tables 端點。

`s3tables` VPC 端點的範例為 `vpce-0123456afghjipljw-nmopsqea.s3tables.region.vpce.amazonaws.com`

`s3tables` VPC 端點不包含儲存貯體名稱。您可以使用 `aws s3tables` AWS CLI 命令存取 `s3tables` VPC 端點。

`s3` VPC 端點的範例為 `amzn-s3-demo-bucket.vpce-0123456afghjipljw-nmopsqea.s3.region.vpce.amazonaws.com`

您可以使用 `aws s3` AWS CLI 命令存取 `s3` VPC 端點。

### 使用 AWS CLI
<a name="set-s3tables-vpc-cli"></a>

若要使用 透過界面端點存取資料表儲存貯體和資料表 AWS CLI，請使用 `-region`- 和 `--endpoint-url` 參數。若要執行資料表儲存貯體和資料表層級動作，請使用 S3 Tables 端點 URL。若要執行物件層級動作，請使用 Amazon S3 端點 URL。

在下列範例中，請用您自己的資訊取代*使用者輸入預留位置*。

**範例 1：使用端點 URL 列出帳戶中的資料表儲存貯體**

```
aws s3tables list-table-buckets --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com —region us-east-1
```

**範例 2：使用端點 URL 列出儲存貯體中的資料表**

```
aws s3tables list-tables --table-bucket-arn arn:aws:s3tables:us-east-1:123456789301:bucket/amzn-s3-demo-bucket --endpoint https://vpce-0123456afghjipljb-aac.s3tables.us-east-1.vpce.amazonaws.com --region us-east-1
```

## 在使用查詢引擎時設定 VPC 網路
<a name="s3-tables-query-engine"></a>

使用查詢引擎時，請使用下列步驟設定 VPC 網路。

1. 若要開始使用，您可以建立或更新 VPC。如需詳細資訊，請參閱[建立一個 VPC](https://docs.aws.amazon.com//vpc/latest/userguide/create-vpc.html#create-vpc-and-other-resources)。

1.  對於路由至 S3 Tables 的資料表和資料表儲存貯體層級操作，請建立新的介面端點。如需詳細資訊，請參閱[使用介面 VPC 端點存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

1.  對於路由至 Amazon S3 的所有物件層級操作，請建立閘道端點或介面端點。如需有關閘道端點的詳細資訊，請參閱[建立閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3)。

1.  接著，請設定您的資料資源並啟動 Amazon EMR 叢集。如需詳細資訊，請參閱[開始使用 Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)。

1. 然後，您可以從 VPC 端點選取您的 DNS 名稱，以提交具有其他組態的 Spark 應用程式。例如，`spark.sql.catalog.ice_catalog.s3tables.endpoint` 和 `https://interface-endpoint.s3tables.us-east-1.vpce.amazonaws.com`。如需詳細資訊，請參閱[將工作提交至您的 Amazon EMR 叢集](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html#emr-getting-started-manage)。

## 使用雙堆疊端點存取資料表和資料表儲存貯體
<a name="s3-tables-dual-stack-endpoints"></a>

S3 Tables 支援 的雙堆疊連線 AWS PrivateLink。除了 IPv4 通訊協定之外，雙堆疊端點還可讓您使用網際網路通訊協定第 6 版 (IPv6) 存取 S3 資料表儲存貯體，視網路支援的項目而定。您可以使用下列命名慣例，透過雙堆疊端點存取 S3 儲存貯體：

```
s3tables.<region>.api.aws
```

以下是透過 VPC 中的 IPv6 嘗試存取 S3 Tables 和資料表儲存貯體之前的須知事項：
+ 您用來存取資料表的用戶端和 S3 用戶端，必須同時啟用雙堆疊。
+ VPC 安全群組預設不啟用 IPv6 傳入。若要允許 IPv6 存取，您需要新增規則以允許 HTTPS (TCP 連接埠 443) 連到您的安全群組。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)。
+ 如果您的 VPC 未指派 IPv6 CIDR，您將需要手動將 IPv6 CIDR 區塊新增至 VPC。如需詳細資訊，請參閱《AWS PrivateLink 使用者指南》** 中的[https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html)。
+ 如果您使用 IP 位址篩選 IAM 政策，則必須更新政策來處理 IPv6 位址。如需使用 IAM 管理存取權的詳細資訊，請參閱 [Amazon S3 的 Identity and Access Management](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)。

若要建立使用 S3 Tables 雙堆疊端點的新 VPC 端點，請使用範例 CLI 命令：

```
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-id \
  --service-name com.amazonaws.aws-region.s3tables \
  --subnet-ids subnet-1 subnet-2 \
  --vpc-endpoint-type Interface \
  --ip-address-type dualstack \
  --dns-options "DnsRecordIpType=dualstack" \
  --security-group-ids sg-id \
  --region aws-region
```

如需建立 VPC 端點的詳細資訊，請參閱《VPC 使用者指南》中的[https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

如果您的網路支援 IPv6，而且您想要更新 VPC 以啟用 IPv6，您可以使用下列 CLI 命令：

```
aws ec2 modify-vpc-endpoint \
  --vpc-endpoint-id vpce-id \
  --ip-address-type dualstack \
  --dns-options "DnsRecordIpType=dualstack" \
  --region aws-region
```

## 限制對 VPC 網路內對 S3 Tables 的存取
<a name="s3-tables-VPC-policy"></a>

與資源型政策類似，您可以將端點政策連接至 VPC 端點，以控制對資料表和資料表儲存貯體的存取權。在下列範例中，介面端點政策只會限制對特定資料表儲存貯體的存取。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy141511512309",
    "Statement": [
        {
            "Sid": "Access-to-specific-bucket-only",
            "Principal": "*",
            "Action": "s3tables:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------