为EMR无服务器应用程序配置连接数据的VPC访问权限 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为EMR无服务器应用程序配置连接数据的VPC访问权限

您可以将EMR无服务器应用程序配置为连接到您的数据存储,例如 Amazon Redshift 集群VPC、Amazon 数据库或带有终端节点的 RDS Amazon S3 存储桶VPC。您的EMR无服务器应用程序与您的VPC内部数据存储具有出站连接。默认情况下,EMRServerless 会阻止对您的应用程序的入站访问以提高安全性。

注意

如果要为应用程序使用外部 Hive 元数据仓数据库,则必须配置VPC访问权限。有关如何配置外部 Hive 元存储的信息,请参阅元存储配置

创建应用程序

创建应用程序页面上,您可以选择自定义设置并指定EMR无服务器应用程序可以使用的子网和安全组。VPC

VPCs

选择包含您的数据存储的虚拟私有云 (VPC) 的名称。创建应用程序页面列出了您选择的所有VPCs应用程序 AWS 区域。

子网

在中选择包含您的数据存储VPC的子网。创建应用程序页面列出了您的VPC中数据存储的所有子网。

所选子网必须是私有子网。这意味着子网的关联路由表不应具有互联网网关。

要实现到 Internet 的出站连接,子网必须有使用网NAT关的出站路由。要配置NAT网关,请参阅使用NAT网关

对于 Amazon S3 连接,子网必须配置NAT网关或VPC终端节点。要配置 S3 VPC 终端节点,请参阅创建网关终端节点

要连接到 AWS 服务 外部的其他服务器(例如 Amazon DynamoDB),您必须配置终端节点VPC或网关。VPC NAT要为其配置VPC终端节点 AWS 服务,请参阅使用VPC终端节点

工作人员VPC可以通过出站流量连接到您内部的数据存储。默认情况下,EMRServerless 会阻止工作人员的入站访问以提高安全性。

当你使用时 AWS Config,EMRServerless 会为每个工作人员创建一个弹性网络接口项目记录。为避免与该资源相关的成本,请考虑关闭接AWS::EC2::NetworkInterface入 AWS Config。

注意

建议您在多个可用区中选择多个子网。这是因为您选择的子网决定了可供EMR无服务器应用程序启动的可用区。每个工作线程都将在其启动的子网上使用一个 IP 地址。请确保指定的子网具有足够的 IP 地址,以容纳您计划启动的工作线程数量。有关子网规划的更多信息,请参阅 子网规划最佳实践

安全组

选择一个或多个可与数据存储通信的安全组。创建应用程序页面列出了您的所有安全组VPC。 EMRServerless 将这些安全组与连接到您的VPC子网的弹性网络接口相关联。

注意

我们建议您为EMR无服务器应用程序创建单独的安全组。这使得隔离和管理网络规则更加有效。例如,要与 Amazon Redshift 集群通信,您可以定义 Redshift 和EMR无服务器安全组之间的流量规则,如以下示例所示。

例 示例:与 Amazon Redshift 集群通信
  1. 为来自其中一个EMR无服务器安全组的 Amazon Redshift 安全组的入站流量添加规则。

    Type 协议 端口范围 来源

    所有 TCP

    TCP

    5439

    emr-serverless-security-group

  2. 为来自其中一个EMR无服务器安全组的出站流量添加规则。您可以通过两种方式之一来执行此操作。首先,您可以向所有端口开放出站流量。

    Type 协议 端口范围 目标位置

    所有流量

    TCP

    ALL

    0.0.0.0/0

    或者,您可以限制到 Amazon Redshift 集群的出站流量。仅当应用程序必须与 Amazon Redshift 集群通信而无其他情况时,这才有用。

    Type 协议 端口范围 来源

    所有 TCP

    TCP

    5439

    redshift-security-group

配置应用程序

您可以从配置应用程序页面更改现有EMR无服务器应用程序的网络配置

查看作业运行详细信息

作业运行详细信息页面上,您可以查看作业在特定运行中使用的子网。请注意,作业只能在从指定子网中选择的一个子网中运行。

子网规划最佳实践

AWS 资源是在子网中创建的,子网是 Amazon 中可用 IP 地址的子集VPC。例如,网络掩码为 /16 的 a 最多有 65,536 个可用 IP 地址,可以使用子网掩码将其分成多个较小的网络。VPC例如,您可以将此范围拆分为两个子网,每个子网使用 /17 掩码和 32768 个可用 IP 地址。子网位于可用区内,不能跨可用区。

在设计子网时,应牢记您的EMR无服务器应用程序扩展限制。例如,如果您的应用程序请求 4 个 vCpu 工作线程并且最多可以扩展到 4,000 个vCpu,那么您的应用程序最多需要 1,000 个工作线程才能获得 1,000 个网络接口。建议您在多个可用区创建子网。这样,当可用区出现故障时,EMRServerless 可以重试您的任务或在不同的可用区中配置预先初始化的容量。因此,至少两个可用区中的每个子网应具有超过 1000 个可用 IP 地址。

您需要掩码小于或等于 22 的子网才能预置 1000 个网络接口。任何大于 22 的掩码都不符合要求。例如,子网掩码 /23 提供 512 个 IP 地址,而掩码 /22 提供 1024 个 IP 地址,掩码 /21 提供 2048 个 IP 地址。以下是 4 个子网的示例,这些子网的掩码为 VPC /16,网络掩码为 /16,可以分配给不同的可用区。可用和可用 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

1024

1,019

2

10.0.4.0

255.255.252.0/22

10.0.4.0 - 10.0.7.255

1024

1,019

3

10.0.8.0

255.255.252.0/22

10.0.4.0 - 10.0.7.255

1024

1,019

4

10.0.12.0

255.255.252.0/22

10.0.12.0 - 10.0.15.255

1024

1,019

您应该评估工作负载是否适合较大的工作线程。使用较大的工作线程需要的网络接口较少。例如,使用应用程序扩展限制为 4,000 的 16 个vCpu 工作线程最多 vCpu 需要 250 个工作线程,总共有 250 个可用 IP 地址来配置网络接口。您需要多个可用区中掩码小于或等于 24 的子网才能预置 250 个网络接口。任何大于 24 的掩码都能提供少于 250 个 IP 地址。

如果多个应用程序共享子网,则每个子网的设计应考虑到所有应用程序的集体扩展限制。例如,如果您有 3 个应用程序请求 4 个 vCpu 工作人员,并且每个应用程序可以扩展到 4000 个,基于 12,000 个 vCpu vCpu账户级别的服务配额,则每个子网将需要 3000 个可用 IP 地址。如果您要使用的 IP 地址数量不足,请尝试增加可用 IP 地址的数量。VPC您可以通过将其他无类域间路由 (CIDR) 块与您的关联来实现此目的。VPC有关更多信息,请参阅 Amazon VPC 用户指南VPC中的将其他IPv4CIDR区块与您的关联

您可以使用在线工具快速生成子网定义,并查看可用的 IP 地址范围。