

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

# 設定 EMR Serverless 應用程式的 VPC 存取以連線至資料
<a name="vpc-access"></a>

您可以設定 EMR Serverless 應用程式連線到 VPC 內的資料存放區，例如 Amazon Redshift 叢集、Amazon RDS 資料庫或具有 VPC 端點的 Amazon S3 儲存貯體。您的 EMR Serverless 應用程式對 VPC 內的資料存放區具有傳出連線。根據預設，EMR Serverless 會封鎖對應用程式的傳入存取和傳出網際網路存取，以增強安全性。

**注意**  
如果您想要為應用程式使用外部 Hive 中繼存放區資料庫，則必須設定 VPC 存取。如需有關如何設定外部 Hive 中繼存放區的資訊，請參閱[中繼存放區組態](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/metastore-config.html)。

## 建立應用程式
<a name="vpc-create-app"></a>

在**建立應用程式**頁面上，選擇自訂設定，並指定 EMR Serverless 應用程式可以使用的 VPC、子網路和安全群組。

### VPC
<a name="vpc-create-vpc"></a>

選擇包含您的資料存放區的虛擬私有雲端 (VPC) 名稱。**建立應用程式**頁面會列出所選 的所有 VPCs AWS 區域。

### 子網路
<a name="vpc-create-subnet"></a>

選擇 VPC 內包含資料存放區的子網路。**建立應用程式**頁面會列出 VPC 中資料存放區的所有子網路。同時支援公有和私有子網路。您可以將私有或公有子網路傳遞給應用程式。選擇是否擁有公有或私有子網路有幾個需要注意的相關考量。

針對私有子網路：
+ 相關聯的路由表不得有網際網路閘道。
+ 對於網際網路的傳出連線，如有需要，請使用 NAT Gateway 設定傳出路由。若要設定 NAT 閘道，請參閱 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with)。
+ 對於 Amazon S3 連線，請設定 NAT Gateway 或 VPC 端點。若要設定 S3 VPC 端點，請參閱[建立閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3)。
+ 如果您設定 S3 VPC 端點，並連接端點政策來控制存取，請遵循[使用受管儲存體記錄 EMR Serverless](logging.html#jobs-log-storage-managed-storage) 中的指示，為 EMR Serverless 提供儲存和提供應用程式日誌的許可。
+ 若要連線至 VPC AWS 服務 以外的其他 ，例如 Amazon DynamoDB，請設定 VPC 端點或 NAT 閘道。若要設定 的 VPC 端點 AWS 服務，請參閱[使用 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html#working-with-privatelink)。

**注意**  
當您在私有子網路中設定 Amazon EMR Serverless 應用程式時，我們建議您也為 Amazon S3 設定 VPC 端點。如果您的 EMR Serverless 應用程式位於沒有 Amazon S3 VPC 端點的私有子網路中，則會產生與 S3 流量相關聯的額外 NAT 閘道費用。這是因為未設定 VPC 端點時，EMR 應用程式和 Amazon S3 之間的流量不會保留在您的 VPC 內。

針對公有子網路：
+ 這些有網際網路閘道的路由。
+ 您必須確保適當的安全群組組態來控制傳出流量。

工作者可以透過傳出流量連接到 VPC 內的資料存放區。根據預設，EMR Serverless 會封鎖對工作者的傳入存取。這是為了提升安全性。

當您使用 時 AWS Config，EMR Serverless 會為每個工作者建立彈性網路界面項目記錄。若要避免與此資源相關的成本，請考慮關閉`AWS::EC2::NetworkInterface` AWS Config。

**注意**  
建議您跨多個可用區域選取多個子網路。這是因為您選擇的子網路決定可供 EMR Serverless 應用程式啟動的可用區域。每個工作者都會在其啟動的子網路上使用 IP 地址。請確定指定的子網路有足夠的 IP 地址，可供您計劃啟動的工作者數量使用。如需子網路規劃的詳細資訊，請參閱 [子網路規劃的最佳實務](#subnet-best-practices)。

#### 子網路的考量和限制
<a name="vpc-create-subnet-considerations"></a>
+ 具有公有子網路的 EMR Serverless 不支援 AWS Lake Formation。
+ 公有子網路不支援傳入流量。

### Security groups (安全群組)
<a name="vpc-create-sg"></a>

選擇一或多個可與資料存放區通訊的安全群組。**建立應用程式**頁面會列出 VPC 中的所有安全群組。EMR Serverless 會將這些安全群組與連接到 VPC 子網路的彈性網路介面建立關聯。

**注意**  
我們建議您為 EMR Serverless 應用程式建立個別的安全群組。如果安全群組的連接埠在 **0.0.0.0/0 **或 **：：/0 **範圍開放給公有網際網路，EMR Serverless 不允許您**建立**/**更新**/**啟動應用程式**。這可提供增強的安全性、隔離功能，並讓管理網路規則更有效率。例如，這會封鎖對具有公有 IP 地址的工作者的意外流量。例如，若要與 Amazon Redshift 叢集通訊，請定義 Redshift 和 EMR Serverless 安全群組之間的流量規則，如下節範例所示。

**Example 範例 — 與 Amazon Redshift 叢集通訊**  

1. 從其中一個 EMR Serverless 安全群組將傳入流量規則新增至 Amazon Redshift 安全群組。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/EMR-Serverless-UserGuide/vpc-access.html)

1. 新增來自其中一個 EMR Serverless 安全群組的傳出流量規則。以兩種方式之一執行此操作。首先，開啟所有連接埠的傳出流量。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/EMR-Serverless-UserGuide/vpc-access.html)

   或者，您可以將傳出流量限制為 Amazon Redshift 叢集。只有在應用程式必須與 Amazon Redshift 叢集通訊時，這才很有用。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/EMR-Serverless-UserGuide/vpc-access.html)

## 設定應用程式
<a name="vpc-configure-app"></a>

您可以從設定應用程式頁面變更現有 EMR Serverless **應用程式的**網路組態。

### 存取任務執行詳細資訊
<a name="vpc-configure-access-details"></a>

在**任務執行詳細資訊**頁面上，存取任務用於特定執行的子網路。請注意，任務只會在從指定子網路中選取的一個子網路中執行。

## 子網路規劃的最佳實務
<a name="subnet-best-practices"></a>

AWS 資源是在子網路中建立，子網路是 Amazon VPC 中可用 IP 地址的子集。例如，具有 /16 網路遮罩的 VPC 最多有 65，536 個可用的 IP 地址，可以使用子網路遮罩分成多個較小的網路。例如，您可以將此範圍分割為兩個子網路，每個子網路使用 /17 遮罩和 32，768 個可用的 IP 地址。子網路位於可用區域內，無法跨區域。

子網路的設計應謹記您的 EMR Serverless 應用程式擴展限制。例如，如果您的應用程式請求 4 個 vCpu 工作者，並且可擴展到 4，000 個 vCpu，則您的應用程式最多需要 1，000 個工作者，總共需要 1，000 個網路介面。我們建議您跨多個可用區域建立子網路。這可讓 EMR Serverless 在可用區域故障時，在極少數情況下重試您的任務，或在不同的可用區域中佈建預先初始化的容量。因此，至少兩個可用區域中的每個子網路應具有超過 1，000 個可用的 IP 地址。

您需要遮罩大小小於或等於 22 的子網路，才能佈建 1，000 個網路介面。任何大於 22 的遮罩都不符合要求。例如，/23 的子網路遮罩提供 512 個 IP 地址，而 /22 的遮罩提供 1024，而 /21 的遮罩提供 2048 個 IP 地址。以下是 /16 網路遮罩 VPC 中 /22 遮罩可配置給不同可用區域的 4 個子網路範例。可用和可用的 IP 地址之間有五個差異，因為每個子網路中的前四個 IP 地址和最後一個 IP 地址是由 保留 AWS。


| 子網路 ID | 子網路地址 | 子網路遮罩 | IP 地址範圍 | 可用的 IP 地址 | 可用的 IP 地址 | 
| --- | --- | --- | --- | --- | --- | 
|  1  |  10.0.0.0  |  255.255.252.0/22  |  10.0.0.0 - 10.0.3.255  |  1,024  |  1，019  | 
|  2  |  10.0.4.0  |  255.255.252.0/22  |  10.0.4.0 - 10.0.7.255  |  1,024  |  1，019  | 
|  3  |  10.0.8.0  |  255.255.252.0/22  |  10.0.8.0 - 10.0.11.255  |  1,024  |  1，019  | 
|  4  |  10.0.12.0  |  255.255.252.0/22  |  10.0.12.0 - 10.0.15.255  |  1,024  |  1，019  | 

您應該評估工作負載是否適合較大的工作者大小。使用較大的工作者大小需要的網路界面較少。例如，使用應用程式擴展限制為 4，000 vCpu 的 16vCpu 工作者，最多需要 250 個工作者，總共需要 250 個可用的 IP 地址來佈建網路介面。 vCpu 您需要多個可用區域中遮罩大小小於或等於 24 的子網路，才能佈建 250 個網路介面。任何大於 24 的遮罩大小都會提供少於 250 個 IP 地址。

如果您跨多個應用程式共用子網路，每個子網路的設計應謹記所有應用程式的集體擴展限制。例如，如果您有 3 個應用程式請求 4 個 vCpu 工作者，且每個應用程式可擴展至 4000 個 vCpu，並具有 12，000 個 vCpu 帳戶層級服務配額，則每個子網路都需要 3000 個可用的 IP 地址。如果要使用的 VPC 沒有足夠數目的 IP 地址，請嘗試增加可用 IP 地址的數目。您可以透過將其他無類別域間路由 (CIDR) 區塊與 VPC 關聯來完成此操作。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[將其他 IPv4 CIDR 區塊與 VPC 建立關聯](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#add-ipv4-cidr)。

您可以使用線上提供的許多工具之一，快速產生子網路定義並檢閱其可用的 IP 地址範圍。