AWS

AWS VPC Transit G/W, 트래픽 미러링, VPC 래티스 리소스

devfinger 2024. 10. 22. 20:09

VPC

 
Transit Gateway
  • Transit Gateway
  • Transit Gateway 연결
  • Transit Gateway 정책 테이블
  • Transit Gateway 라우팅 테이블
  • Transit Gateway 멀티캐스트
트래픽 미러링
  • 미러 세션
  • 미러 대상
  • 미러 필터
VPC 래티스
  • 시작하기
  • 서비스 네트워크
  • 서비스
  • 대상 그룹

1. Transit Gateway

필수 항목:

  • amazon_side_asn: AWS 측 ASN 번호 (필수)

선택 항목:

  • description: 설명 (선택적)
  • tags: 태그 (선택적)

리소스 이름: aws_ec2_transit_gateway

resource "aws_ec2_transit_gateway" "main_tgw" {
  amazon_side_asn = 64512                       # 필수: AWS 측 ASN
  description     = "Main Transit Gateway"      # 옵션: 설명

  tags = {
    Name = "MainTransitGateway"                 # 옵션: 태그
  }
}

 

3. Transit Gateway 정책 테이블 (Transit Gateway Policy Table)

필수 항목:

  • transit_gateway_id: 연결할 Transit Gateway ID (필수)

리소스 이름: aws_ec2_transit_gateway_policy_table

resource "aws_ec2_transit_gateway_policy_table" "main_tgw_policy_table" {
  transit_gateway_id = aws_ec2_transit_gateway.main_tgw.id    # 필수: Transit Gateway ID

  tags = {
    Name = "MainTgwPolicyTable"                               # 옵션: 태그
  }
}

 

4. Transit Gateway 라우팅 테이블 (Transit Gateway Route Table)

필수 항목:

  • transit_gateway_id: 연결할 Transit Gateway ID (필수)

리소스 이름: aws_ec2_transit_gateway_route_table

resource "aws_ec2_transit_gateway_route_table" "main_tgw_route_table" {
  transit_gateway_id = aws_ec2_transit_gateway.main_tgw.id   # 필수: Transit Gateway ID

  tags = {
    Name = "MainTgwRouteTable"                               # 옵션: 태그
  }
}

 

5. Transit Gateway 멀티캐스트 (Transit Gateway Multicast Domain)

필수 항목:

  • transit_gateway_id: 연결할 Transit Gateway ID (필수)

리소스 이름: aws_ec2_transit_gateway_multicast_domain

resource "aws_ec2_transit_gateway_multicast_domain" "main_tgw_multicast_domain" {
  transit_gateway_id = aws_ec2_transit_gateway.main_tgw.id   # 필수: Transit Gateway ID

  tags = {
    Name = "MainTgwMulticastDomain"                          # 옵션: 태그
  }
}

 

6. 트래픽 미러 세션 (Traffic Mirror Session)

필수 항목:

  • network_interface_id: 미러링할 네트워크 인터페이스 ID (필수)
  • traffic_mirror_target_id: 트래픽 미러 타겟 ID (필수)
  • traffic_mirror_filter_id: 트래픽 미러 필터 ID (필수)

리소스 이름: aws_ec2_traffic_mirror_session

resource "aws_ec2_traffic_mirror_session" "main_mirror_session" {
  network_interface_id   = aws_network_interface.main_eni.id      # 필수: 네트워크 인터페이스 ID
  traffic_mirror_target_id = aws_ec2_traffic_mirror_target.main_target.id   # 필수: 미러 타겟 ID
  traffic_mirror_filter_id = aws_ec2_traffic_mirror_filter.main_filter.id   # 필수: 미러 필터 ID

  session_number = 1   # 세션 번호

  tags = {
    Name = "MainMirrorSession"                                    # 옵션: 태그
  }
}

 

7. 트래픽 미러 대상 (Traffic Mirror Target)

필수 항목:

  • network_interface_id: 타겟 네트워크 인터페이스 ID (필수)

리소스 이름: aws_ec2_traffic_mirror_target

resource "aws_ec2_traffic_mirror_target" "main_target" {
  network_interface_id = aws_network_interface.main_eni.id   # 필수: 네트워크 인터페이스 ID

  tags = {
    Name = "MainTrafficMirrorTarget"                         # 옵션: 태그
  }
}

 

8. 트래픽 미러 필터 (Traffic Mirror Filter)

필수 항목:

  • description: 필터 설명 (필수)

리소스 이름: aws_ec2_traffic_mirror_filter

resource "aws_ec2_traffic_mirror_filter" "main_filter" {
  description = "Main Traffic Mirror Filter"   # 필수: 필터 설명

  tags = {
    Name = "MainTrafficMirrorFilter"           # 옵션: 태그
  }
}

 

9. VPC 래티스 시작하기 (VPC Lattice)

필수 항목:

  • service_network_id: 서비스 네트워크 ID (필수)

리소스 이름: aws_vpc_lattice

resource "aws_vpc_lattice" "main_vpc_lattice" {
  service_network_id = aws_vpc_lattice_service_network.main_network.id  # 필수: 서비스 네트워크 ID

  tags = {
    Name = "MainVPCLattice"                                            # 옵션: 태그
  }
}

 

10. VPC 래티스 서비스 네트워크 (VPC Lattice Service Network)

필수 항목:

  • vpc_id: VPC ID (필수)

리소스 이름: aws_vpc_lattice_service_network

resource "aws_vpc_lattice_service_network" "main_network" {
  vpc_id = aws_vpc.main_vpc.id   # 필수: VPC ID

  tags = {
    Name = "MainServiceNetwork"   # 옵션: 태그
  }
}

 

11. VPC 래티스 서비스 (VPC Lattice Service)

필수 항목:

  • service_network_id: 연결할 서비스 네트워크 ID (필수)
  • name: 서비스 이름 (필수)

리소스 이름: aws_vpc_lattice_service

resource "aws_vpc_lattice_service" "main_service" {
  service_network_id = aws_vpc_lattice_service_network.main_network.id   # 필수: 서비스 네트워크 ID
  name               = "MainLatticeService"                              # 필수: 서비스 이름

  tags = {
    Name = "MainVPCLatticeService"                                       # 옵션: 태그
  }
}

 

12. VPC 래티스 대상 그룹 (VPC Lattice Target Group)

필수 항목:

  • protocol: 서비스 프로토콜 (필수)
  • port: 서비스 포트 (필수)

리소스 이름: aws_vpc_lattice_target_group

resource "aws_vpc_lattice_target_group" "main_target_group" {
  protocol = "HTTP"   # 필수: 프로토콜
  port     = 80       # 필수: 포트

  tags = {
    Name = "MainTargetGroup"   # 옵션: 태그
  }
}

 

이 구성을 통해 AWS의 Transit Gateway 및 VPC Lattice 관련 모든 리소스를 Terraform에서 관리할 수 있다. 각 리소스의 필수 및 선택 파라미터를 정의하고, 리소스 간의 연결성을 고려하여 올바르게 설정해야 한다.