locals { terminating_gateway_service_name = "terminating-gateway" } data "aws_ssm_parameter" "ubuntu_1804_ami_id" { name = "/aws/service/canonical/ubuntu/server/18.04/stable/current/amd64/hvm/ebs-gp2/ami-id" } data "aws_secretsmanager_secret_version" "consul_ca_key" { secret_id = module.dev_consul_server.ca_key_arn } data "aws_secretsmanager_secret_version" "consul_ca_cert" { secret_id = module.dev_consul_server.ca_cert_arn } data "aws_secretsmanager_secret_version" "consul_gossip_key" { secret_id = module.dev_consul_server.gossip_key_arn } data "aws_secretsmanager_secret_version" "consul_bootstrap_token" { secret_id = module.dev_consul_server.bootstrap_token_secret_arn } resource "tls_private_key" "terminating_gateway_key" { algorithm = "ECDSA" ecdsa_curve = "P256" } ## Terminating Gateway Public Client Cert resource "tls_cert_request" "terminating_gateway_cert" { private_key_pem = tls_private_key.terminating_gateway_key.private_key_pem subject { common_name = "${local.terminating_gateway_service_name}.dc1.consul" organization = "HashiCorp Inc." } dns_names = [ "${local.terminating_gateway_service_name}.dc1.consul", "localhost" ] ip_addresses = ["127.0.0.1"] } ## Terminating Gateway Signed Public Client Certificate resource "tls_locally_signed_cert" "terminating_gateway_signed_cert" { cert_request_pem = tls_cert_request.terminating_gateway_cert.cert_request_pem ca_private_key_pem = data.aws_secretsmanager_secret_version.consul_ca_key.secret_string ca_cert_pem = data.aws_secretsmanager_secret_version.consul_ca_cert.secret_string allowed_uses = [ "digital_signature", "key_encipherment" ] validity_period_hours = 8760 } resource "aws_iam_instance_profile" "terminating_gateway" { name = "${var.name}-terminating-gateway" role = aws_iam_role.terminating_gateway.name } resource "aws_iam_role" "terminating_gateway" { name = "terminating-gateway" path = "/${var.name}/" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Sid = "" Principal = { Service = "ec2.amazonaws.com" } }, ] }) } resource "aws_iam_policy" "invoke_lambda" { name = "ecs-invoke-lambda" path = "/${var.name}/" policy = <