如何修复:VALIDATION_ERROR:您还必须指定ServiceAccessSecurityGroup Terraform

时间:2018-05-22 10:51:23

标签: terraform terraform-provider-aws

我是terraform的新手。当我在私有子网中启动一个简单的EMR集群时,我遇到了一个问题

失败并显示以下错误消息:

  • aws_emr_cluster.emr-test-cluster:[WARN]错误等待EMR群集状态为" WAITING"或" RUNNING":TERMINATED_WITH_ERRORS:VALIDATION_ERROR:如果在私有子网中创建群集时使用自定义安全组,则还必须指定ServiceAccessSecurityGroup。

我确实检查了github看起来像修复它打开的问题。但我使用的是最新版本的terraform(0.11.7)

以下是Github报告的问题的github链接 https://github.com/hashicorp/terraform/issues/9518 https://github.com/hashicorp/terraform/pull/9600

有关如何解决此问题的任何建议都非常有用

谢谢

2 个答案:

答案 0 :(得分:1)

此问题已在Git中修复,因为它被引发以显示在使用service_access_security_groupemr_managed_master_security_group时应该要求emr_managed_slave_security_group的错误。

因此,您需要在EMR资源中提及service_access_security_group参数。

感谢。

答案 1 :(得分:0)

我们知道要将emr组件放入专用子网中,您必须遵循

这些安全组

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

然后在terraform中,您必须从此link解决安全组之间的循环依赖关系,并进行如下所示的配置

 ec2_attributes {
subnet_id                         = element(var.subnet_ids, count.index)
key_name                          = "${var.ssh_key_id}"
emr_managed_master_security_group = aws_security_group.EmrManagedMasterSecurityGroup.id
emr_managed_slave_security_group  = aws_security_group.EmrManagedSlaveSecurityGroup.id
service_access_security_group = aws_security_group.ServiceAccessSecurityGroup.id

#additional_master_security_groups = aws_security_group.allow_ssh.id
instance_profile = aws_iam_instance_profile.example_ec2_profile.arn
}

来源:-https://github.com/hashicorp/terraform/pull/9600