全部產品
Search
文件中心

Cloud Enterprise Network:通過企業版轉寄路由器實現ECS私網訪問跨地區的OSS服務

更新時間:Jun 09, 2026

本文介紹如何通過企業版轉寄路由器實現Virtual Private Cloud(Virtual Private Cloud)中的Elastic Compute Service(Elastic Compute Service)私網訪問跨地區的Object Storage Service(Object Storage Service)服務。

說明

本教程所含範例程式碼支援一鍵運行,您可以直接運行代碼。一鍵運行

情境樣本

本文以上圖情境為例。某企業在華東2(上海)地區下擁有一個VPC1,VPC1中使用ECS部署了一些應用服務。企業在華東1(杭州)地區部署了OSS服務,企業希望VPC1下的ECS執行個體可以私網訪問華東1(杭州)地區下的OSS服務以擷取相關資源。

OSS是地區層級的雲端服務,不屬於任何VPC,但同地區的VPC可以通過OSS內網地址訪問OSS服務。因此,企業需要在OSS所屬的華東1(杭州)地區建立一個VPC2作為中轉網路,然後將VPC1和VPC2分別串連至各自地區的企業版轉寄路由器,並在兩個轉寄路由器之間建立跨地區串連。同時,在VPC1和華東1(杭州)的轉寄路由器中手動添加OSS內網網段的路由。配置完成後,VPC1中ECS執行個體訪問OSS的資料流向為:ECS執行個體 → 華東2(上海)轉寄路由器 → 跨地區串連 → 華東1(杭州)轉寄路由器 → VPC2 → OSS內網端點。

說明

VPC2在本方案中僅作為中轉網路,用於為跨地區流量提供到達OSS內網端點的路徑。如果您在華東1(杭州)地區已有VPC執行個體,可以直接將其串連至企業版轉寄路由器作為中轉,無需建立VPC2。

網段規劃

重要

在您規劃網段時,請確保VPC之間要互連的網段沒有重疊。

資源

VPC所屬地區

網段及IP地址

VPC1

華東2(上海)

主網段:192.168.0.0/16

  • 交換器1網段:192.168.0.0/24,交換器1位於可用性區域M。

  • 交換器2網段:192.168.20.0/24,交換器2位於可用性區域N。

  • ECS IP地址:192.168.0.1,ECS執行個體位於交換器1下。

VPC2

華東1(杭州)

主網段:172.16.0.0/16

  • 交換器1網段:172.16.1.0/24,交換器1位於可用性區域J。

  • 交換器2網段:172.16.2.0/24,交換器2位於可用性區域K。

操作步驟

本文提供控制台和Terraform兩種配置方式,請按需選擇。

控制台

準備工作

在開始配置前,請確保您已完成以下準備。各資源的網段資訊請參見上方網段規劃章節。

  • 華東2(上海)地區:已建立VPC1(主網段192.168.0.0/16),VPC1中已在2個可用性區域分別建立交換器,每個交換器至少擁有一個空閑IP地址,並在其中一個交換器下部署了ECS執行個體。具體操作,請參見搭建IPv4專用網路

  • 華東1(杭州)地區:已部署OSS服務(即已建立OSS Bucket)。如果未建立,請參見快速入門

  • 已確保VPC1的安全性群組規則允許相關流量通行。具體操作,請參見查詢安全性群組規則添加安全性群組規則

步驟一:建立中轉VPC

在華東1(杭州)地區建立VPC2(主網段172.16.0.0/16),並在2個可用性區域分別建立交換器,每個交換器至少擁有一個空閑IP地址。VPC2在本方案中作為訪問OSS服務的中轉網路。如果您在華東1(杭州)地區已有VPC執行個體,可以跳過本步驟,直接在步驟二中選擇該VPC。具體操作,請參見建立和管理專用網路

VPC2建立完成後,請確保其安全性群組規則允許相關流量通行,避免攔截來自VPC1的跨地區訪問流量。具體操作,請參見查詢安全性群組規則添加安全性群組規則

步驟二:通過情境化組網建立網路連接

使用雲企業網的情境化組網工具,自動批量完成雲企業網執行個體、企業版轉寄路由器、VPC串連和跨地區串連的建立及路由配置。

  1. 登入雲企業網控制台,在Cloud Enterprise Network執行個體頁面,單擊建立Cloud Enterprise Network執行個體

  2. 建立Cloud Enterprise Network執行個體對話方塊,選擇场景化创建(推荐),情境選擇云上多VPC互联,單擊開始情境化建立

  3. 在第一個地區頁簽下,添加組網配置:

    • 地域:選擇華東1(杭州)

    • 可用区:選中可用性區域J和可用性區域K。

    • VPC:選擇VPC2,並選擇VPC2對應的2個交換器。

  4. 單擊頁簽右側的+,建立一個地區頁簽,添加組網配置:

    • 地域:選擇華東2(上海)

    • 可用区:選中可用性區域M和可用性區域N。

    • VPC:選擇VPC1,並選擇VPC1對應的2個交換器。

  5. 單擊下一步。系統需要幾分鐘來組建組態概覽,請在确认组网配置及费用頁面查看將要自動建立的資源和費用明細,確認無誤後單擊開始部署

  6. 部署時間預計約10分鐘,請耐心等待。部署完成後,系統自動建立以下資源:

    • 一個雲企業網執行個體。

    • 華東1(杭州)和華東2(上海)各一個企業版轉寄路由器。

    • VPC1和VPC2分別到各自地區轉寄路由器的VPC串連。

    • 兩個轉寄路由器之間的跨地區串連。

說明

情境化組網完成後,VPC1和VPC2之間已可以私網互連,但VPC1中的ECS執行個體還無法訪問OSS服務。您需要繼續執行後續步驟,手動添加OSS內網網段的路由。

步驟三:在VPC中配置OSS服務的路由

建立跨地區串連後,VPC1和VPC2可以通過企業版轉寄路由器實現私網互連,但是VPC1中的ECS執行個體依舊無法通過企業版轉寄路由器和VPC2私網訪問OSS服務,您需要在VPC1的路由表中添加OSS服務的路由,引導VPC1訪問OSS服務的流量進入企業版轉寄路由器。

  1. 登入專用網路管理主控台
  2. 在頂部功能表列,選擇VPC1執行個體所屬的地區。

    本文選擇華東2(上海)地區。

  3. 在左側導覽列,單擊路由表

  4. 路由表頁面,找到VPC1執行個體的路由表,單擊路由表執行個體ID。

    本文中VPC1僅擁有一張系統路由表,如果您的VPC中擁有多張路由表,請選擇ECS執行個體所在交換器關聯的路由表。

  5. 路由條目列表頁簽下單擊自訂路由條目頁簽,然後單擊添加路由條目

  6. 添加路由條目面板,配置以下資訊,然後單擊確定

    請根據以下資訊將華東1(杭州)地區下OSS服務所有網段的路由均添加至VPC1的路由表中。

    華東1(杭州)地區下OSS服務所有網段的資訊,請參見通過Endpoint和Bucket網域名稱訪問OSS

    配置項

    配置項說明

    路由條目1

    路由條目2

    路由條目3

    路由條目4

    名稱

    輸入自訂路由條目的名稱。

    OSS網段1

    OSS網段2

    OSS網段3

    OSS網段4

    目標網段

    輸入目標網段。

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    下一跳類型

    選擇自訂路由條目的下一跳類型,並選擇下一跳。

    選擇轉寄路由器,然後選擇VPC1串連。

    選擇轉寄路由器,然後選擇VPC1串連。

    選擇轉寄路由器,然後選擇VPC1串連。

    選擇轉寄路由器,然後選擇VPC1串連。

步驟四:在轉寄路由器中配置OSS服務的路由

您還需要在華東1(杭州)地區的企業版轉寄路由器路由表下添加OSS服務的路由,在VPC1下ECS執行個體訪問OSS服務的流量進入企業版轉寄路由器後,企業版轉寄路由器可以根據OSS服務的路由將流量引導至VPC2,然後ECS執行個體可通過VPC2私網訪問OSS服務。

  1. 登入雲企業網管理控制

  2. Cloud Enterprise Network頁面,找到目標雲企業網執行個體,單擊雲企業網執行個體ID。

  3. 基本資料 > 转发路由器頁簽,找到華東1(杭州)地區下的轉寄路由器執行個體,單擊執行個體ID。

  4. 在轉寄路由器執行個體詳情頁面,單擊转发路由器路由表頁簽,在頁簽左側選擇目標轉寄路由器路由表。

    由於VPC1串連和VPC2串連均採用了預設進階配置,均與轉寄路由器的預設路由表建立了關聯轉寄關係,因此本文選擇轉寄路由器的預設路由表(即系統路由表)。

  5. 路由条目頁簽下,單擊创建路由条目

  6. 添加路由条目對話方塊,根據以下資訊進行配置,然後單擊確定

    請根據以下資訊將華東1(杭州)地區下OSS服務所有網段的路由均添加至轉寄路由器的路由表中。

    配置項

    配置項說明

    路由條目1

    路由條目2

    路由條目3

    路由條目4

    路由条目名称

    輸入路由條目的名稱。

    OSS網段1

    OSS網段2

    OSS網段3

    OSS網段4

    目的地址CIDR

    輸入路由條目的目標網段。

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    是否为黑洞路由

    選擇當前路由條目是否為黑洞路由。

    • :表示該路由為黑洞路由,所有去往該路由的流量均會被丟棄。

    • :表示該路由不為黑洞路由,需要您設定路由的下一跳串連。

    選擇

    選擇

    選擇

    選擇

    下一跳连接

    選擇路由條目的下一跳串連。

    選擇VPC2串連

    選擇VPC2串連

    選擇VPC2串連

    選擇VPC2串連

步驟五:測試連通性

完成上述配置後,VPC1中的ECS執行個體可以私網訪問跨地區的OSS服務了。本文以ECS下載OSS服務中的一張圖片為例測試VPC1下ECS執行個體和OSS服務之間的連通性。

  1. 登入VPC1執行個體下的ECS執行個體。具體操作,請參見ECS遠端連線操作指南

  2. 在ECS執行個體中嘗試下載OSS服務下一張名為OSStest.jgp的圖片。

    說明

    在您測試前請確保目標檔案擁有的讀寫權限允許其被ECS執行個體訪問。更多資訊,請參見許可權與存取控制概述

    wget https://zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg
    #“zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com”為OSS服務訪問網域名稱。
    #“OSStest.jpg”為目標檔案名稱。

    關於OSS訪問網域名稱的更多資訊,請參見通過IPv6協議訪問OSS

    如果ECS可以收到如下所示的回複,則證明ECS已經可以私網訪問跨地區的OSS服務了。

    [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

您可以使用Terraform搭建本文樣本環境,關於Terraform的安裝和配置,請參考Install Terraform

下面步驟以Linux主機運行Terraform v1.9.8為例進行介紹,操作前請確保您已經完成Authentication

說明

本教程樣本包含的部分資源會產生一定費用,請在不需要時及時進行釋放或退訂。

第一步:建立資源

  1. 為本文的實踐情境建立一個目錄,並進入該目錄。

    mkdir tf-cen-oss && cd tf-cen-oss
  2. 建立一個main.tf檔案,用於定義資源資訊。

    touch main.tf
  3. 開啟main.tf檔案,複製如下代碼,粘貼到檔案中並儲存。此檔案包含了本文實踐情境中需要用到的資源和對應配置。

    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
      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.aliyun.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. 初始化目錄,完成Terraform的初始化配置。

    terraform init
  5. 建立資源。執行後Terraform會先預覽將要建立的資源,確認無誤後,輸入yes正式開始建立。

    terraform apply

第二步:驗證測試

  1. 登入ECS執行個體(名稱為tf-cen-oss-ecs)。

    您可以在Terraform的Outputs輸出中,找到對應ECS的登入地址並複製到瀏覽器開啟,登入時注意認證方式選擇臨時SSH密鑰認證

    Outputs:
    ecs_login_address = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai&instanceId=i-uf6xxx"
    test_command = "curl xxx"
  2. 在Outputs輸出中,複製curl開頭的命令:

    Outputs:
    ecs_login_address = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai"
    test_command = "curl tf-cen-oss-xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt"
  3. 在ECS執行個體中執行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          ~]#

    如上所示,如果能擷取到常值內容,則說明訪問成功。

第三步:釋放資源

驗證完畢後,如果您不再使用資源,請執行以下命令釋放資源,防止繼續計費。

terraform destroy --auto-approve

路由說明

在本文中,使用情境化組網工具自動建立VPC串連、跨地區串連時均採用預設路由配置,預設路由配置下雲企業網會自動完成路由的分發和學習以實現VPC1和VPC2之間的相互連信。預設路由配置說明如下:

VPC

建立VPC串連時如果採用預設路由配置(即開啟所有進階配置),則系統會自動對VPC進行以下路由配置:

  • 自动关联至转发路由器的默认路由表

    開啟本功能後,VPC串連會自動關聯至轉寄路由器的預設路由表,轉寄路由器通過查詢預設路由錶轉發VPC的流量。

  • 自动传播系统路由至转发路由器的默认路由表

    開啟本功能後,VPC會將自身的系統路由傳播至轉寄路由器的預設路由表中,用於網路執行個體的互連。

  • 自动为VPC的所有路由表配置指向转发路由器的路由

    開啟本功能後,系統將在VPC執行個體的所有路由表內自動設定10.0.0.0/8、172.16.0.0/12、192.168.0.0/16三條路由條目,其下一跳均指向VPC串連。

跨地區串連

建立跨地區串連時如果採用預設路由配置(即開啟所有進階配置),則系統會自動對跨地區串連進行以下路由配置:

  • 自动关联至转发路由器的默认路由表

    開啟本功能後,跨地區串連將與兩個地區的轉寄路由器的預設路由表建立關聯轉寄關係,兩個地區的轉寄路由器將會通過查詢預設路由錶轉發跨地區間的流量。

  • 自动传播系统路由至转发路由器的默认路由表

    開啟本功能後,跨地區串連將與兩個地區的轉寄路由器的預設路由表建立路由學習關係。

  • 自动发布路由到对端地域

    開啟本功能後,即允許跨地區串連將本端轉寄路由器路由表(指與跨地區串連建立關聯轉寄關係的路由表)下的路由自動傳播至對端轉寄路由器的路由表(指與跨地區串連建立路由學習關係的路由表)中,用於網路執行個體跨地區互連。

查看路由條目

您可以在阿里雲管理主控台查看對應執行個體的路由條目資訊: