튜토리얼: AWS 명령줄을 사용하여 AWS Transit Gateway 생성 - Amazon VPC

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

튜토리얼: AWS 명령줄을 사용하여 AWS Transit Gateway 생성

이 튜토리얼에서 AWS CLI을(를) 사용하여 Transit Gateway를 생성하고 두 VPC를 연결하는 방법을 배웁니다. Transit Gateway를 생성하고, 두 VPC를 연결하며, Transit Gateway와 VPC 간의 통신을 활성화하도록 필요한 라우팅을 구성합니다.

사전 조건

시작하기 전에, 다음 사항을 확인해야 합니다.

  • 적절한 권한으로 AWS CLI이(가) 설치 및 구성되어 있어야 합니다. AWS CLI이(가) 설치되어 있지 않다면, AWS 명령줄 인터페이스 문서를 참조합니다.

  • VPC는 CIDR이 동일하거나 겹칠 수 없습니다. 자세한 내용은 Amazon VPC 사용 설명서VPC 생성을 참조하세요.

  • 각 VPC에 하나의 EC2 인스턴스가 있어야 합니다. VPC에 EC2 인스턴스를 시작하는 단계는 Amazon EC2 사용 설명서인스턴스 시작을 참조하세요.

  • 인스턴스 간 ICMP 트래픽을 허용하도록 보안 그룹이 구성되어 있어야 합니다. 보안 그룹을 사용하여 트래픽을 제어하는 단계는 Amazon VPC 사용 설명서에서 보안 그룹을 사용하여 AWS 리소스에 대한 트래픽 제어를 참조하세요.

  • Transit Gateway 작업에 필요한 적절한 IAM 권한이 있어야 합니다. Transit Gateway IAM 권한을 확인하려면 AWS Transit Gateway 가이드AWS Transit Gateways에서 자격 증명 및 액세스 관리를 참조하세요.

1단계: Transit Gateway 생성

Transit Gateway를 생성할 때 AWS은(는) 기본 Transit Gateway 라우팅 테이블을 만들어 기본 연결 라우팅 테이블과 기본 전파 라우팅 테이블로 사용합니다. 다음은 us-west-2 리전에서의 create-transit-gateway 요청 예시를 보여줍니다. 요청에 추가 options이(가) 전달됩니다. 요청에서 전달할 수 있는 옵션 목록을 포함하여 create-transit-gateway 명령에 대한 자세한 정보는 create-transit-gateway를 참조하세요.

aws ec2 create-transit-gateway \ --description "My Transit Gateway" \ --region us-west-2

응답은 Transit Gateway가 생성되었음을 보여줍니다. 응답에서 반환된 Options은(는) 모두 기본값입니다.

{ "TransitGateway": { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "pending", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2025-06-23T17:39:33+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" } } }
참고

이 명령은 ID를 포함하여 새 Transit Gateway에 대한 정보를 반환합니다. 후속 단계에서 필요하므로 Transit Gateway ID(tgw-1234567890abcdef0)를 기록해 두어야 합니다.

2단계: Transit Gateway 가용 상태 확인

Transit Gateway를 생성할 때, pending 상태가 됩니다. 상태는 자동으로 보류 중에서 사용 가능으로 변경되지만, 상태가 변경될 때까지 VPC를 연결할 수 없습니다. 상태를 확인하려면 새로 생성된 Transit Gateway ID와 필터 옵션을 사용하여 describe-transit-gatweways 명령을 실행합니다. filters 옵션은 Name=stateValues=available 쌍을 사용합니다. 이 명령은 Transit Gateway의 상태가 사용 가능한 상태인지 확인하도록 검색합니다. 사용 가능한 상태인 경우 응답은 "State": "available"을(를) 표시합니다. 다른 상태인 경우 아직 사용할 수 없습니다. 명령을 실행하기 전에 몇 분 정도 기다립니다.

describe-transit-gateways 명령에 대한 자세한 정보는 describe-transit-gateways를 참조하세요.

aws ec2 describe-transit-gateways \ --transit-gateway-ids tgw-1234567890abcdef0 \ --filters Name=state,Values=available

진행하기 전에 Transit Gateway 상태가 pending에서 available(으)로 변경될 때까지 기다립니다 다음 응답에서 State이(가) available(으)로 변경됩니다.

{ "TransitGateways": [ { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "available", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2022-04-20T19:58:25+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" }, "Tags": [ { "Key": "Name", "Value": "example-transit-gateway" } ] } ] }

3단계: VPC를 Transit Gateway에 연결

Transit Gateway를 사용할 수 있게 되면, create-transit-gateway-vpc-attachment을(를) 사용하여 각 VPC에 대한 연결을 생성합니다. transit-gateway-id, vpc-id, subnet-ids을(를) 포함해야 합니다.

create-transit-vpc attachment 명령에 대한 자세한 정보는 create-transit-gateway-vpc-attachment를 참조합니다.

다음 예시에서는 각 VPC에 대해 명령이 두 번 실행됩니다.

첫 번째 VPC의 경우, 첫 번째 vpc_idsubnet-ids을(를) 사용하여 다음을 실행합니다.

aws ec2 create-transit-gateway-vpc-attachment \ --transit-gateway-id tgw-1234567890abcdef0 \ --vpc-id vpc-1234567890abcdef0 \ --subnet-ids subnet-1234567890abcdef0

응답은 성공적인 연결을 보여줍니다. 연결은 pending 상태로 생성됩니다. 이 상태는 자동으로 available 상태로 변경되므로 변경할 필요가 없습니다. 몇 분 정도 걸릴 수 있습니다.

{ "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-1234567890abcdef0", "VpcOwnerId": "123456789012", "State": "pending", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef1234567890" ], "CreationTime": "2025-06-23T18:35:11+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" } } }

두 번째 VPC의 경우, 두 번째 vpc_id와(과) subnet-ids을(를) 사용하여 위와 동일한 명령을 실행합니다.

aws ec2 create-transit-gateway-vpc-attachment \ --transit-gateway-id tgw-1234567890abcdef0 \ --vpc-id vpc-abcdef1234567890 \ --subnet-ids subnet-abcdef01234567890

이 명령에 대한 응답 역시 성공적인 연결을 보여주며, 연결은 현재 pending 상태입니다.

{ { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "pending", "SubnetIds": [ "subnet-fedcba0987654321", "subnet-0987654321fedcba" ], "CreationTime": "2025-06-23T18:42:56+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" } } }

4단계: Transit Gateway Attachment의 가용성 확인

Transit Gateway Attachment은 초기 pending 상태로 생성됩니다. 상태가 available(으)로 변경될 때까지 라우팅에서 이 연결을 사용할 수 없습니다. 이는 자동으로 발생합니다. describe-transit-gateways 명령어를 transit-gateway-id와(과) 함께 사용하여 State을(를) 확인하세요. describe-transit-gateways 명령에 대한 자세한 정보는 describe-transit-gateways를 참조하세요.

상태를 확인하기 위해 다음 명령을 실행합니다. 이 예시에서는 선택적 NameValues 필터가 요청에 전달됩니다.

aws ec2 describe-transit-gateway-vpc-attachments \ --filters Name=transit-gateway-id,Values=tgw-1234567890abcdef0

다음 응답은 두 연결 모두 available 상태임을 보여줍니다.

{ "TransitGatewayVpcAttachments": [ { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-1234567890abcdef0", "VpcOwnerId": "123456789012", "State": "available", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef1234567890" ], "CreationTime": "2025-06-23T18:35:11+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" }, "Tags": [] }, { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "available", "SubnetIds": [ "subnet-fedcba0987654321", "subnet-0987654321fedcba" ], "CreationTime": "2025-06-23T18:42:56+00:00", "Options": { "DnsSupport": "enable", "SecurityGroupReferencingSupport": "enable", "Ipv6Support": "disable", "ApplianceModeSupport": "disable" }, "Tags": [] } ] }

5단계: Transit Gateway와 VPC 간의 라우팅 추가

각 VPC의 라우팅 테이블에 경로를 구성하여 create-route 명령어를 transit-gateway-id와(과) 함께 사용하여 Transit Gateway를 통해 다른 VPC로 트래픽을 전달하십시오. 다음 예시에서는 각 라우팅 테이블에 대해 명령이 두 번 실행됩니다. 요청에는 생성하려는 각 VPC 경로에 대한 route-table-id, destination-cidr-block, transit-gateway-id이(가) 포함됩니다.

create-route 명령에 대한 자세한 내용은 create-route를 참조하세요.

첫 번째 VPC의 라우팅 테이블에 대해 다음 명령을 실행합니다.

aws ec2 create-route \ --route-table-id rtb-1234567890abcdef0 \ --destination-cidr-block 10.2.0.0/16 \ --transit-gateway-id tgw-1234567890abcdef0

두 번째 VPC의 라우팅 테이블에 대해 다음 명령을 실행합니다. 이 경로는 첫 번째 VPC와는 다른 route-table-iddestination-cidr-block을(를) 사용합니다. 하지만 단일 Transit Gateway만 사용하고 있기 때문에, 동일한 transit-gateway-id이(가) 사용됩니다.

aws ec2 create-route \ --route-table-id rtb-abcdef1234567890 \ --destination-cidr-block 10.1.0.0/16 \ --transit-gateway-id tgw-1234567890abcdef0

응답은 각 경로에 대해 true을(를) 반환하며, 경로가 생성되었음을 나타냅니다.

{ "Return": true }
참고

대상 CIDR 블록을 귀하의 VPC의 실제 CIDR 블록으로 교체하세요.

6단계: Transit Gateway 테스트

Transit Gateway가 성공적으로 생성되었는지 확인하려면, 한 VPC 내의 EC2 인스턴스에 연결하여 다른 VPC의 인스턴스로 핑을 보낸 다음, ping 명령어를 실행하면 됩니다.

  1. SSH 또는 EC2 Instance Connect를 사용하여 첫 번째 VPC의 EC2 인스턴스에 연결하세요.

  2. 두 번째 VPC의 EC2 인스턴스 프라이빗 IP 주소로 핑을 보냅니다.

    ping 10.2.0.50
    참고

    10.2.0.50을(를) 두 번째 VPC에 있는 EC2 인스턴스의 실제 프라이빗 IP 주소로 교체하세요.

핑이 성공하면, 귀하의 Transit Gateway는 올바르게 구성되어 VPC 간에 트래픽을 라우팅하고 있는 것입니다.

7단계: Transit Gateway 연결 및 Transit Gateway 삭제

Transit Gateway가 더 이상 필요하지 않으면 삭제할 수 있습니다. 먼저, 모든 연결을 삭제해야 합니다. 각 연결마다 transit-gateway-attachment-id을(를) 사용하여 delete-transit-gateway-vpc-attachment 명령어를 실행하세요. 명령을 실행한 후 delete-transit-gateway(을)를 사용하여 Transit Gateway를 삭제합니다. 다음 단계에 따라 이전 단계에서 생성한 두 개의 VPC 연결과 단일 Transit Gateway를 삭제합니다.

중요

모든 Transit Gateway 연결을 삭제하면 더 이상 요금이 발생하지 않습니다.

  1. delete-transit-gateway-vpc-attachment 명령을 사용하여 VPC 연결을 삭제합니다. delete-transit-gateway-vpc-attachment 명령에 대한 자세한 내용은 delete-transit-gateway-vpc-연결를 참조하세요.

    첫 번째 연결의 경우 다음 명령을 실행합니다.

    aws ec2 delete-transit-gateway-vpc-attachment \ --transit-gateway-attachment-id tgw-attach-1234567890abcdef0

    첫 번째 VPC 연결에 대한 삭제 응답은 다음을 반환합니다.

    { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-1234567890abcdef0", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "deleting", "CreationTime": "2025-06-23T18:42:56+00:00" } }

    두 번째 연결에 대해 delete-transit-gateway-vpc-attachment 명령을 실행합니다.

    aws ec2 delete-transit-gateway-vpc-attachment \ --transit-gateway-attachment-id tgw-attach-abcdef1234567890

    두 번째 VPC 연결에 대한 삭제 응답은 다음을 반환합니다.

    The response returns: { "TransitGatewayVpcAttachment": { "TransitGatewayAttachmentId": "tgw-attach-abcdef1234567890", "TransitGatewayId": "tgw-1234567890abcdef0", "VpcId": "vpc-abcdef1234567890", "VpcOwnerId": "123456789012", "State": "deleting", "CreationTime": "2025-06-23T18:42:56+00:00" } }
  2. 연결은 삭제될 때까지 deleting 상태입니다. 삭제되면 Transit Gateway를 삭제할 수 있습니다. delete-transit-gateway 명령어와 함께 transit-gateway-id을(를) 사용하세요. delete-transit-gateway 명령어에 대한 자세한 내용은 delete-transit-gateway를 참조하세요.

    다음 예시는 위에 있는 첫 번째 단계에서 생성하신 My Transit Gateway을(를) 삭제합니다.

    aws ec2 delete-transit-gateway \ --transit-gateway-id tgw-1234567890abcdef0

    다음은 요청에 대한 응답을 보여주며, 여기에는 삭제된 Transit Gateway ID와 이름, 그리고 Transit Gateway 생성 시 설정된 원래 옵션이 포함됩니다.

    { "TransitGateway": { "TransitGatewayId": "tgw-1234567890abcdef0", "TransitGatewayArn": "arn:aws:ec2:us-west-2:123456789012:transit-gateway/tgw-1234567890abcdef0", "State": "deleting", "OwnerId": "123456789012", "Description": "My Transit Gateway", "CreationTime": "2025-06-23T17:39:33+00:00", "Options": { "AmazonSideAsn": 64512, "AutoAcceptSharedAttachments": "disable", "DefaultRouteTableAssociation": "enable", "AssociationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "DefaultRouteTablePropagation": "enable", "PropagationDefaultRouteTableId": "tgw-rtb-abcdef1234567890a", "VpnEcmpSupport": "enable", "DnsSupport": "enable", "SecurityGroupReferencingSupport": "disable", "MulticastSupport": "disable" }, "Tags": [ { "Key": "Name", "Value": "example-transit-gateway" } ] } }

결론

Transit Gateway를 성공적으로 생성하고, 두 VPC를 연결했으며, 그 사이의 라우팅을 구성하고, 연결을 확인했습니다. 이 간단한 예시는 AWS Transit Gateway의 기본 기능을 보여줍니다. 온프레미스 네트워크 연결 또는 더 고급 라우팅 구성 구현과 같은 더 복잡한 시나리오에 대해서는 AWS Transit Gateways 가이드를 참조합니다.