このトピックでは、Enterprise Edition Transit Router を使用して、仮想プライベートクラウド(VPC)にデプロイされている Elastic Compute Service(ECS)インスタンスが、VPC 接続を介してリージョンをまたがって Object Storage Service(OSS)にアクセスできるようにする方法について説明します。
この例のサンプルコードは、「ワンクリックで実行する」で実行できます。
シナリオ
上の図に示すように、ある企業が中国(上海)リージョンに VPC1 をデプロイし、ECS インスタンス上でサービスを実行しています。この企業は中国(杭州)リージョンで OSS をアクティブ化しており、VPC1 内の ECS インスタンスが中国(杭州)リージョンの OSS サービスにアクセスできるようにしたいと考えています。
この問題に対処するために、企業は OSS がデプロイされている中国(杭州)リージョンに VPC(VPC2)を作成し、VPC1 と VPC2 を中国(上海)と中国(杭州)リージョンの Enterprise Edition Transit Router に接続できます。 Enterprise Edition Transit Router を使用すると、VPC1 と VPC2 はリージョン間接続を介して相互に通信できます。このようにして、VPC1 内の ECS インスタンスは VPC2 内の OSS にアクセスできます。
VPC 内の ECS インスタンスが Enterprise Edition Transit Router を使用して異なるリージョンの OSS にアクセスできるようにするには、少なくとも 1 つの VPC が OSS がアクティブ化されているリージョンにデプロイされている必要があります。この例では、中国(杭州)リージョンに VPC が存在する場合、企業は VPC2 を作成する必要はなく、既存の VPC を Enterprise Edition Transit Router に接続できます。中国(上海)リージョンの ECS インスタンスは、中国(杭州)リージョンの任意の VPC を介して OSS にアクセスできます。
ネットワーク計画
CIDR ブロックを割り当てるときは、VPC の CIDR ブロックが重複していないことを確認してください。
リソース | VPC リージョン | CIDR ブロックと IP アドレス |
VPC1 | 中国(上海) | プライマリ CIDR ブロック: 192.168.0.0/16
|
VPC2 | 中国(杭州) | プライマリ CIDR ブロック: 172.16.0.0/16
|
手順
このトピックでは、コンソールと Terraform の 2 つの構成方法を紹介します。ニーズに合った方法を選択してください。
コンソール
準備
開始する前に、次の前提条件が満たされていることを確認してください。
OSS は中国(杭州)リージョンでアクティブ化されています。詳細については、「OSS を使い始める」をご参照ください。
VPC1 は中国(上海)リージョンに作成されており、サービスは ECS インスタンスにデプロイされています。詳細については、「IPv4 VPC を作成する」をご参照ください。
VPC2 は中国(杭州)リージョンに作成されています。詳細については、「VPC を作成および管理する」をご参照ください。
Enterprise Edition Transit Router のゾーンの各 VPC に十分な vSwitch がデプロイされています。各 vSwitch には少なくとも 1 つのアイドル IP アドレスがあります。
Enterprise Edition Transit Router が、中国(南京 - ローカルリージョン)など、1 つのゾーンのみをサポートするリージョンにデプロイされている場合、VPC はそのゾーンに少なくとも 1 つの vSwitch を持つ必要があります。
Enterprise Edition Transit Router が、中国(上海)など、複数のゾーンをサポートするリージョンにデプロイされている場合、VPC はそのゾーンに少なくとも 2 つの vSwitch を持つ必要があります。 vSwitch は異なるゾーンにある必要があります。
詳細については、「VPC 接続のしくみ」をご参照ください。
VPC1 と VPC2 のセキュリティグループルールについて理解しています。セキュリティグループルールにより、VPC1 内の ECS インスタンスは VPC2 を介して OSS にアクセスできます。詳細については、「セキュリティグループルールを照会する」および「セキュリティグループルールを追加する」をご参照ください。
Cloud Enterprise Network(CEN)インスタンスが作成されています。詳細については、「CEN インスタンスを作成する」をご参照ください。
Enterprise Edition Transit Router は、中国(上海)と中国(杭州)の両方のリージョンにデプロイされています。詳細については、「Transit Router インスタンスを作成する」をご参照ください。
Enterprise Edition Transit Router を作成するときは、デフォルト設定を使用します。
ステップ 1: VPC 接続を作成する
VPC1 を中国(上海)リージョンの Enterprise Edition Transit Router に接続し、VPC2 を中国(杭州)リージョンの Enterprise Edition Transit Router に接続します。
CEN コンソール にログインします。
[インスタンス] ページに移動し、ターゲット CEN インスタンスを見つけて、その ID をクリックします。
この例では、[準備] セクションで説明した CEN インスタンスを使用します。
タブで、Transit Router インスタンスを見つけて、[接続の作成] 列の [アクション] をクリックします。
[ピアネットワークインスタンスと接続] ページで、次のパラメータを設定し、[OK] をクリックします。
次の表を参照して、VPC1 を中国(上海)リージョンの Enterprise Edition Transit Router に、VPC2 を中国(杭州)リージョンの Enterprise Edition Transit Router に接続するようにパラメータを構成します。
パラメータ
説明
VPC1
VPC2
ネットワークタイプ
接続するネットワークインスタンスのタイプを選択します。
仮想プライベートクラウド(VPC)
仮想プライベートクラウド(VPC)
リージョン
ネットワークインスタンスがデプロイされているリージョンを選択します。
中国(上海)
中国(杭州)
Transit Router
選択したリージョンにある Transit Router の ID が自動的に表示されます。
リソースオーナー ID
インスタンスが属する Alibaba Cloud アカウントを選択します。
現在のアカウント
現在のアカウント
課金方法
デフォルト値は 従量課金制 です。
添付ファイル名
ネットワーク接続の名前を入力します。
VPC1 接続
VPC2 接続
ネットワークインスタンス
ネットワークインスタンスの ID を選択します。
VPC1 を選択
VPC2 を選択
VSwitch
Transit Router のゾーンにある vSwitch を選択します。
Transit Router の各ゾーンに vSwitch がある場合は、複数のゾーンを選択し、各ゾーンで vSwitch を選択して、ゾーンディザスタリカバリを有効にできます。
上海ゾーン F: vSwitch 1 を選択
上海ゾーン G: vSwitch 2 を選択
杭州ゾーン H: vSwitch 1 を選択
杭州ゾーン I: vSwitch 2 を選択
詳細設定
VPC1 と VPC2 にはデフォルト設定を使用します。すべての詳細機能が VPC で有効になっています。
ステップ 2: リージョン間接続を作成する
VPC1 と VPC2 の Enterprise Edition Transit Router は異なるリージョンにあるため、デフォルトでは VPC1 と VPC2 は通信できません。中国(杭州)と中国(上海)リージョン間にリージョン間接続を作成して、VPC1 と VPC2 間のリージョン間通信を有効にします。
CEN コンソール にログインします。
インスタンス ページで、管理する CEN インスタンスの ID をクリックします。
タブに移動し、Transit Router インスタンスを選択して、接続の作成 列の [アクション] をクリックします。
ピアネットワークインスタンスとの接続 ページで、次のパラメータを構成し、OK をクリックします。
以下の表は、この例に密接に関連するパラメータを示しています。その他のパラメータはデフォルト値のままです。詳細については、「Enterprise Edition Transit Router を使用してリージョン間接続を作成する」をご参照ください。
パラメータ
説明
インスタンスタイプ
リージョン間接続 を選択します。
リージョン
接続するリージョンのいずれかを選択します。
この例では、中国(上海) を選択します。
ピアリージョン
接続するピアリージョンを選択します。
この例では、中国(杭州) を選択します。
帯域幅割り当てモード
リージョン間接続に帯域幅を割り当てるために使用する方法を選択します。
この例では、データ転送ごとの支払い を選択します。システムは、リージョン間接続の実際のトラフィックに基づいて課金します。
帯域幅
リージョン間接続の帯域幅値を指定します。単位: Mbps。
データ転送ごとの支払い 帯域幅割り当てモードでは、このパラメータはリージョン間接続の最大帯域幅値を指定します。
デフォルトの回線タイプ
リージョン間接続の回線タイプを選択します。
この例では、デフォルト値を使用します。詳細については、「回線タイプ」をご参照ください。
詳細設定
この例では、3 つすべての詳細機能が有効になっているデフォルト設定が保持されます。
ステップ 3: VPC で OSS を指すルートを追加する
リージョン間接続が確立されると、VPC1 と VPC2 は Enterprise Edition Transit Router を使用して通信できるようになります。ただし、VPC1 内の ECS インスタンスはまだ VPC2 内の OSS にアクセスできません。VPC1 から Transit Router へのトラフィックを転送するために、VPC1 のルートテーブルに OSS を指すルートを追加する必要があります。
VPC コンソール にログインします。
上部のナビゲーションバーで、VPC1 がデプロイされているリージョンを選択します。
この例では、中国(上海) を選択します。
左側のナビゲーションウィンドウで [ルートテーブル] をクリックします。
[ルートテーブル] ページで、VPC1 のルートテーブルを見つけて、その ID をクリックします。
この例では、VPC1 には 1 つのシステムルートテーブルしかありません。VPC に複数のルートテーブルがある場合は、ECS インスタンスがデプロイされている vSwitch に関連付けられているルートテーブルを選択します。
[ルートエントリリスト] タブに移動し、[カスタムルート] タブを選択して、[ルートエントリの追加] をクリックします。
[ルートエントリの追加] パネルで、次のパラメータを構成し、[OK] をクリックします。
中国(杭州)リージョンにある OSS のすべての CIDR ブロックを指すルートを VPC1 のルートテーブルに追加します。次の表でパラメータについて説明します。
中国(杭州)リージョンにある OSS サービスの CIDR ブロックの詳細については、「内部 OSS エンドポイントと VIP 範囲」をご参照ください。
パラメータ
説明
ルート 1
ルート 2
ルート 3
ルート 4
名前
カスタムルートの名前を入力します。
OSS CIDR ブロック 1
OSS CIDR ブロック 2
OSS CIDR ブロック 3
OSS CIDR ブロック 4
宛先 CIDR ブロック
宛先 CIDR ブロックを入力します。
100.118.28.0/24
100.114.102.0/24
100.98.170.0/24
100.118.31.0/24
ネクストホップタイプ
ネクストホップタイプを選択し、カスタムルートのネクストホップを選択します。
Transit Router を選択し、VPC1 接続を選択します。
Transit Router を選択し、VPC1 接続を選択します。
Transit Router を選択し、VPC1 接続を選択します。
Transit Router を選択し、VPC1 接続を選択します。
ステップ 4: Transit Router に OSS を指すルートを追加する
中国(杭州)リージョンの Enterprise Edition Transit Router のルートテーブルに OSS を指すルートを追加する必要があります。 VPC1 内の ECS インスタンスからのリクエストが Enterprise Edition Transit Router に到達すると、Enterprise Edition Transit Router は OSS のルーティングポリシーに基づいてリクエストを VPC2 に転送します。これにより、ECS インスタンスは VPC2 を介して OSS にアクセスできます。
CEN コンソール にログインします。
[CEN インスタンス] ページに移動し、ターゲット CEN インスタンスを見つけて、その ID をクリックします。
タブで、中国(杭州)リージョンにある Transit Router インスタンスを見つけて、その ID をクリックします。
Transit Router インスタンスの詳細ページで、[ルートテーブル] タブをクリックします。左側のナビゲーションウィンドウで、ターゲットルートテーブルを選択します。
デフォルトでは、VPC1 と VPC2 は詳細設定が有効になっているため、Enterprise Edition Transit Router のデフォルトテーブルに関連付けられています。したがって、この例では Transit Router のデフォルトルートテーブル(システムルートテーブル)が選択されています。
[ルートエントリ] タブで、[ルートエントリの追加] をクリックします。
[ルートエントリの追加] ダイアログボックスで、次のパラメータを入力し、[確認] をクリックします。
中国(杭州)リージョンにある OSS の CIDR ブロックを指すルートを Transit Router のルートテーブルに追加します。
パラメータ
説明
ルート 1
ルート 2
ルート 3
ルート 4
名前
ルートの名前を入力します。
OSS CIDR ブロック 1
OSS CIDR ブロック 2
OSS CIDR ブロック 3
OSS CIDR ブロック 4
宛先 CIDR ブロック
ルートの宛先 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 接続を選択
ステップ 5: ネットワーク接続をテストする
これらのステップを完了すると、VPC1 内の ECS インスタンスは VPC 接続を介してリージョンをまたがって OSS にアクセスできます。この例では、ECS1 を使用して OSS からイメージをダウンロードし、VPC1 内の ECS インスタンスが OSS にアクセスできるかどうかを確認します。
VPC1 内の ECS1 にログインします。詳細については、「ECS リモート接続ガイド」をご参照ください。
ECS1 を使用して、OSStest.jpg という名前のイメージを OSS からダウンロードします。
説明テスト前に、ECS インスタンスにイメージファイルの読み取り/書き込み権限があることを確認してください。詳細については、「アクセス制御」をご参照ください。
wget https://zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg # 「zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com」は OSS のドメイン名です。 # 「OSStest.jpg」はイメージファイルの名前です。
OSS ドメイン名の詳細については、「OSS ドメイン名の使用規則」をご参照ください。
次の応答は、ECS1 が VPC 接続を介して OSS にアクセスできることを示しています。
Terraform
Terraform を使用して、このトピックの環境をセットアップできます。 Terraform のインストールと構成の詳細については、「Terraform をインストールする」をご参照ください。
以下の手順は、Linux ホストで Terraform v1.9.8 を実行する方法を示しています。 認証 を完了していることを確認してください。
この例の特定のリソースには費用が発生する場合があります。リソースが不要になったら、リリースまたはサブスクライブ解除してください。
ステップ 1: リソースを作成する
シナリオのディレクトリを作成し、そこに移動します。
mkdir tf-cen-oss && cd tf-cen-oss
必要なリソースを定義する
main.tf
ファイルを作成します。touch main.tf
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" // 杭州のリージョン ID type = string default = "cn-hangzhou" } variable "region_id_shanghai" { # description = "The region id of shanghai" // 上海のリージョン ID 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" // VPC CIDR ブロックのリスト 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" // バケット内のファイル名 content = "this is example text content \n" // ファイルの内容 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 // tr システムテーブルを取得 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 // デフォルトは 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" // OSS CIDR ブロック 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®ionId=${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}" }
Terraform のセットアップを完了するために、ディレクトリを初期化します。
terraform init
リソースを作成します。 Terraform は、作成されるリソースをプレビューします。確認後、
yes
と入力して作成プロセスを開始します。terraform apply
ステップ 2: 接続をテストする
tf-cen-oss-ecs
という名前の ECS インスタンスにログインします。ECS インスタンスのログインアドレスは、Terraform の出力にあります。このアドレスをブラウザにコピーし、認証方法として [一時 SSH キーベース] を選択します。
[出力] セクションで、curl コマンドをコピーします。
ECS インスタンスで curl コマンドを実行します。
curl tf-cen-oss-xxxxxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt
図のようにテキストコンテンツを取得できた場合は、アクセスが成功したことを示します。
ステップ 3: リソースをリリースする
検証が完了し、リソースが不要になったら、以下のコマンドを実行してリソースをリリースし、課金を停止します。
terraform destroy --auto-approve
ルート
このトピックでは、デフォルトのルーティング構成を使用して VPC とリージョン間接続を作成します。デフォルトのルーティング構成を使用すると、CEN は VPC1 と VPC2 が相互に通信するためのルートを自動的に学習してアドバタイズします。以下のセクションでは、デフォルトのルーティング構成について説明します。
VPC インスタンス
VPC 接続の作成時にデフォルトのルーティング構成(すべての詳細機能が有効)を使用すると、システムは次のルーティング構成を VPC に自動的に適用します。
Transit Router のデフォルトルートテーブルに関連付ける
この機能を有効にすると、VPC 接続は Transit Router のデフォルトルートテーブルに自動的に関連付けられます。 Transit Router は、デフォルトルートテーブルに基づいて VPC のトラフィックを転送します。
システムルートを Transit Router のデフォルトルートテーブルに伝達する
この機能を有効にすると、VPC のシステムルートが Transit Router のデフォルトルートテーブルにアドバタイズされます。これにより、VPC は Transit Router に接続されている他のネットワークインスタンスと通信できます。
Transit Router を指すルートを自動的に作成し、現在の VPC のすべてのルートテーブルに追加する
この機能を有効にすると、システムは次のルートを VPC のすべてのルートテーブルに自動的に追加します: 10.0.0.0/8、172.16.0.0/12、および 192.168.0.0/16。ルートは VPC 接続を指します。
リージョン間接続
リージョン間接続の作成時にデフォルトのルーティング構成(すべての詳細機能が有効)を使用すると、システムは次のルーティング構成をリージョン間接続に自動的に適用します。
トランジットルーターのデフォルトルートテーブルに関連付ける
この機能を有効にすると、リージョン間接続は Transit Router のデフォルトルートテーブルに自動的に関連付けられます。 Transit Router は、デフォルトルートテーブルを使用してネットワークトラフィックをリージョン間で転送します。
システムルートをトランジットルーターのデフォルトルートテーブルに伝播する
この機能を有効にすると、リージョン間接続は接続されたリージョンにある Transit Router のデフォルトルートテーブルに関連付けられます。
ピアリージョンへルートを自動的にアドバタイズする
この機能を有効にすると、現在のリージョンにある Transit Router のルートテーブル内のルートが、リージョン間通信のためにピア Transit Router のルートテーブルに自動的にアドバタイズされます。 Transit Router のルートテーブルとは、リージョン間接続に関連付けられているルートテーブルを指します。
ルートを表示する
Alibaba Cloud 管理コンソール内でルートを確認できます。
Transit Router のルートの詳細については、「Transit Router のカスタムルートを管理する」をご参照ください。
VPC のルートの詳細については、「ルートテーブルを作成および管理する」をご参照ください。