

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

# 啟動叢集時的 Amazon VPC 選項
<a name="emr-clusters-in-a-vpc"></a>



在 VPC 內啟動 Amazon EMR 叢集時，您可以公有、私有或共用子網路中啟動它。組態會有些微但顯著的差異，這取決於您為叢集選擇的子網路類型。

## 公有子網路
<a name="emr-vpc-public-subnet"></a>

在公有子網路中的 EMR 叢集需要連線網際網路閘道。這是因為 Amazon EMR 叢集必須存取 AWS 服務和 Amazon EMR。如果某服務 (例如 Amazon S3)，可讓您建立 VPC 端點，您可以使用該端點來存取那些服務，而不是透過網際網路閘道存取公有端點。此外，Amazon EMR 無法透過網路位址轉譯 (NAT) 裝置與公有子網路中的叢集通訊。若要達成此目的，則網際網路閘道是必要的，但您仍可以為在更為複雜案例中的其他流量使用 NAT 執行個體或閘道。

在叢集中的所有執行個體會透過 VPC 端點或網際網路閘道來連接至 Amazon S3。目前不支援 VPC 端點 AWS 的其他服務只會使用網際網路閘道。

如果您有不想連接到網際網路閘道的其他 AWS 資源，您可以在 VPC 內建立的私有子網路中啟動這些元件。

公有子網路中執行的叢集中會使用兩個安全群組：一個用於主節點，另一個用於核心節點和任務節點。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

下圖示範 Amazon EMR 叢集如何使用公有子網路在 VPC 中執行。叢集可以透過網際網路閘道連線至其他 AWS 資源，例如 Amazon S3 儲存貯體。

![\[VPC 上的叢集\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_default_v3a.png)


下圖示範如何設定 VPC，使該 VPC 中的叢集可以存取您自己網路中的資源 (例如 Oracle 資料庫)。

![\[設定 VPC 和叢集，以存取本機 VPN 資源\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_withVPN_v3a.png)


## 私有子網路
<a name="emr-vpc-private-subnet"></a>

私有子網路可讓您啟動 AWS 資源，而不需要子網路具有連接的網際網路閘道。Amazon EMR 支援使用發行版本 4.2.0 或更新版本在私有子網路中啟動叢集。

**注意**  
在私有子網路中設定 Amazon EMR 叢集時，建議您同時[為 Amazon S3 設定 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)。如果您的 EMR 叢集位於沒有 Amazon S3 VPC 端點的私有子網路中，則會產生與 S3 流量關聯的額外 NAT 閘道費用，因為 EMR 叢集與 S3 之間的流量不會保留在 VPC 內。

私有子網路與公有子網路在下列方面有所不同：
+ 若要存取未提供 VPC 端點 AWS 的服務，您仍然必須使用 NAT 執行個體或網際網路閘道。
+ 至少，您必須提供路由到 Amazon EMR 服務日誌儲存貯體和 Amazon S3 中的 Amazon Linux 儲存庫。如需詳細資訊，請參閱[存取 Amazon S3 的私有子網路的範例政策](private-subnet-iampolicy.md)
+ 如果您使用的是 EMRFS 功能，您需要有一個 Amazon S3 VPC 端點和從您的私有子網路到 DynamoDB 的路由。
+ 如果您提供的是從私有子網路到公有 Amazon SQS 端點的路由，偵錯才適用。
+ 僅支援使用 AWS 管理主控台透過在公有子網路中的 NAT 執行個體或閘道建立私有子網路組態。新增和設定 NAT 執行個體和 Amazon EMR 叢集的 Amazon S3 VPC 端點的最簡單方式是使用 Amazon EMR 主控台中的 **VPC 子網路清單**頁面。若要設定 NAT 閘道，請參閱《Amazon VPC 使用者指南》**中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 您無法將含現有 Amazon EMR 叢集的子網路從公有變更為私有，反之亦然。若要尋找私有子網路內的 Amazon EMR 叢集，必須在該私有子網路中啟動該叢集。

Amazon EMR 在私有子網路中為叢集建立和使用不同的預設安全群組：ElasticMapReduce-Master-Private、ElasticMapReduce-Slave-Private 和 ElasticMapReduce-ServiceAccess。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

如需叢集 NACL 的完整清單，請選擇 Amazon EMR 主控台**叢集詳細資訊**頁面上的**主叢集的安全群組**和**核心和任務的安全群組**。

下圖示範如何在私有子網路中設定 Amazon EMR 叢集。子網路以外的唯一通訊是 Amazon EMR。

![\[在私有子網路中啟動 Amazon EMR 叢集\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_with_private_subnet_v3a.png)


下圖示範在位於公有子網路連接到 NAT 執行個體之私有子網路中的 Amazon EMR 叢集範例組態。

![\[私有子網路與 NAT\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_private_subnet_nat_v3a.png)


## 共用子網路
<a name="emr-vpc-shared-subnet"></a>

VPC 共用可讓客戶與相同 AWS 組織內的其他 AWS 帳戶共用子網路。您可以在公有共用和私有共用子網路中啟動 Amazon EMR 叢集，但需注意以下幾點。

子網路擁有者必須與您共用子網路，才能在其中啟動 Amazon EMR 叢集。不過，共用子網路可於日後取消共用。如需詳細資訊，請參閱[使用共用 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html)。在共用子網路中啟動叢集，而該共用子網路隨後取消共用，您可以在子網路未共用時，根據 Amazon EMR 叢集狀態遵守特定行為。
+ 叢集成功啟動「之前」**子網路未共用 - 如果擁有者在參與者啟動叢集的同時，停止共用 Amazon VPC 或子網路，叢集可能無法啟動或部分初始化而無需佈建所有請求的執行個體。
+ 叢集成功啟動「之後」**子網路未共用 - 當擁有者停止與參與者共用子網路或 Amazon VPC，參與者的叢集將無法調整以新增執行個體或取代運作狀態不佳的執行個體。

當您啟動 Amazon EMR 叢集時，會建立多個安全群組。在共用子網路中，子網路參與者控制這些安全群組。子網路擁有者可以查看這些安全群組，但無法執行任何動作。如果子網路擁有者想要移除或修改安全群組，建立安全群組的參與者必須採取動作。

## 使用 IAM 控制 VPC 許可
<a name="emr-iam-on-vpc"></a>

在預設情況下，所有 使用者可以查看帳戶的所有子網路，且任何使用者可以在任何子網路中啟動叢集。

當您在 VPC 中啟動叢集時，您可以使用 AWS Identity and Access Management (IAM) 控制對叢集的存取，並使用 政策限制動作，就像在 Amazon EC2 Classic 中啟動的叢集一樣。如需有關 IAM 的詳細資訊，請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)。

您也可以使用 IAM 來控制誰可以建立和管理子網路。例如，您可以建立 IAM 角色來管理子網路，以及可啟動叢集但無法修改 Amazon VPC 設定的第二個角色。如需在 Amazon EC2 和 Amazon VPC 中管理政策和動作的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 的 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。 *Amazon EC2 * 