有没有办法使用CloudFormation / Terraform创建EMR安全配置

时间:2016-12-26 16:12:38

标签: amazon-web-services amazon-cloudformation aws-cli amazon-emr terraform

我想归档类似于CLI命令的逻辑: aws emr create-security-configuration --name [name] --security-configuration ...并在Terraform脚本中进一步使用它。

2 个答案:

答案 0 :(得分:0)

更新06/07/2017 :自Jun 6 2017起,AWS::EMR::SecurityConfiguration资源现已在CloudFormation中提供,截至2017年5月11日(v0.9.5) Terraform中提供了emr_security_configuration资源。

不幸的是,目前无法使用CloudFormation的SecurityConfiguration CloudFormation资源或Terraform的RunJobFlow资源为AWS::EMR::Cluster API指定aws_emr_cluster,并且没有与CreateSecurityConfiguration API对应的资源。

EMR Security Configuration上添加了Sep 21 2016功能,新功能公告与现有CloudFormation资源中的相应支持之间通常存在延迟。

虽然Terraform往往更快地更新,因为它是一个拥有更大开发社区的开源项目,但aws_emr_cluster资源仍然相对较新(已发布Oct 6 2016)。我已经开通GitHub issue跟踪此实施的功能请求。

目前,您可以创建一个Custom Resource来直接调用CreateSecurityConfigurationRunJobFlow API。

答案 1 :(得分:-1)

您可以按照此处https://www.terraform.io/docs/providers/aws/r/security_group.html和此处https://www.terraform.io/docs/providers/aws/r/emr_cluster.html的基本示例进行操作。

它类似于:

resource "aws_security_group" "sg" {
  name = "allow_all"
  description = "Allow all inbound traffic"

  ingress {
      from_port = 0
      to_port = 0
      protocol = "-1"
      cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
      from_port = 0
      to_port = 0
      protocol = "-1"
      cidr_blocks = ["0.0.0.0/0"]
      prefix_list_ids = ["pl-12c4e678"]
  }
}

resource "aws_emr_cluster" "emr-test-cluster" {
  name          = "emr-test-arn"
  release_label = "emr-4.6.0"
  applications  = ["Spark"]

  termination_protection = false
  keep_job_flow_alive_when_no_steps = true

  ec2_attributes {
    subnet_id                         = "${aws_subnet.main.id}"
    emr_managed_master_security_group = "${aws_security_group.sg.id}"
    emr_managed_slave_security_group  = "${aws_security_group.sg.id}"
    instance_profile                  = "${aws_iam_instance_profile.emr_profile.arn}"
  }
...
}