Amazon EMR - 端口 9443 上缺少来自 EmrManagedMasterSecurityGroup 的入口规则

问题描述 投票:0回答:3

我正在努力解决这个问题,但不明白为什么

  1. 我有一个 EMR 集群要部署在 AWS 私有子网中。
  2. 我检查了文档这里
  3. 从上面我明白了以下几点:

a.对于我的 EMR custom 安全组,我不需要为端口 9443 指定入口规则,即它可以与

ElasticMapReduce-Master-Private
相同。以下是我的主/从实例的 EMR 托管安全组的入站/出站规则(不是服务)

出境

入境

b.对于我的自定义服务安全组,我可以将其与

ElasticMapReduce-ServiceAccess
保持相同,我需要为端口 9443 指定入口规则,如下所示 (Terraform):

resource "aws_security_group_rule" "allow_tcp_from_master_to_service" {
  type                     = "ingress"
  from_port                = 9443
  to_port                  = 9443
  protocol                 = "tcp"
  security_group_id        = join("", aws_security_group.ml.*.id)
  source_security_group_id = join("", aws_security_group.ml_emr.*.id)

  lifecycle {
    create_before_destroy = false
  }
}

但是当我使用 terraform 部署它时,我收到 AWS 错误:

Error waiting for EMR Cluster state to be "WAITING" or "RUNNING": TERMINATED_WITH_ERRORS: VALIDATION_ERROR: ServiceAccessSecurityGroup is missing ingress rule from EmrManagedMasterSecurityGroup on port 9443

我很难理解为什么 AWS 说我需要这个,而我不需要?从文档中不清楚在哪里提到这一点,所以如果有人能澄清这里的预期,我将不胜感激。

问候,

amazon-emr aws-security-group
3个回答
1
投票

主实例和任务实例有相同的 SG 吗?

我对主实例和任务实例有不同的 SG,我通过对两者使用相同的 SG 来解决这个问题


0
投票

根据文档 https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html#emr-sg-elasticmapreduce-sa-private

您必须为 TCP 端口 9443 创建不同/单独的安全组规则,该规则从 emr 5.30.0 起是“强制”的,允许主实例的安全组与服务访问安全组之间进行通信。


0
投票
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html#emr-sg-elasticmapreduce- sa-private

),否则即使您允许所有网络流量,它也无法工作。

© www.soinside.com 2019 - 2024. All rights reserved.