# # Copyright Amazon.com, Inc. and its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT # # Licensed under the MIT License. See the LICENSE accompanying this file # for the specific language governing permissions and limitations under # the License. # ################ # IAM ROLE FOR EC2 ################ resource "aws_iam_role" "ssm_ec2_iam_role" { count = var.enable_ssm && var.create_iam_role_ssm ? 1 : 0 name = "SSM-EC2-${var.vpc_name}-IAM-ROLE" assume_role_policy = < 0 && var.enable_ssm ? 1 : 0 vpc_id = aws_vpc.vpc.id service_name = data.aws_vpc_endpoint_service.ssm[0].service_name vpc_endpoint_type = "Interface" security_group_ids = [aws_security_group.ssm_endpoint_sg[0].id] subnet_ids = var.endpoints_ha ? [aws_subnet.subnet_priv[0].id, aws_subnet.subnet_priv[1].id] : [aws_subnet.subnet_priv[0].id] private_dns_enabled = true tags = merge( var.tags, { "Name" = "${var.vpc_name}-SSM-ENDPOINT" }, ) } #FOR SSM MESSAGES data "aws_vpc_endpoint_service" "ssmmessages" { count = var.enable_ssm ? 1 : 0 service = "ssmmessages" } resource "aws_vpc_endpoint" "ssmmessages" { count = length(var.private_subnets_cidr_list) > 0 && var.enable_ssm ? 1 : 0 vpc_id = aws_vpc.vpc.id service_name = data.aws_vpc_endpoint_service.ssmmessages[0].service_name vpc_endpoint_type = "Interface" security_group_ids = [aws_security_group.ssm_endpoint_sg[0].id] subnet_ids = var.endpoints_ha ? [aws_subnet.subnet_priv[0].id, aws_subnet.subnet_priv[1].id] : [aws_subnet.subnet_priv[0].id] private_dns_enabled = true tags = merge( var.tags, { "Name" = "${var.vpc_name}-SSMMESSAGES-ENDPOINT" }, ) } #FOR EC2 data "aws_vpc_endpoint_service" "ec2" { count = var.enable_ssm ? 1 : 0 service = "ec2" } resource "aws_vpc_endpoint" "ec2" { count = length(var.private_subnets_cidr_list) > 0 && var.enable_ssm ? 1 : 0 vpc_id = aws_vpc.vpc.id service_name = data.aws_vpc_endpoint_service.ec2[0].service_name vpc_endpoint_type = "Interface" security_group_ids = [aws_security_group.ssm_endpoint_sg[0].id] subnet_ids = var.endpoints_ha ? [aws_subnet.subnet_priv[0].id, aws_subnet.subnet_priv[1].id] : [aws_subnet.subnet_priv[0].id] private_dns_enabled = true tags = merge( var.tags, { "Name" = "${var.vpc_name}--EC2-ENDPOINT" }, ) } #FOR EC2 MESSAGES data "aws_vpc_endpoint_service" "ec2messages" { count = var.enable_ssm ? 1 : 0 service = "ec2messages" } resource "aws_vpc_endpoint" "ec2messages" { count = length(var.private_subnets_cidr_list) > 0 && var.enable_ssm ? 1 : 0 vpc_id = aws_vpc.vpc.id service_name = data.aws_vpc_endpoint_service.ec2messages[0].service_name vpc_endpoint_type = "Interface" security_group_ids = [aws_security_group.ssm_endpoint_sg[0].id] subnet_ids = var.endpoints_ha ? [aws_subnet.subnet_priv[0].id, aws_subnet.subnet_priv[1].id] : [aws_subnet.subnet_priv[0].id] private_dns_enabled = true tags = merge( var.tags, { "Name" = "${var.vpc_name}-EC2MESSAGES-ENDPOINT" }, ) } #FOR KMS data "aws_vpc_endpoint_service" "kms" { count = var.enable_ssm ? 1 : 0 service = "kms" } resource "aws_vpc_endpoint" "kms" { count = length(var.private_subnets_cidr_list) > 0 && var.enable_ssm ? 1 : 0 vpc_id = aws_vpc.vpc.id service_name = data.aws_vpc_endpoint_service.kms[0].service_name vpc_endpoint_type = "Interface" security_group_ids = [aws_security_group.ssm_endpoint_sg[0].id] subnet_ids = var.endpoints_ha ? [aws_subnet.subnet_priv[0].id, aws_subnet.subnet_priv[1].id] : [aws_subnet.subnet_priv[0].id] private_dns_enabled = true tags = merge( var.tags, { "Name" = "${var.vpc_name}-KMS-ENDPOINT" }, ) }