我想归档类似于CLI命令的逻辑: aws emr create-security-configuration --name [name] --security-configuration ...并在Terraform脚本中进一步使用它。
答案 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来直接调用CreateSecurityConfiguration
和RunJobFlow
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}"
}
...
}