Bài viết này hướng dẫn triển khai kết nối mạng giữa hai VPC thuộc hai tài khoản AWS khác nhau bằng cách sử dụng AWS Transit Gateway kết hợp với AWS Resource Access Manager (RAM). Thay vì tạo hai Transit Gateway và kết nối chúng thông qua Peering, chúng ta sẽ xây dựng một Transit Gateway trung tâm tại Account A, chia sẻ tài nguyên này với Account B thông qua RAM, sau đó kết nối cả hai VPC vào Transit Gateway để thiết lập giao tiếp riêng tư giữa các EC2 instance.
1. Tổng quan kiến trúc
Trong bài thực hành này, chúng ta sử dụng hai tài khoản AWS:
- Account A — Network Account: Quản lý Transit Gateway trung tâm và chia sẻ tài nguyên thông qua RAM.
- Account B — Application Account: Sở hữu VPC-B và kết nối VPC này vào Transit Gateway được chia sẻ.

2. Chuẩn bị tài nguyên
Bạn cần chuẩn bị hai tài khoản AWS. Nếu có thể, nên sử dụng hai tài khoản nằm trong cùng một AWS Organization để đơn giản hóa việc chia sẻ tài nguyên.
| Thông tin | Account A | Account B |
|---|---|---|
| Vai trò | Network Account | Application Account |
| Region | ap-southeast-1 |
ap-southeast-1 |
| VPC | VPC-A |
VPC-B |
| VPC CIDR | 10.10.0.0/16 |
10.20.0.0/16 |
| Subnet | 10.10.1.0/24 |
10.20.1.0/24 |
| EC2 | EC2-A |
EC2-B |
| IP riêng EC2 (ví dụ) | 10.10.1.10 |
10.20.1.10 |
Transit Gateway sẽ được tạo trong Account A với tên TGW-Central.
3. Hướng dẫn cấu hình
Bước 1: Tạo VPC trong Account A và Account B
Chi tiết: AWS Transit Gateway: Hướng dẫn kết nối 2 VPC từ A–Z
Bước 2: Tạo Transit Gateway trong Account A
Transit Gateway trung tâm sẽ được tạo và quản lý hoàn toàn bởi Account A.
Bước 2.1: Mở Transit Gateway Console
Trong Account A, truy cập:
VPC Console → Transit Gateways → Create transit gateway
Bước 2.2: Cấu hình Transit Gateway
Nhập các thông số:
| Trường | Giá trị |
|---|---|
| Name tag | TGW-Central |
| Description | Central Transit Gateway for cross-account VPC connectivity |
| Amazon side ASN | Giữ mặc định |
| DNS support | Enable |
| VPN ECMP support | Giữ mặc định |
| Default route table association | Enable |
| Default route table propagation | Enable |
| Auto accept shared attachments | Enable |
Đối với bài lab này, bạn có thể bật Default route table association, Default route table propagation và Auto accept shared attachments để giảm số bước cấu hình thủ công.
Bước 2.3: Tạo Transit Gateway
Nhấn Create transit gateway.
Chờ đến khi Transit Gateway được tạo thành công.
Ghi lại Transit Gateway ID, ví dụ:
tgw-0123456789abcdef0
Bước 3: Chia sẻ Transit Gateway thông qua AWS RAM
Mở AWS RAM Console
Đăng nhập bằng Account A.
Truy cập:
AWS Resource Access Manager Console
Đảm bảo bạn đang chọn Region ap-southeast-1, cùng Region với TGW-Central.
Trong AWS RAM Console:
- Chọn Create resource share.
- Nhập tên Resource Share:
TGW-Central-Share - Tại mục Resources, chọn loại tài nguyên Transit Gateways.
- Chọn Transit Gateway
TGW-Centralvừa tạo. - Nhấn Next.
Resource Share này xác định tài nguyên nào được chia sẻ và tài khoản nào được phép sử dụng tài nguyên đó.
Ở phần Managed permissions, chọn quyền được AWS cung cấp phù hợp với Transit Gateway.
Đối với bài lab cơ bản, hãy sử dụng cấu hình quyền chia sẻ mặc định được đề xuất trên Console, trừ khi bạn có yêu cầu bảo mật cụ thể khác.
Lưu ý rằng việc chia sẻ Transit Gateway không đồng nghĩa với việc cấp cho Account B quyền quản trị toàn bộ Transit Gateway. Account B có thể tạo Attachment cho VPC của mình, nhưng quyền quản lý Transit Gateway Route Table vẫn thuộc Account A.
Nhấn Next.
Tại mục Principals, nhập AWS Account ID của Account B.
Ví dụ:
Account B ID: 222222222222
Đây chỉ là ID minh họa. Hãy thay bằng Account ID thực tế của bạn.
Nếu hai tài khoản không thuộc cùng AWS Organization, hãy kiểm tra tùy chọn cho phép chia sẻ với tài khoản bên ngoài Organization. Nếu chúng thuộc cùng Organization, hãy sử dụng cấu hình chia sẻ phù hợp với chính sách của Organization.
Nhấn Next, kiểm tra lại thông tin rồi chọn Create resource share.
Trong Account A, mở:
AWS RAM → Shared by me → Resource shares
Chọn TGW-Central-Share.
Kiểm tra các thông tin:
- Resource:
TGW-Central. - Principal: Account B.
- Share status: Đã được liên kết thành công.
Bước 4: Chấp nhận Resource Share trong Account B
Bước này áp dụng khi Account B nhận lời mời chia sẻ và cần chấp nhận.
Đăng nhập AWS Console bằng Account B.
Truy cập:
AWS Resource Access Manager Console
Thực hiện:
- Chọn Shared with me.
- Mở Resource shares.
- Tìm
TGW-Central-Share. - Chọn Resource Share.
- Chọn Accept resource share nếu có lời mời đang chờ.
Sau khi chấp nhận, Account B có thể truy cập Transit Gateway được chia sẻ và tạo VPC Attachment cho VPC-B.
Nếu hai tài khoản thuộc cùng Organization và Resource Share đã được tự động chấp nhận, bạn có thể bỏ qua thao tác này.
Kết quả mong đợi: Account B được phép sử dụng TGW-Central mà không cần tạo Transit Gateway riêng.
Bước 5: Tạo VPC Attachment cho VPC-A
Trước tiên, chúng ta kết nối VPC-A của Account A vào Transit Gateway trung tâm.
Đăng nhập bằng Account A.
Truy cập:
VPC Console → Transit Gateway Attachments → Create transit gateway attachment
Cấu hình:
| Trường | Giá trị |
|---|---|
| Name tag | Attachment-VPC-A |
| Transit Gateway ID | TGW-Central |
| Attachment type | VPC |
| VPC ID | VPC-A |
| Subnet | Chọn Subnet-A |
Nhấn Create attachment.
Chờ đến khi Attachment chuyển sang trạng thái Available.
Kiểm tra
Truy cập:
VPC Console → Transit Gateway Attachments
Bạn sẽ thấy Attachment của VPC-A được kết nối với TGW-Central.
VPC-A hiện đã có kết nối đến Transit Gateway, nhưng chưa thể giao tiếp với VPC-B vì chúng ta chưa hoàn tất Attachment và định tuyến cho VPC-B.
Lưu ý: Khi tạo VPC Attachment, phải chọn ít nhất một Subnet trong mỗi Availability Zone mà bạn muốn Transit Gateway phục vụ. Với bài lab tối giản này, một Subnet trong một AZ là đủ để kiểm tra các EC2 nằm trong phạm vi kết nối của AZ đó.
Bước 6: Tạo VPC Attachment cho VPC-B bằng Transit Gateway được chia sẻ
Đây là bước thể hiện rõ lợi ích của AWS RAM.
Thay vì tạo TGW-B, Account B sử dụng trực tiếp TGW-Central được Account A chia sẻ.
Đăng nhập Account B
Đảm bảo Region là ap-southeast-1.
Truy cập:
VPC Console → Transit Gateway Attachments → Create transit gateway attachment
Nhập:
| Trường | Giá trị |
|---|---|
| Name tag | Attachment-VPC-B |
| Transit Gateway ID | TGW-Central được chia sẻ |
| Attachment type | VPC |
| VPC ID | VPC-B |
| Subnet | Chọn Subnet-B |
Nhấn Create attachment.
Nếu không tìm thấy Transit Gateway trong danh sách, hãy kiểm tra:
- Resource Share đã được thiết lập thành công chưa.
- Account B đã chấp nhận lời mời nếu cần chưa.
- Bạn đang chọn đúng Region chưa.
- IAM permissions của người dùng có cho phép tạo Attachment không.
Kiểm tra trạng thái Attachment
Nếu Transit Gateway bật tùy chọn Auto accept shared attachments, Attachment có thể được chấp nhận tự động.
Nếu tùy chọn này bị tắt, Account A cần chấp nhận yêu cầu Attachment.
Đăng nhập Account A, sau đó truy cập:
VPC Console → Transit Gateway Attachments
Tìm Attachment-VPC-B.
Nếu Attachment đang chờ chấp nhận, chọn Attachment và sử dụng thao tác chấp nhận tương ứng trên Console.
Sau khi hoàn thành, kiểm tra cả hai Attachment:
| Attachment | VPC | Transit Gateway | Trạng thái mong đợi |
|---|---|---|---|
Attachment-VPC-A |
VPC-A | TGW-Central | Available |
Attachment-VPC-B |
VPC-B | TGW-Central | Available |
Đến đây, cả hai VPC đã được kết nối với cùng một Transit Gateway.
Bước 7: Cấu hình Transit Gateway Route Table
Sau khi cả hai VPC đã được kết nối với TGW-Central, chúng ta cần kiểm tra định tuyến bên trong Transit Gateway.
Trong bài lab này, chúng ta sử dụng Default Transit Gateway Route Table để đơn giản hóa cấu hình.
Đăng nhập Account A.
Truy cập:
VPC Console → Transit Gateway Route Tables
Chọn Route Table mặc định thuộc TGW-Central.
Bạn có thể xác định Route Table bằng Transit Gateway ID và kiểm tra danh sách Association.
Mở tab Associations.
Nếu bạn đã bật Default route table association khi tạo Transit Gateway, các VPC Attachment sẽ tự động được liên kết với Route Table mặc định khi được chấp nhận.
Kiểm tra xem các Attachment sau đã được liên kết hay chưa:
Attachment-VPC-AAttachment-VPC-B
Nếu thiếu Attachment nào, hãy kiểm tra cấu hình Association và thực hiện liên kết nếu cần.
Lưu ý: Account B không thể trực tiếp sửa Association của Transit Gateway Route Table được chia sẻ. Các thao tác quản lý này phải được thực hiện trong Account A, là tài khoản sở hữu Transit Gateway.
Mở tab Propagations.
Nếu Default route table propagation được bật, các VPC Attachment sẽ tự động quảng bá CIDR của VPC vào Transit Gateway Route Table mặc định.
Kiểm tra xem các tuyến đường sau đã xuất hiện chưa:
| Destination | Target | Route type |
|---|---|---|
10.10.0.0/16 |
Attachment-VPC-A |
Propagated |
10.20.0.0/16 |
Attachment-VPC-B |
Propagated |
Tên Attachment và ID thực tế có thể khác với ví dụ trong bảng.
Nếu các tuyến đường đã xuất hiện, bạn không cần thêm lại chúng dưới dạng static route.
Nếu thiếu tuyến đường, hãy kiểm tra trạng thái Attachment, Association và cấu hình Propagation.
Bước 8: Cập nhật VPC Route Table
Mặc dù Transit Gateway đã biết đường đến hai VPC, các EC2 vẫn cần biết phải gửi lưu lượng đến VPC đối tác thông qua Transit Gateway.
Vì vậy, chúng ta phải cập nhật Route Table của cả hai VPC.
Đăng nhập Account A.
Truy cập:
VPC Console → Route Tables → RTB-A → Routes → Edit routes
Chọn Add route.
Nhập:
| Trường | Giá trị |
|---|---|
| Destination | 10.20.0.0/16 |
| Target | Transit Gateway → TGW-Central |
Nhấn Save changes.
Ý nghĩa: Các tài nguyên trong VPC-A muốn giao tiếp với địa chỉ thuộc 10.20.0.0/16 sẽ gửi lưu lượng đến Transit Gateway.
Cấu hình RTB-B trong Account B
Đăng nhập Account B.
Truy cập:
VPC Console → Route Tables → RTB-B → Routes → Edit routes
Chọn Add route.
Nhập:
| Trường | Giá trị |
|---|---|
| Destination | 10.10.0.0/16 |
| Target | Transit Gateway được chia sẻ → TGW-Central |
Nhấn Save changes.
Nếu Console không hiển thị Transit Gateway trong danh sách Target, hãy kiểm tra lại trạng thái chia sẻ RAM và quyền truy cập của Account B.
Tổng hợp cấu hình định tuyến
| Thành phần | Destination | Target |
|---|---|---|
| RTB-A | 10.20.0.0/16 |
TGW-Central |
| TGW Route Table | 10.10.0.0/16 |
Attachment-VPC-A |
| TGW Route Table | 10.20.0.0/16 |
Attachment-VPC-B |
| RTB-B | 10.10.0.0/16 |
TGW-Central |
Bước 9: Tạo EC2 instance trong mỗi VPC để test
Cleanup: Xóa tài nguyên sau khi hoàn thành
Transit Gateway, các Attachment và các tài nguyên liên quan có thể phát sinh chi phí. Sau khi hoàn thành bài lab, hãy xóa các tài nguyên không còn sử dụng.
Thực hiện theo thứ tự phù hợp:
- Terminate EC2-A và EC2-B.
- Xóa VPC Attachment của VPC-A và VPC-B.
- Trong Account A, xóa Resource Share
TGW-Central-Sharenếu không còn cần sử dụng. - Xóa
TGW-Centralsau khi các Attachment phụ thuộc đã được xóa. - Xóa các Subnet và Route Table không còn sử dụng.
- Xóa VPC-A và VPC-B nếu không còn cần thiết.