기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
튜토리얼: 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=state 및 Values=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_id 및 subnet-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를 참조하세요.
상태를 확인하기 위해 다음 명령을 실행합니다. 이 예시에서는 선택적 Name 및 Values 필터가 요청에 전달됩니다.
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-id 및 destination-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 명령어를 실행하면 됩니다.
-
SSH 또는 EC2 Instance Connect를 사용하여 첫 번째 VPC의 EC2 인스턴스에 연결하세요.
-
두 번째 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 연결을 삭제하면 더 이상 요금이 발생하지 않습니다.
-
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" } } -
연결은 삭제될 때까지
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 가이드를 참조합니다.