AWS

AWS DirectConnect 리소스

devfinger 2024. 10. 22. 17:18

DirectConnect

  • 연결
  • 가상 인터페이스
  • LAG
  • Direct Connect 게이트웨이
  • 가상 프라이빗 게이트웨이
  • 전송 게이트웨이

 

각 항목 설명 및 Terraform 리소스

  1. Direct Connect 연결 (aws_dx_connection)
    • 필수: Direct Connect 연결은 물리적인 전용 네트워크 연결을 제공합니다.
    • 리소스 이름: aws_dx_connection
    • 필수 속성: name, bandwidth, location
    • 옵션 속성: provider_name
  2. 가상 인터페이스 (aws_dx_private_virtual_interface, aws_dx_public_virtual_interface)
    • 필수: Direct Connect 연결에 가상 인터페이스를 생성하여 트래픽을 송수신합니다.
    • 리소스 이름: aws_dx_private_virtual_interface (VPC 연결 시), aws_dx_public_virtual_interface (Public 리소스 접근 시)
    • 필수 속성: connection_id, vlan, address_family, bgp_asn
    • 옵션 속성: amazon_address, customer_address
  3. LAG (Link Aggregation Group) (aws_dx_lag)
    • 옵션: 여러 Direct Connect 연결을 하나의 링크 집합으로 묶어 사용합니다.
    • 리소스 이름: aws_dx_lag
    • 필수 속성: connections_bandwidth, location
    • 옵션 속성: number_of_connections
  4. Direct Connect 게이트웨이 (aws_dx_gateway)
    • 필수: Direct Connect 연결을 여러 VPC에 연결할 때 사용합니다.
    • 리소스 이름: aws_dx_gateway
    • 필수 속성: name, amazon_side_asn
  5. 가상 프라이빗 게이트웨이 (aws_vpn_gateway)
    • 옵션: Direct Connect 게이트웨이를 VPC에 연결하는 데 사용됩니다.
    • 리소스 이름: aws_vpn_gateway
    • 필수 속성: vpc_id
    • 옵션 속성: availability_zone
  6. 전송 게이트웨이 (aws_ec2_transit_gateway)
    • 옵션: 여러 VPC 또는 온프레미스 네트워크 간 트래픽을 라우팅할 때 사용합니다.
    • 리소스 이름: aws_ec2_transit_gateway
    • 필수 속성: amazon_side_asn
    • 옵션 속성: description, default_route_table_association

 

Terraform 예시

# Direct Connect 연결 생성
resource "aws_dx_connection" "primary_connection" {
  name       = "Primary-DirectConnect-Connection"  # Direct Connect 연결의 이름
  bandwidth  = "1Gbps"                             # 연결 대역폭 (예: 1Gbps, 10Gbps)
  location   = "EqSe2"                             # 연결 위치 (AWS Direct Connect 위치)
  
  # 옵션
  provider_name = "AWS"                            # AWS Direct Connect 제공자 이름 (기본적으로 AWS 사용)
}

# 가상 프라이빗 인터페이스 생성 (VPC에 연결할 때 사용)
resource "aws_dx_private_virtual_interface" "primary_vif" {
  connection_id   = aws_dx_connection.primary_connection.id   # 연결할 Direct Connect ID
  vlan            = 101                                       # VLAN ID
  address_family  = "ipv4"                                    # IPv4 또는 IPv6 사용
  bgp_asn         = 65000                                     # BGP ASN (고객 측 ASN)
  
  # VPC에 연결을 위한 정보
  vpn_gateway_id  = aws_vpn_gateway.primary_vgw.id            # 가상 프라이빗 게이트웨이 ID
  amazon_address  = "175.45.176.1/30"                         # AWS 측 IP 주소
  customer_address = "175.45.176.2/30"                        # 고객 측 IP 주소
}

# 가상 프라이빗 게이트웨이 생성 (VPC에 연결)
resource "aws_vpn_gateway" "primary_vgw" {
  vpc_id = aws_vpc.main.id                                   # 연결할 VPC ID
}

# Direct Connect 게이트웨이 생성 (여러 VPC에 연결할 수 있는 게이트웨이)
resource "aws_dx_gateway" "primary_dx_gateway" {
  name           = "Primary-DX-Gateway"                     # Direct Connect 게이트웨이 이름
  amazon_side_asn = 64512                                    # AWS 측 ASN
}

# Direct Connect 게이트웨이와 VPC의 가상 프라이빗 게이트웨이 연결
resource "aws_dx_gateway_association" "dx_gw_association" {
  dx_gateway_id         = aws_dx_gateway.primary_dx_gateway.id   # Direct Connect 게이트웨이 ID
  vpn_gateway_id        = aws_vpn_gateway.primary_vgw.id         # 가상 프라이빗 게이트웨이 ID
  allowed_prefixes      = ["10.0.0.0/16"]                        # 허용된 프리픽스 (VPC CIDR)
}

# 전송 게이트웨이 생성 (VPC 또는 온프레미스 연결 라우팅)
resource "aws_ec2_transit_gateway" "primary_transit_gw" {
  amazon_side_asn = 64512                                    # AWS 측 ASN
  description     = "Primary Transit Gateway"                # 설명 (옵션)
}

# Direct Connect 연결에 LAG 생성 (옵션)
resource "aws_dx_lag" "primary_lag" {
  connections_bandwidth = "1Gbps"                            # 각 연결의 대역폭
  location              = aws_dx_connection.primary_connection.location # 연결 위치
  number_of_connections = 2                                  # LAG에 포함될 연결 수
}

# 가상 인터페이스와 라우팅 테이블을 연결 (S3 또는 다른 AWS 서비스에 연결 시 필요)
resource "aws_vpc_endpoint_route_table_association" "s3_endpoint_association" {
  vpc_endpoint_id = aws_vpc_endpoint.s3_vpc_endpoint.id      # S3에 대한 VPC 엔드포인트 ID
  route_table_id  = aws_route_table.private_route_table.id   # 프라이빗 서브넷의 라우팅 테이블 ID
}

각 항목 설명 요약

  • 필수 항목
    • Direct Connect 연결 (aws_dx_connection)
    • 가상 인터페이스 (aws_dx_private_virtual_interface 또는 aws_dx_public_virtual_interface)
    • Direct Connect 게이트웨이 (aws_dx_gateway)
  • 옵션 항목
    • LAG (aws_dx_lag) - 대역폭 집합을 사용하려면
    • 가상 프라이빗 게이트웨이 (aws_vpn_gateway) - VPC 연결 시
    • 전송 게이트웨이 (aws_ec2_transit_gateway) - 여러 VPC 또는 온프레미스 연결 시

이 구조는 AWS Direct Connect 설정을 위한 전반적인 흐름을 나타내며, 필요에 따라 각 리소스를 추가 또는 변경 가능