Todos os produtos
Search
Central de documentação

Cloud Enterprise Network:Access cross-region OSS from ECS via Transit Router

Última atualização: Jul 03, 2026

Este tópico descreve como usar um transit router da Enterprise Edition para permitir que instâncias ecs em uma Virtual Private Cloud (VPC) acessem o OSS entre regiões de forma privada.

Nota

Execute o código de exemplo deste tutorial com um único clique: execução com um clique.

Cenário

image

Neste cenário, uma empresa implantou aplicações em instâncias ecs na VPC1, localizada na região China (Shanghai). A empresa também utiliza um serviço OSS na região China (Hangzhou). O objetivo é permitir que essas instâncias ecs acessem o serviço OSS e recuperem recursos de forma privada.

O OSS é um serviço regional e não reside em nenhuma VPC. No entanto, uma VPC na mesma região pode acessar o serviço OSS por meio de seu endpoint interno. Portanto, crie uma VPC (VPC2) na região China (Hangzhou), onde o serviço OSS está disponível, para atuar como rede de trânsito. Em seguida, conecte a VPC1 e a VPC2 aos transit routers da Enterprise Edition em suas respectivas regiões e crie uma conexão inter-regional entre os dois transit routers. Adicione manualmente rotas para o bloco CIDR interno do OSS na VPC1 e no transit router da região China (Hangzhou). Após a configuração, os dados de uma instância ecs na VPC1 fluem para o OSS da seguinte forma: instância ecs → transit router em China (Shanghai) → conexão inter-regional → transit router em China (Hangzhou) → VPC2 → endpoint interno do OSS.

Nota

Nesta solução, a VPC2 serve apenas como rede de trânsito, fornecendo um caminho para o tráfego inter-regional até o endpoint interno do OSS. Se você já possui uma VPC na região China (Hangzhou), conecte-a diretamente ao transit router da Enterprise Edition para atuar como rede de trânsito. Não é necessário criar a VPC2.

Planejamento de rede

Importante

Certifique-se de que os blocos CIDR das VPCs interconectadas não se sobreponham.

Recurso

Região da VPC

CIDR e ip

VPC1

China (Shanghai)

Bloco CIDR primário: 192.168.0.0/16

  • Bloco CIDR do vSwitch 1: 192.168.0.0/24 (zona de disponibilidade M).

  • Bloco CIDR do vSwitch 2: 192.168.20.0/24 (zona de disponibilidade N).

  • Endereço ip da ecs: 192.168.0.1 (instância no vSwitch 1).

VPC2

China (Hangzhou)

Bloco CIDR primário: 172.16.0.0/16

  • Bloco CIDR do vSwitch 1: 172.16.1.0/24 (zona de disponibilidade J).

  • Bloco CIDR do vSwitch 2: 172.16.2.0/24 (zona de disponibilidade K).

Etapas

Este tópico descreve dois métodos de configuração: console e Terraform.

Console

Antes de começar

Antes de iniciar, conclua as seguintes preparações. Para obter informações sobre os blocos CIDR de cada recurso, consulte a seção Planejamento de rede acima.

  • Na região China (Shanghai): Crie uma VPC chamada VPC1 com o bloco CIDR primário 192.168.0.0/16. Na VPC1, crie vSwitches em duas zonas de disponibilidade distintas. Cada vSwitch deve ter pelo menos um endereço ip disponível, e uma instância ecs deve estar implantada em um dos vSwitches. Para mais informações, consulte Criar uma VPC IPv4.

  • Na região China (Hangzhou): Implante um serviço OSS criando um bucket do OSS. Para instruções, consulte Guia de início rápido.

  • Configure as regras do grupo de segurança da VPC1 para permitir o tráfego necessário. Para mais informações, consulte Consultar regras de grupo de segurança e Adicionar regras de grupo de segurança.

Etapa 1: Criar uma VPC de trânsito

Na região China (Hangzhou), crie uma VPC chamada VPC2 com o bloco CIDR primário 172.16.0.0/16. Em seguida, crie vSwitches em duas zonas de disponibilidade distintas, garantindo que cada vSwitch tenha pelo menos um endereço ip disponível. Nesta solução, a VPC2 atua como rede de trânsito para acessar o serviço OSS. Se você já possui uma instância de VPC na região China (Hangzhou), pule esta etapa e selecione a VPC existente na Etapa 2. Para mais informações, consulte Criar e gerenciar uma VPC.

Após criar a VPC2, verifique se as regras do grupo de segurança permitem o tráfego necessário e não bloqueiam o tráfego inter-regional proveniente da VPC1. Para mais informações, consulte Consultar regras de grupo de segurança e Adicionar regras de grupo de segurança.

Etapa 2: Usar a ferramenta de rede baseada em cenários

Use a ferramenta de rede baseada em cenários do CEN para criar automaticamente uma instância CEN, transit routers da Enterprise Edition, conexões de VPC e uma conexão inter-regional, além de configurar suas rotas.

  1. Faça login no console do CEN. Na página CEN Instance, clique em Create CEN Instance.

  2. Na caixa de diálogo Create CEN Instance, selecione Create Scenario-specific CEN (Recommended). Para VPC Interconnection, selecione VPC Interconnection e clique em Start scenario-based creation.

  3. Na primeira aba de região, adicione as configurações de rede:

    • Region: Selecione China (Hangzhou).

    • Zone: Selecione Availability Zone J e Availability Zone K.

    • VPC: Selecione a VPC2 e seus dois vSwitches correspondentes.

  4. Clique em + no lado direito da aba para adicionar uma nova aba de região e adicione as configurações de rede:

    • Region: Selecione China (Shanghai).

    • Zone: Selecione Availability Zone M e Availability Zone N.

    • VPC: Selecione a VPC1 e seus dois vSwitches correspondentes.

  5. Clique em Next. A geração do resumo da configuração leva alguns minutos. Na página Confirm Networking Settings and Fees, revise os recursos que serão criados automaticamente e seus custos. Após confirmar as informações, clique em Start deployment.

  6. A implantação leva cerca de 10 minutos. Após a conclusão, os seguintes recursos são criados automaticamente:

    • Uma instância CEN.

    • Um transit router da Enterprise Edition na região China (Hangzhou) e outro na região China (Shanghai).

    • Conexões de VPC da VPC1 e da VPC2 para os transit routers em suas respectivas regiões.

    • Uma conexão inter-regional entre os dois transit routers.

Nota

Embora a VPC1 e a VPC2 possam se comunicar por uma conexão privada após a conclusão da configuração de rede baseada em cenários, as instâncias ecs na VPC1 ainda não conseguem acessar o serviço OSS.

Etapa 3: Configurar rotas da VPC para o OSS

Após a criação da conexão inter-regional, a VPC1 e a VPC2 podem se comunicar através dos transit routers da Enterprise Edition. No entanto, as instâncias ecs na VPC1 ainda não conseguem acessar o serviço OSS de forma privada por meio do transit router da Enterprise Edition e da VPC2. Adicione rotas para o serviço OSS na tabela de rotas da VPC1 para direcionar o tráfego destinado ao serviço OSS para o transit router da Enterprise Edition.

  1. Faça login no console da VPC.

  2. Na barra de navegação superior, selecione a região onde a instância VPC1 está implantada.

    Neste exemplo, China (Shanghai) está selecionado.

  3. No painel de navegação à esquerda, clique em Route Tables.

  4. Na página Route Tables, localize a tabela de rotas da VPC1 e clique em seu ID.

    Neste exemplo, a VPC1 possui apenas uma tabela de rotas do sistema. Se sua VPC tiver várias tabelas de rotas, selecione a tabela associada ao vSwitch onde a instância ecs está implantada.

  5. Na aba Route Entry List, clique na aba Custom Route e clique em Add Route Entry.

  6. No painel Add Route Entry, configure os seguintes parâmetros e clique em OK.

    Adicione rotas para todos os blocos CIDR do serviço OSS na região China (Hangzhou) à tabela de rotas da VPC1.

    Para obter uma lista de todos os blocos CIDR do serviço OSS na região China (Hangzhou), consulte Acessar o OSS usando endpoints e nomes de domínio de bucket.

    Parâmetro

    Descrição

    Entrada de rota 1

    Entrada de rota 2

    Entrada de rota 3

    Entrada de rota 4

    Name

    Insira um nome para a entrada de rota personalizada.

    Bloco CIDR do OSS 1

    Bloco CIDR do OSS 2

    Bloco CIDR do OSS 3

    Bloco CIDR do OSS 4

    Destination CIDR Block

    Insira o bloco CIDR de destino.

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    Next Hop Type

    Selecione o tipo de próximo salto para a entrada de rota personalizada e selecione o próximo salto.

    Selecione Transit Router e selecione a conexão da VPC1.

    Selecione Transit Router e selecione a conexão da VPC1.

    Selecione Transit Router e selecione a conexão da VPC1.

    Selecione Transit Router e selecione a conexão da VPC1.

Etapa 4: Configurar rotas do transit router para o OSS

Adicione rotas para o serviço OSS na tabela de rotas do transit router da Enterprise Edition na região China (Hangzhou). Essas rotas direcionam o tráfego das instâncias ecs na VPC1 para a VPC2, permitindo o acesso privado ao serviço OSS.

  1. Faça login no console do CEN.

  2. Na página Cloud Enterprise Network, localize a instância CEN desejada e clique em seu ID.

  3. Na aba Basic Settings > Transit Router, localize a instância do transit router na região China (Hangzhou) e clique em seu ID.

  4. Na página de detalhes da instância do transit router, clique na aba Route Table. No lado esquerdo da aba, selecione a tabela de rotas desejada.

    Por padrão, as configurações avançadas das conexões da VPC1 e da VPC2 as associam à tabela de rotas padrão do transit router. Portanto, a tabela de rotas padrão (tabela de rotas do sistema) do transit router é selecionada neste exemplo.

  5. Na aba Route Entry, clique em Add Route Entry.

  6. Na caixa de diálogo Add Route Entry, configure os seguintes parâmetros e clique em OK.

    Adicione rotas para todos os blocos CIDR do serviço OSS na região China (Hangzhou) à tabela de rotas do transit router.

    Parâmetro

    Descrição

    Entrada de rota 1

    Entrada de rota 2

    Entrada de rota 3

    Entrada de rota 4

    Name

    Insira um nome para a entrada de rota.

    OSS CIDR block 1

    OSS CIDR block 2

    OSS CIDR block 3

    OSS CIDR block 4

    Destination CIDR

    Insira o bloco CIDR de destino para a entrada de rota.

    100.118.28.0/24

    100.114.102.0/24

    100.98.170.0/24

    100.118.31.0/24

    Blackhole Route

    Indica se a rota é uma rota blackhole.

    • Yes: A rota é uma rota blackhole. Todo o tráfego destinado a esta rota é descartado.

    • No: A rota não é uma rota blackhole. Especifique um próximo salto para a rota.

    Selecione No.

    Selecione No.

    Selecione No.

    Selecione No.

    Next Hop

    Selecione o próximo salto para a entrada de rota.

    Selecione a conexão da VPC2.

    Selecione a conexão da VPC2.

    Selecione a conexão da VPC2.

    Selecione a conexão da VPC2.

Etapa 5: Testar a conectividade

Após concluir as etapas anteriores, as instâncias ecs na VPC1 podem acessar o serviço OSS inter-regional de forma privada. Este exemplo testa a conectividade baixando uma imagem do serviço OSS para uma instância ecs na VPC1.

  1. Faça login na instância ecs na VPC1. Para mais informações, consulte Guia de conexão para instâncias ecs.

  2. Na instância ecs, tente baixar uma imagem chamada OSStest.jpg do serviço OSS.

    Nota

    Antes de executar o teste, certifique-se de que as permissões do arquivo de destino permitem o acesso a partir da instância ecs. Para mais informações, consulte Visão geral de permissões e controle de acesso.

    wget https://zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg
    # zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com is the access domain name of the OSS service.
    # OSStest.jpg is the name of the destination file.

    Para mais informações sobre nomes de domínio de acesso ao OSS, consulte Acessar o OSS via IPv6.

    Se for retornada uma resposta semelhante à seguinte, a instância ecs consegue acessar o serviço OSS inter-regional de forma privada.

    [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

Use o Terraform para construir o ambiente deste exemplo. Para obter informações sobre como instalar e configurar o Terraform, consulte Instalar o Terraform.

As etapas a seguir descrevem como executar o Terraform v1.9.8 em um host Linux. Antes de começar, certifique-se de ter configurado a Autenticação.

Nota

Alguns recursos neste tutorial podem gerar custos. Para evitar cobranças adicionais, libere os recursos quando eles não forem mais necessários.

Etapa 1: Criar recursos

  1. Crie um diretório para o cenário e navegue até ele.

    mkdir tf-cen-oss && cd tf-cen-oss
  2. Crie um arquivo main.tf para definir as informações dos recursos.

    touch main.tf
  3. Abra o arquivo main.tf e copie e cole o seguinte código no arquivo. Este arquivo contém os recursos e configurações necessários para este cenário.

    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. Inicialize sua configuração do Terraform.

    terraform init
  5. Crie os recursos. O Terraform exibirá uma prévia dos recursos a serem criados. Após confirmar, insira yes para iniciar o processo de criação.

    terraform apply

Etapa 2: Testar conectividade

  1. Faça login na instância ecs chamada tf-cen-oss-ecs.

    Nos Outputs do Terraform, localize o endereço de login da instância ecs. Abra este endereço em um navegador. Ao fazer login, selecione Temporary SSH Key-based como método de autenticação.

    Outputs:
    ecs_login_address = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai&instanceId=i-uf6xxx"
    test_command = "curl xxx"
  2. Nos Outputs, copie o comando que começa com 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. Na instância ecs, execute o comando 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          ~]#

    Se o comando retornar o conteúdo de texto esperado, a conexão foi bem-sucedida.

Etapa 3: Liberar recursos

Ao terminar, execute o seguinte comando para liberar os recursos e evitar cobranças adicionais.

terraform destroy --auto-approve

Roteamento

Neste tópico, as conexões de VPC e a conexão inter-regional são criadas automaticamente usando uma ferramenta de rede baseada em cenários, que aplica uma configuração de roteamento padrão. Com essa configuração, o CEN anuncia e aprende rotas automaticamente para habilitar a comunicação entre a VPC1 e a VPC2. A configuração de roteamento padrão é a seguinte:

VPC

Ao criar uma conexão de VPC usando a configuração de roteamento padrão (com todas as configurações avançadas ativadas), o sistema aplica automaticamente as seguintes configurações de roteamento à VPC:

  • Associate with Default Route Table of Transit Router

    Quando este recurso está ativado, o sistema associa automaticamente a conexão da VPC à tabela de rotas padrão do transit router. O transit router então encaminha o tráfego da VPC com base nesta tabela de rotas.

  • Propagate system routes to transit router route table

    Quando este recurso está ativado, a VPC propaga suas rotas de sistema para a tabela de rotas padrão do transit router, permitindo a comunicação entre instâncias de rede.

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

    Quando este recurso está ativado, o sistema adiciona automaticamente três entradas de rota a todas as tabelas de rotas da instância de VPC: 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. O próximo salto dessas entradas de rota é a conexão da VPC.

Conexão inter-regional

Ao criar uma conexão inter-regional usando a configuração de roteamento padrão (com todas as configurações avançadas ativadas), o sistema aplica automaticamente as seguintes configurações de roteamento:

  • Associate with Default Route Table of Transit Router

    Associa a conexão inter-regional às tabelas de rotas do sistema dos transit routers em ambas as regiões. O tráfego inter-regional é encaminhado com base nessas tabelas de rotas do sistema.

  • Propagate system routes to transit router route table

    Estabelece uma relação de aprendizado de rotas entre a conexão inter-regional e as tabelas de rotas do sistema dos transit routers em ambas as regiões.

  • Automatically Advertise Routes to Peer Region

    Anuncia rotas da tabela de rotas do transit router local para a tabela de rotas do transit router remoto, habilitando a conectividade inter-regional para instâncias de rede.

Visualizar entradas de rota

Visualize as entradas de rota de cada instância no Alibaba Cloud Management Console: