带有 EC2 实例的 VPC 上的 AWS EMR

AWS EMR on VPC with EC2 Instance

我正在阅读 VPC 上的 AWS EMR,但似乎更多的设计考虑是 AWS EMR 服务访问 EMR 集群以进行调用。

我想做的是托管一个带有 ALB 和 EC2 实例的 VPC 运行 一个应用程序作为访问 EMR 集群的服务。

VPC -> Internet Gateway -> Load Balancer -> EC2 (Application endpoints) -> EMR Cluster 

我不希望集群可以从外部访问,除非通过 IG 的 Public IP。但是PublicIP只能访问在同一VPC上调用EMR集群的EC2实例托管应用。

这是推荐的方法吗?

设计如下所示。 我正在解决的一些挑战是如果在 VPC 上如何从 EMR 访问 S3, 如果应用程序在 EC2 上 运行,它可以访问 EMR 集群吗?EMR 集群是否公开可用?

欢迎提供任何指导链接或建议。

编辑:

或者,如果我在 VPC 上创建 EMR,我是否需要将它包装在另一个 VPC 中,如下所示?

最简单的设计是:

  • 将所有内容放在 VPC 的 public 子网中
  • 使用安全组控制对 EMR 集群的访问

如果您是安全偏执狂,那么您可以使用:

  • 将public仅可访问的资源(例如EC2)放入public子网
  • 将 EMR 放入 私有子网
  • 使用 NAT 网关或 VPC 端点允许 EMR 与 S3(在 VPC 之外)通信

第一种选择更简单,安全组充当防火墙,可以全面保护 EMR 集群。您将创建三个安全组:

  • ELB-SG: 允许在您需要的端口上从 Internet 进行入站访问。将安全组与您的负载均衡器相关联。
  • EC2-SG: 允许来自 ELB-SG 的入站访问(来自安全组本身)。将安全组与您的 EC2 实例相关联。
  • EMR-SG: 允许来自 EC2-SG 的入站访问(来自安全组本身)。将 EMR-SG 与 EMR 集群相关联。

这将只允许负载均衡器与 EC2 实例通信,并且只允许 EC2 实例与 EMR 集群通信。由于默认规则允许出站访问,EMR 集群将能够直接连接到 Internet 以访问 Amazon S3。