All Products
Search
Document Center

Cloud Enterprise Network:Akses OSS lintas wilayah dari ECS melalui Transit Router

Last Updated:Sep 04, 2026

Topik ini menjelaskan cara menggunakan router transit Edisi Perusahaan untuk mengaktifkan instance Elastic Compute Service (ECS) di Virtual Private Cloud (VPC) agar dapat mengakses Object Storage Service (OSS) secara privat lintas wilayah.

Catatan

Kode contoh dalam tutorial ini mendukung eksekusi satu klik. Anda dapat menjalankan kode tersebut secara langsung. Jalankan satu klik

Contoh kasus penggunaan

Topik ini menggunakan skenario pada gambar sebelumnya sebagai contoh. Sebuah perusahaan memiliki VPC, yaitu VPC1, di wilayah China (Shanghai), tempat aplikasi diterapkan pada instance ECS. Perusahaan tersebut menerapkan OSS di wilayah China (Hangzhou) dan ingin agar instance ECS di VPC1 dapat mengakses layanan OSS di wilayah China (Hangzhou) secara privat untuk memperoleh sumber daya yang diperlukan.

OSS adalah layanan cloud tingkat wilayah dan tidak termasuk dalam VPC mana pun, tetapi VPC di wilayah yang sama dapat mengakses OSS melalui titik akhir internal OSS. Oleh karena itu, perusahaan harus membuat VPC, yaitu VPC2, di wilayah China (Hangzhou) tempat OSS diterapkan, serta menggunakan VPC2 sebagai jaringan transit. Selanjutnya, perusahaan menghubungkan VPC1 dan VPC2 ke router transit Edisi Perusahaan di wilayah masing-masing dan membuat koneksi antar-wilayah antara kedua router transit tersebut. Pada saat yang sama, rute untuk blok CIDR internal OSS ditambahkan secara manual di VPC1 dan pada router transit di wilayah China (Hangzhou). Setelah konfigurasi selesai, alur traffic dari instance ECS di VPC1 menuju OSS adalah sebagai berikut: instance ECS → router transit di China (Shanghai) → koneksi antar-wilayah → router transit di China (Hangzhou) → VPC2 → titik akhir internal OSS.

Catatan

Dalam solusi ini, VPC2 hanya berfungsi sebagai jaringan transit yang menyediakan jalur bagi traffic lintas wilayah untuk mencapai titik akhir internal OSS. Jika Anda sudah memiliki VPC di wilayah China (Hangzhou), Anda dapat langsung menghubungkan VPC tersebut ke router transit Edisi Perusahaan sebagai jaringan transit, sehingga tidak perlu membuat VPC2.

Perencanaan jaringan

Penting

Saat merencanakan blok CIDR, pastikan blok CIDR VPC yang perlu saling berkomunikasi tidak tumpang tindih.

Resource

VPC region

CIDR block and IP address

VPC1

China (Shanghai)

Blok CIDR primer: 192.168.0.0/16

  • Blok CIDR vSwitch 1: 192.168.0.0/24. vSwitch 1 berada di Zona M.

  • Blok CIDR vSwitch 2: 192.168.20.0/24. vSwitch 2 berada di Zona N.

  • Alamat IP ECS: 192.168.0.1. Instance ECS diterapkan di vSwitch 1.

VPC2

China (Hangzhou)

Blok CIDR primer: 172.16.0.0/16

  • Blok CIDR vSwitch 1: 172.16.1.0/24. vSwitch 1 berada di Zona J.

  • Blok CIDR vSwitch 2: 172.16.2.0/24. vSwitch 2 berada di Zona K.

Prosedur

Topik ini menyediakan dua metode konfigurasi: konsol dan Terraform. Pilih metode yang sesuai dengan kebutuhan Anda.

Konsol

Persiapan

Sebelum memulai konfigurasi, pastikan Anda telah menyelesaikan persiapan berikut. Untuk informasi mengenai blok CIDR setiap resource, lihat bagian Perencanaan jaringan di atas.

  • Wilayah China (Shanghai): VPC1 telah dibuat dengan blok CIDR primer 192.168.0.0/16. Di VPC1, vSwitch dibuat di dua zona, masing-masing vSwitch memiliki setidaknya satu alamat IP yang tersedia, dan sebuah instance ECS diterapkan di salah satu vSwitch tersebut. Untuk informasi lebih lanjut, lihat Buat VPC dengan blok CIDR IPv4.

  • Wilayah China (Hangzhou): OSS telah diterapkan, artinya bucket OSS telah dibuat. Jika Anda belum membuat bucket, lihat Mulai cepat.

  • Aturan security group VPC1 mengizinkan traffic yang diperlukan. Untuk informasi lebih lanjut, lihat Lihat aturan security group dan Tambahkan aturan security group.

Langkah 1: Buat VPC transit

Di wilayah China (Hangzhou), buat VPC2 dengan blok CIDR primer 172.16.0.0/16, lalu buat vSwitch di dua zona. Pastikan setiap vSwitch memiliki setidaknya satu alamat IP yang tersedia. Dalam solusi ini, VPC2 berfungsi sebagai jaringan transit untuk mengakses layanan OSS. Jika Anda sudah memiliki VPC di wilayah China (Hangzhou), Anda dapat melewati langkah ini dan memilih VPC tersebut di Langkah 2. Untuk informasi lebih lanjut, lihat Buat dan kelola VPC.

Setelah VPC2 dibuat, pastikan aturan security group-nya mengizinkan traffic yang diperlukan agar traffic akses lintas wilayah dari VPC1 tidak diblokir. Untuk informasi lebih lanjut, lihat Lihat aturan security group dan Tambahkan aturan security group.

Langkah 2: Buat konektivitas jaringan menggunakan jaringan berbasis skenario

Gunakan tool jaringan berbasis skenario dari Cloud Enterprise Network (CEN) untuk membuat instans CEN, router transit Edisi Perusahaan, koneksi VPC, dan koneksi antar-wilayah secara batch, serta mengonfigurasi rutenya secara otomatis.

  1. Login ke Konsol CEN. Pada halaman CEN Instance, klik Create CEN Instance.

  2. Pada dialog Create CEN Instance, pilih Create Scenario-specific CEN (Recommended), pilih VPC Interconnection sebagai skenarionya, lalu klik Start Scenario-Based Creation.

  3. Pada tab wilayah pertama, tambahkan konfigurasi jaringan:

    • Region: Pilih China (Hangzhou).

    • Zone: Pilih Zona J dan Zona K.

    • VPC: Pilih VPC2 dan dua vSwitch VPC2.

  4. Klik + di sisi kanan tab untuk membuat tab wilayah baru, lalu tambahkan konfigurasi jaringan:

    • Region: Pilih China (Shanghai).

    • Zone: Pilih Zona M dan Zona N.

    • VPC: Pilih VPC1 dan dua vSwitch VPC1.

  5. Klik Next. Sistem memerlukan beberapa menit untuk menghasilkan ikhtisar konfigurasi. Pada halaman Confirm Networking Settings and Fees, tinjau resource yang akan dibuat secara otomatis dan detail biayanya. Setelah memastikan informasi sudah benar, klik Start deployment.

  6. Penerapan memerlukan waktu sekitar 10 menit. Tunggu hingga penerapan selesai. Sistem kemudian secara otomatis membuat resource berikut:

    • Sebuah instans CEN.

    • Satu router transit Edisi Perusahaan di wilayah China (Hangzhou) dan satu di wilayah China (Shanghai).

    • Koneksi VPC dari VPC1 dan VPC2 ke router transit di wilayah masing-masing.

    • Koneksi antar-wilayah antara kedua router transit.

Catatan

Setelah jaringan berbasis skenario selesai, peering jaringan privat antara VPC1 dan VPC2 telah terbentuk, tetapi instance ECS di VPC1 masih belum dapat mengakses layanan OSS. Anda harus melanjutkan ke langkah berikutnya untuk menambahkan rute blok CIDR internal OSS secara manual.

Langkah 3: Konfigurasikan rute ke layanan OSS di VPC

Setelah koneksi antar-wilayah dibuat, VPC1 dan VPC2 dapat saling berkomunikasi melalui jaringan privat melalui router transit Edisi Perusahaan. Namun, instance ECS di VPC1 masih belum dapat mengakses layanan OSS secara privat melalui router transit Edisi Perusahaan dan VPC2. Anda harus menambahkan rute ke layanan OSS di tabel rute VPC1 untuk mengarahkan traffic yang ditujukan ke layanan OSS ke router transit Edisi Perusahaan.

  1. Login ke Konsol VPC.

  2. Pada bilah menu atas, pilih wilayah tempat instans VPC1 diterapkan.

    Dalam topik ini, wilayah China (Shanghai) dipilih.

  3. Pada panel navigasi kiri, klik Route Tables.

  4. Pada halaman Route Tables, temukan tabel rute instans VPC1 dan klik ID instans tabel rute tersebut.

    Dalam topik ini, VPC1 hanya memiliki satu tabel rute sistem. Jika VPC Anda memiliki beberapa tabel rute, pilih tabel rute yang dikaitkan dengan vSwitch tempat instance ECS diterapkan.

  5. Pada tab Route Entry List, klik tab Custom Route, lalu klik Add Route Entry.

  6. Pada panel Add Route Entry, konfigurasikan parameter berikut, lalu klik OK.

    Berdasarkan informasi berikut, tambahkan rute untuk semua blok CIDR layanan OSS di wilayah China (Hangzhou) ke tabel rute VPC1.

    Untuk informasi semua blok CIDR layanan OSS di wilayah China (Hangzhou), lihat Akses OSS melalui titik akhir dan domain bucket.

    Parameter

    Description

    Route entry 1

    Route entry 2

    Route entry 3

    Route entry 4

    Name

    Masukkan nama untuk entri rute kustom.

    OSS CIDR block 1

    OSS CIDR block 2

    OSS CIDR block 3

    OSS CIDR block 4

    Destination CIDR Block

    Masukkan blok CIDR tujuan.

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    Next Hop Type

    Pilih jenis lompatan berikutnya untuk entri rute kustom, lalu pilih lompatan berikutnya.

    Pilih Transit Router, lalu pilih koneksi VPC1.

    Pilih Transit Router, lalu pilih koneksi VPC1.

    Pilih Transit Router, lalu pilih koneksi VPC1.

    Pilih Transit Router, lalu pilih koneksi VPC1.

Langkah 4: Konfigurasikan rute ke layanan OSS pada router transit

Anda juga harus menambahkan rute ke layanan OSS di tabel rute router transit Edisi Perusahaan di wilayah China (Hangzhou). Setelah traffic yang ditujukan ke layanan OSS memasuki router transit Edisi Perusahaan dari instance ECS di VPC1, router transit akan mengarahkan traffic tersebut ke VPC2 berdasarkan rute ke layanan OSS. Dengan demikian, instance ECS dapat mengakses layanan OSS secara privat melalui VPC2.

  1. Login ke Konsol CEN.

  2. Pada halaman Cloud Enterprise Network, temukan instans CEN target dan klik ID instans CEN tersebut.

  3. Pada tab Basic Settings > Transit Router, temukan instans router transit di wilayah China (Hangzhou) dan klik ID instans tersebut.

  4. Pada halaman detail instans router transit, klik tab Route Table. Di sisi kiri tab, pilih tabel rute router transit target.

    Koneksi VPC1 dan koneksi VPC2 keduanya menggunakan konfigurasi lanjutan default, dan keduanya dikaitkan dengan tabel rute default router transit. Oleh karena itu, topik ini memilih tabel rute default router transit, yaitu tabel rute sistem.

  5. Pada tab Route Entry, klik Add Route Entry.

  6. Pada dialog Add Route Entry, konfigurasikan parameter berikut, lalu klik OK.

    Berdasarkan informasi berikut, tambahkan rute untuk semua blok CIDR layanan OSS di wilayah China (Hangzhou) ke tabel rute router transit.

    Parameter

    Description

    Route entry 1

    Route entry 2

    Route entry 3

    Route entry 4

    Name

    Masukkan nama untuk entri rute.

    OSS CIDR block 1

    OSS CIDR block 2

    OSS CIDR block 3

    OSS CIDR block 4

    Destination CIDR

    Masukkan blok CIDR tujuan entri rute.

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    Blackhole Route

    Menentukan apakah entri rute saat ini merupakan rute blackhole.

    • Yes: Rute ini adalah rute blackhole. Semua traffic yang ditujukan ke rute ini akan dibuang.

    • No: Rute ini bukan rute blackhole. Anda harus menentukan koneksi lompatan berikutnya untuk rute ini.

    Pilih No.

    Pilih No.

    Pilih No.

    Pilih No.

    Next Hop

    Pilih koneksi lompatan berikutnya untuk entri rute.

    Pilih koneksi VPC2.

    Pilih koneksi VPC2.

    Pilih koneksi VPC2.

    Pilih koneksi VPC2.

Langkah 5: Uji konektivitas

Setelah menyelesaikan konfigurasi di atas, instance ECS di VPC1 dapat mengakses layanan OSS lintas wilayah secara privat. Topik ini menggunakan contoh instance ECS yang mengunduh gambar dari layanan OSS untuk menguji konektivitas antara instance ECS di VPC1 dan layanan OSS.

  1. Login ke instance ECS di VPC1. Untuk informasi lebih lanjut, lihat Metode koneksi jarak jauh untuk instance ECS.

  2. Pada instance ECS, coba unduh gambar bernama OSStest.jpg dari layanan OSS.

    Catatan

    Sebelum menjalankan pengujian, pastikan izin baca dan tulis pada file target mengizinkan instance ECS mengakses file tersebut. Untuk informasi lebih lanjut, lihat Ikhtisar izin dan kontrol akses.

    wget https://zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg
    # zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com adalah nama domain akses layanan OSS.
    # OSStest.jpg adalah nama file target.

    Untuk informasi lebih lanjut mengenai nama domain akses OSS, lihat Gunakan titik akhir yang mendukung IPv6 untuk mengakses OSS.

    Jika instance ECS menerima respons serupa seperti berikut, berarti instance ECS dapat mengakses layanan OSS lintas wilayah secara privat.

    [root@iZuf6bxxx hblZ ~]# wget https://zxxx2.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg
    --2023-01-29 16:54:46--  https://zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg
    Resolving zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com (zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com)... 100.xxx.50, 100.xxx.49, 100.
    45, ...
    Connecting to zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com (zxxxx s2.oss-cn-hangzhou-internal.aliyuncs.com)|100.xxx.50|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 611894 (598K) [image/jpeg]
    Saving to: 'OSStest.jpg.5'
    OSStest.jpg.5                 100%[=================================================>] 597.55K     132KB/s    in 4.5s
    2023-01-29 16:54:51 (132 KB/s) - 'OSStest.jpg.5' saved [611894/611894]

Terraform

Anda dapat menggunakan Terraform untuk membangun lingkungan contoh topik ini. Untuk informasi cara menginstal dan mengonfigurasi Terraform, lihat Instal Terraform.

Langkah-langkah berikut menggunakan host Linux yang menjalankan Terraform v1.9.8 sebagai contoh. Sebelum memulai, pastikan Anda telah menyelesaikan Authentication.

Catatan

Beberapa resource dalam tutorial ini menimbulkan biaya. Hapus atau batalkan langganan resource tersebut jika tidak lagi diperlukan.

Langkah 1: Buat resource

  1. Buat direktori untuk skenario dalam topik ini, lalu masuk ke direktori tersebut.

    mkdir tf-cen-oss && cd tf-cen-oss
  2. Buat file main.tf untuk mendefinisikan informasi resource.

    touch main.tf
  3. Buka file main.tf, salin kode berikut, tempelkan ke dalam file, lalu simpan file tersebut. File ini berisi resource dan konfigurasi yang diperlukan untuk skenario dalam topik ini.

    variable "pname" {
      description = "The prefix name for resources"
      type        = string
      default     = "tf-cen-oss"
    }
    variable "region_id_hangzhou" {
      description = "The region id of hangzhou"
      type        = string
      default     = "cn-hangzhou"
    }
    variable "region_id_shanghai" { #
      description = "The region id of shanghai"
      type        = string
      default     = "cn-shanghai"
    }
    variable "az_hangzhou" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-hangzhou-j", "cn-hangzhou-k"]
    }
    variable "az_shanghai" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-shanghai-m", "cn-shanghai-n"]
    }
    variable "cidr_list" {
      description = "List of VPC CIDR block"
      type        = list(string)
      default     = ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
    }
    # --- provider ---
    provider "alicloud" { # default region hangzhou
      region = var.region_id_hangzhou
    }
    provider "alicloud" {
      alias  = "hangzhou"
      region = var.region_id_hangzhou
    }
    provider "alicloud" {
      alias  = "shanghai"
      region = var.region_id_shanghai
    }
    # ---  oss ---
    resource "random_uuid" "default" {
    }
    resource "alicloud_oss_bucket" "bucket1" {
      provider = alicloud.hangzhou
      bucket   = substr("${var.pname}-${replace(random_uuid.default.result, "-", "")}", 0, 32)
    }
    resource "alicloud_oss_bucket_policy" "default" {
      provider = alicloud.hangzhou
      policy   = jsonencode({ "Version" : "1", "Statement" : [{ "Action" : ["oss:GetObject"], "Effect" : "Allow", "Resource" : ["acs:oss:*:*:${alicloud_oss_bucket.bucket1.bucket}"] }] })
      bucket   = alicloud_oss_bucket.bucket1.bucket
    }
    resource "alicloud_oss_bucket_object" "obj1" {
      provider = alicloud.hangzhou
      bucket   = alicloud_oss_bucket.bucket1.bucket
      key      = "example.txt"                     # Name of the file in the bucket
      content  = "this is example text content \n" # Content of the file
      acl      = "public-read"
    }
    # --- vpc ---
    resource "alicloud_vpc" "vpc1" {
      provider   = alicloud.shanghai
      vpc_name   = "${var.pname}-1"
      cidr_block = "192.168.0.0/16"
    }
    resource "alicloud_vpc" "vpc2" {
      provider   = alicloud.hangzhou
      vpc_name   = "${var.pname}-2"
      cidr_block = "172.16.0.0/16"
    }
    resource "alicloud_vswitch" "vsw1-1" {
      provider     = alicloud.shanghai
      vpc_id       = alicloud_vpc.vpc1.id
      cidr_block   = "192.168.0.0/24"
      zone_id      = var.az_shanghai[0]
      vswitch_name = "${var.pname}-vsw1-1"
    }
    resource "alicloud_vswitch" "vsw1-2" {
      provider     = alicloud.shanghai
      vpc_id       = alicloud_vpc.vpc1.id
      cidr_block   = "192.168.1.0/24"
      zone_id      = var.az_shanghai[1]
      vswitch_name = "${var.pname}-vsw1-2"
    }
    resource "alicloud_vswitch" "vsw2-1" {
      provider     = alicloud.hangzhou
      vpc_id       = alicloud_vpc.vpc2.id
      cidr_block   = "172.16.0.0/24"
      zone_id      = var.az_hangzhou[0]
      vswitch_name = "${var.pname}-vsw2-1"
    }
    resource "alicloud_vswitch" "vsw2-2" {
      provider     = alicloud.hangzhou
      vpc_id       = alicloud_vpc.vpc2.id
      cidr_block   = "172.16.1.0/24"
      zone_id      = var.az_hangzhou[1]
      vswitch_name = "${var.pname}-vsw2-2"
    }
    # --- cen ---
    # cen
    resource "alicloud_cen_instance" "cen1" {
      cen_instance_name = "${var.pname}-cen1"
    }
    # tr
    resource "alicloud_cen_transit_router" "tr1" {
      provider            = alicloud.shanghai
      transit_router_name = "${var.pname}-tr1"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    resource "alicloud_cen_transit_router" "tr2" {
      provider            = alicloud.hangzhou
      transit_router_name = "${var.pname}-tr2"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    data "alicloud_cen_transit_router_route_tables" "tr1" { # get tr sys table
      transit_router_id               = alicloud_cen_transit_router.tr1.transit_router_id
      transit_router_route_table_type = "System"
    }
    data "alicloud_cen_transit_router_route_tables" "tr2" {
      transit_router_id               = alicloud_cen_transit_router.tr2.transit_router_id
      transit_router_route_table_type = "System"
    }
    # tr-peer
    resource "alicloud_cen_transit_router_peer_attachment" "peer" {
      provider                      = alicloud.shanghai
      cen_id                        = alicloud_cen_instance.cen1.id
      transit_router_id             = alicloud_cen_transit_router.tr1.transit_router_id
      peer_transit_router_region_id = var.region_id_hangzhou
      peer_transit_router_id        = alicloud_cen_transit_router.tr2.transit_router_id
      bandwidth_type                = "DataTransfer"
      bandwidth                     = 1
      auto_publish_route_enabled    = true # default is false
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    # attach1  
    resource "alicloud_cen_transit_router_vpc_attachment" "attach1" {
      provider          = alicloud.shanghai
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
      vpc_id            = alicloud_vpc.vpc1.id
      zone_mappings {
        zone_id    = var.az_shanghai[0]
        vswitch_id = alicloud_vswitch.vsw1-1.id
      }
      zone_mappings {
        zone_id    = var.az_shanghai[1]
        vswitch_id = alicloud_vswitch.vsw1-2.id
      }
      transit_router_vpc_attachment_name = "attach1"
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc1_to_tr1" {
      provider              = alicloud.shanghai
      count                 = 3
      route_table_id        = alicloud_vpc.vpc1.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    # attach2
    resource "alicloud_cen_transit_router_vpc_attachment" "attach2" {
      provider          = alicloud.hangzhou
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
      vpc_id            = alicloud_vpc.vpc2.id
      zone_mappings {
        zone_id    = var.az_hangzhou[0]
        vswitch_id = alicloud_vswitch.vsw2-1.id
      }
      zone_mappings {
        zone_id    = var.az_hangzhou[1]
        vswitch_id = alicloud_vswitch.vsw2-2.id
      }
      transit_router_vpc_attachment_name = "attach2"
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc2_to_tr2" {
      provider              = alicloud.hangzhou
      count                 = 3
      route_table_id        = alicloud_vpc.vpc2.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    # oss_cidr
    variable "oss_cidr" {
      description = "The OSS CIDR block"
      type        = list(string)
      default     = ["100.118.28.0/24", "100.114.102.0/24", "100.98.170.0/24", "100.118.31.0/24"]
    }
    # vpc entry
    resource "alicloud_route_entry" "entry" {
      provider              = alicloud.shanghai
      count                 = 4
      route_table_id        = alicloud_vpc.vpc1.route_table_id
      destination_cidrblock = var.oss_cidr[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    # tr entry 
    resource "alicloud_cen_transit_router_route_entry" "tr2_rt1_entry1" {
      count                                             = 4
      transit_router_route_table_id                     = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_route_entry_destination_cidr_block = var.oss_cidr[count.index]
      transit_router_route_entry_next_hop_type          = "Attachment"
      transit_router_route_entry_next_hop_id            = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    # --- ecs ---
    resource "alicloud_instance" "main" {
      provider             = alicloud.shanghai
      depends_on           = [alicloud_cen_transit_router_route_entry.tr2_rt1_entry1]
      instance_name        = "${var.pname}-ecs"
      instance_type        = "ecs.e-c1m1.large"
      security_groups      = [alicloud_security_group.default.id]
      vswitch_id           = alicloud_vswitch.vsw1-1.id
      image_id             = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
      system_disk_category = "cloud_essd"
      private_ip           = "192.168.0.1"
      instance_charge_type = "PostPaid"
      user_data = base64encode(<<-EOT
        #!/bin/bash
        curl  https://${alicloud_oss_bucket.bucket1.bucket}.${alicloud_oss_bucket.bucket1.intranet_endpoint}/${alicloud_oss_bucket_object.obj1.key}  > /root/curl.txt
      EOT
      )
    }
    # sg
    resource "alicloud_security_group" "default" {
      provider            = alicloud.shanghai
      security_group_name = var.pname
      vpc_id              = alicloud_vpc.vpc1.id
    }
    resource "alicloud_security_group_rule" "allow_inbound_ssh" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_icmp" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
    # --- output ---
    output "ecs_login_address" {
      value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.region_id_shanghai}&instanceId=${alicloud_instance.main.id}"
    }
    output "test_command" {
      value = "curl ${alicloud_oss_bucket.bucket1.bucket}.${alicloud_oss_bucket.bucket1.intranet_endpoint}/${alicloud_oss_bucket_object.obj1.key}"
    }
  4. Inisialisasi direktori untuk menyelesaikan inisialisasi Terraform.

    terraform init
  5. Buat resource tersebut. Setelah menjalankan perintah, Terraform akan menampilkan pratinjau resource yang akan dibuat. Setelah memastikan informasi sudah benar, masukkan yes untuk mulai membuat resource.

    terraform apply

Langkah 2: Verifikasi hasil

  1. Login ke instance ECS bernama tf-cen-oss-ecs.

    Anda dapat menemukan alamat login instance ECS di Output Terraform, salin alamat tersebut, lalu buka di browser. Saat login, pilih Temporary SSH Key-based sebagai metode autentikasi.

    Outputs:
    ecs_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai&instanceId=i-uf6xxx"
    test_command = "curl xxx"
  2. Di bagian Output, salin perintah yang dimulai dengan curl:

    Outputs:
    ecs_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai"
    test_command = "curl tf-cen-oss-xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt"
  3. Pada instance ECS, jalankan perintah curl:

    curl tf-cen-oss-xxxxxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt
    [root@iZuf6xxx          ~]# curl tf-cen-oss-2821xxx xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt
    this is example text content
    [root@iZuf6xxx          ~]#

    Seperti yang ditunjukkan di atas, jika konten teks dikembalikan, akses berhasil.

Langkah 3: Melepas sumber daya

Setelah verifikasi selesai, jika Anda tidak lagi menggunakan resource tersebut, jalankan perintah berikut untuk menghapus resource dan mencegah biaya tambahan.

terraform destroy --auto-approve

Rute

Dalam topik ini, konfigurasi rute default digunakan ketika tool jaringan berbasis skenario secara otomatis membuat koneksi VPC dan koneksi antar-wilayah. Dengan konfigurasi rute default, CEN secara otomatis mengiklankan dan mempelajari rute untuk mengaktifkan komunikasi antara VPC1 dan VPC2. Konfigurasi rute default dijelaskan sebagai berikut:

VPC

Jika Anda menggunakan konfigurasi rute default saat membuat koneksi VPC, artinya semua pengaturan lanjutan diaktifkan, sistem secara otomatis menerapkan konfigurasi rute berikut ke VPC:

  • Associate with Default Route Table of Transit Router

    Setelah fitur ini diaktifkan, koneksi VPC secara otomatis dikaitkan dengan tabel rute default router transit. Router transit meneruskan traffic VPC dengan melakukan kueri pada tabel rute default.

  • Propagate system routes to transit router route table

    Setelah fitur ini diaktifkan, VPC menyebarkan rute sistemnya sendiri ke tabel rute default router transit, sehingga memungkinkan instance jaringan saling berkomunikasi.

  • Auto-add transit router routes to all VPC route tables

    Setelah fitur ini diaktifkan, sistem secara otomatis menambahkan tiga entri rute, yaitu 10.0.0.0/8, 172.16.0.0/12, dan 192.168.0.0/16, ke semua tabel rute instans VPC. Lompatan berikutnya dari ketiga entri rute tersebut adalah koneksi VPC.

Koneksi antar-wilayah

Jika Anda menggunakan konfigurasi rute default saat membuat koneksi antar-wilayah, artinya semua pengaturan lanjutan diaktifkan, sistem secara otomatis menerapkan konfigurasi rute berikut ke koneksi antar-wilayah:

  • Associate with Default Route Table of Transit Router

    Mengaitkan koneksi antar-wilayah dengan tabel rute sistem router transit di kedua wilayah. Traffic antar-wilayah diteruskan berdasarkan tabel rute sistem ini.

  • Propagate system routes to transit router route table

    Membentuk hubungan pembelajaran rute antara koneksi antar-wilayah dan tabel rute sistem router transit di kedua wilayah.

  • Automatically Advertise Routes to Peer Region

    Mengiklankan rute dari tabel rute router transit lokal ke tabel rute router transit rekan, sehingga mengaktifkan konektivitas antar-wilayah untuk instance jaringan.

Lihat entri rute

Anda dapat melihat informasi entri rute instans terkait di konsol Alibaba Cloud: