terraform/ecc-aws-013-remove_weak_ciphers_for_clb/green/lb.tf (68 lines of code) (raw):
resource "aws_instance" "this" {
ami = data.aws_ami.this.id
instance_type = "t2.micro"
}
data "aws_ami" "this" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm*"]
}
}
data "aws_availability_zones" "this" {
state = "available"
}
resource "aws_elb" "this" {
name = "elb-013-http-green"
security_groups = [aws_security_group.this.id]
availability_zones = [data.aws_availability_zones.this.names[0], data.aws_availability_zones.this.names[1]]
listener {
instance_port = 8000
instance_protocol = "http"
lb_port = 443
lb_protocol = "https"
ssl_certificate_id = aws_acm_certificate.this.arn
}
instances = ["${aws_instance.this.id}"]
cross_zone_load_balancing = true
idle_timeout = 400
connection_draining = true
connection_draining_timeout = 400
}
resource "aws_load_balancer_policy" "this" {
load_balancer_name = aws_elb.this.name
policy_name = "policygreen"
policy_type_name = "SSLNegotiationPolicyType"
policy_attribute {
name = "Reference-Security-Policy"
value = "ELBSecurityPolicy-TLS-1-2-2017-01"
}
}
resource "aws_load_balancer_listener_policy" "this" {
load_balancer_name = aws_elb.this.name
load_balancer_port = 443
policy_names = [
aws_load_balancer_policy.this.policy_name,
]
}
resource "tls_private_key" "this" {
algorithm = "RSA"
}
resource "tls_self_signed_cert" "this" {
private_key_pem = tls_private_key.this.private_key_pem
subject {
common_name = "example.com"
organization = "ACME Examples, Inc"
}
validity_period_hours = 12
allowed_uses = [
"key_encipherment",
"digital_signature",
"server_auth",
]
}
resource "aws_acm_certificate" "this" {
private_key = tls_private_key.this.private_key_pem
certificate_body = tls_self_signed_cert.this.cert_pem
}