diff --git a/solution/tech-solution/ecnap/README.md b/solution/tech-solution/ecnap/README.md
new file mode 100644
index 000000000..381ac91c2
--- /dev/null
+++ b/solution/tech-solution/ecnap/README.md
@@ -0,0 +1,97 @@
+## Introduction
+
+
+本示例用于实现解决方案[企业云上网络架构规划](https://www.aliyun.com/solution/tech-solution/ecnap), 涉及到CEN、TR、VPC、vSwitch、ECS等资源的部署。
+
+
+
+This example is used to implement solution [Enterprise Cloud Network Architecture Planning](https://www.aliyun.com/solution/tech-solution/ecnap), which involves the creation and deployment of resources such as cen, tr, vpc, vSwitch, and ecs.
+
+
+
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [alicloud](#provider\_alicloud) | n/a |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [alicloud_cen_instance.cen_instance](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_instance) | resource |
+| [alicloud_cen_transit_router.transit_router](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router) | resource |
+| [alicloud_cen_transit_router_route_entry.transit_router_route_entry](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_entry) | resource |
+| [alicloud_cen_transit_router_route_table.transit_router_custom_route_table_1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table) | resource |
+| [alicloud_cen_transit_router_route_table.transit_router_custom_route_table_2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table) | resource |
+| [alicloud_cen_transit_router_route_table_association.transit_router_custom_route_table_1_association_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_association) | resource |
+| [alicloud_cen_transit_router_route_table_association.transit_router_custom_route_table_1_association_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_association) | resource |
+| [alicloud_cen_transit_router_route_table_association.transit_router_custom_route_table_1_association_prd3](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_association) | resource |
+| [alicloud_cen_transit_router_route_table_association.transit_router_custom_route_table_2_association_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_association) | resource |
+| [alicloud_cen_transit_router_route_table_propagation.transit_router_custom_route_table_propagation_for_vpc_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_propagation) | resource |
+| [alicloud_cen_transit_router_route_table_propagation.transit_router_custom_route_table_propagation_for_vpc_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_propagation) | resource |
+| [alicloud_cen_transit_router_route_table_propagation.transit_router_custom_route_table_propagation_for_vpc_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_route_table_propagation) | resource |
+| [alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd1_attachment](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_vpc_attachment) | resource |
+| [alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd2_attachment](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_vpc_attachment) | resource |
+| [alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd3_attachment](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_vpc_attachment) | resource |
+| [alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_sec_attachment](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/cen_transit_router_vpc_attachment) | resource |
+| [alicloud_ecs_command.run_command](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_command) | resource |
+| [alicloud_ecs_invocation.invoke_script](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_invocation) | resource |
+| [alicloud_instance.ecs_instance_in_vpc_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_instance.ecs_instance_in_vpc_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_instance.ecs_instance_in_vpc_prd3](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_instance.ecs_instance_in_vpc_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_route_entry.route_forward_to_cen](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_entry) | resource |
+| [alicloud_route_entry.route_forward_to_ecs](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_entry) | resource |
+| [alicloud_route_table.vpc_sec_custom_route_table_1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_table) | resource |
+| [alicloud_route_table.vpc_sec_custom_route_table_2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_table) | resource |
+| [alicloud_route_table_attachment.route_table_attachment_vswitch_sec_001](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_table_attachment) | resource |
+| [alicloud_route_table_attachment.route_table_attachment_vswitch_sec_002](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_table_attachment) | resource |
+| [alicloud_route_table_attachment.route_table_attachment_vswitch_sec_003](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/route_table_attachment) | resource |
+| [alicloud_security_group.sg_for_vpc_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
+| [alicloud_security_group.sg_for_vpc_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
+| [alicloud_security_group.sg_for_vpc_prd3](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
+| [alicloud_security_group.sg_for_vpc_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd1_ingress_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd1_ingress_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd1_ingress_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd2_ingress_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd2_ingress_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd2_ingress_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_prd3_ingress_prd3](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_sec_ingress_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_sec_ingress_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_security_group_rule.sg_rule_for_vpc_sec_ingress_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_vpc.vpc_prd1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
+| [alicloud_vpc.vpc_prd2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
+| [alicloud_vpc.vpc_prd3](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
+| [alicloud_vpc.vpc_sec](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
+| [alicloud_vswitch.vswitch_prd1_001](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd1_002](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd1_003](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd2_001](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd2_002](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd2_003](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd3_001](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd3_002](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_prd3_003](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_sec_001](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_sec_002](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch_sec_003](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_cen_transit_router_service.open](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/cen_transit_router_service) | data source |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [ecs\_instance\_password](#input\_ecs\_instance\_password) | 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)` | `string` | n/a | yes |
+| [ecs\_instance\_type](#input\_ecs\_instance\_type) | ECS实例规格 | `string` | `"ecs.t6-c4m1.large"` | no |
+| [region](#input\_region) | 资源部署地域 | `string` | `"cn-hangzhou"` | no |
+| [zone1](#input\_zone1) | 交换机可用区1 | `string` | `"cn-hangzhou-j"` | no |
+| [zone2](#input\_zone2) | 交换机可用区2,请确保交换机可用区2与交换机可用区1不相同 | `string` | `"cn-hangzhou-k"` | no |
+
\ No newline at end of file
diff --git a/solution/tech-solution/ecnap/main.tf b/solution/tech-solution/ecnap/main.tf
new file mode 100644
index 000000000..a681f4d16
--- /dev/null
+++ b/solution/tech-solution/ecnap/main.tf
@@ -0,0 +1,465 @@
+provider "alicloud" {
+ region = "cn-hangzhou"
+}
+
+# VPC resources
+resource "alicloud_vpc" "vpc_prd1" {
+ vpc_name = "VPC_PRD1"
+ cidr_block = "10.1.0.0/16"
+}
+
+resource "alicloud_vpc" "vpc_prd2" {
+ vpc_name = "VPC_PRD2"
+ cidr_block = "10.2.0.0/16"
+}
+
+resource "alicloud_vpc" "vpc_prd3" {
+ vpc_name = "VPC_PRD3"
+ cidr_block = "10.3.0.0/16"
+}
+
+resource "alicloud_vpc" "vpc_sec" {
+ vpc_name = "VPC_SEC"
+ cidr_block = "172.16.0.0/16"
+}
+
+# VSwitch resources
+resource "alicloud_vswitch" "vswitch_prd1_001" {
+ vpc_id = alicloud_vpc.vpc_prd1.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd1_001"
+ cidr_block = "10.1.1.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd1_002" {
+ vpc_id = alicloud_vpc.vpc_prd1.id
+ zone_id = var.zone2
+ vswitch_name = "vsw_prd1_002"
+ cidr_block = "10.1.2.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd1_003" {
+ vpc_id = alicloud_vpc.vpc_prd1.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd1_003"
+ cidr_block = "10.1.3.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd2_001" {
+ vpc_id = alicloud_vpc.vpc_prd2.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd2_001"
+ cidr_block = "10.2.1.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd2_002" {
+ vpc_id = alicloud_vpc.vpc_prd2.id
+ zone_id = var.zone2
+ vswitch_name = "vsw_prd2_002"
+ cidr_block = "10.2.2.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd2_003" {
+ vpc_id = alicloud_vpc.vpc_prd2.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd2_003"
+ cidr_block = "10.2.3.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd3_001" {
+ vpc_id = alicloud_vpc.vpc_prd3.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd3_001"
+ cidr_block = "10.3.1.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd3_002" {
+ vpc_id = alicloud_vpc.vpc_prd3.id
+ zone_id = var.zone2
+ vswitch_name = "vsw_prd3_002"
+ cidr_block = "10.3.2.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_prd3_003" {
+ vpc_id = alicloud_vpc.vpc_prd3.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_prd3_003"
+ cidr_block = "10.3.3.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_sec_001" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_sec_001"
+ cidr_block = "172.16.1.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_sec_002" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ zone_id = var.zone2
+ vswitch_name = "vsw_sec_002"
+ cidr_block = "172.16.2.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch_sec_003" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_sec_003"
+ cidr_block = "172.16.3.0/24"
+}
+
+# Security Groups
+resource "alicloud_security_group" "sg_for_vpc_prd1" {
+ security_group_name = "SG_For_VPC_PRD1"
+ vpc_id = alicloud_vpc.vpc_prd1.id
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd1_ingress_prd1" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd1.id
+ cidr_ip = "10.1.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd1_ingress_prd2" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd1.id
+ cidr_ip = "10.2.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd1_ingress_sec" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd1.id
+ cidr_ip = "172.16.0.0/16"
+}
+
+resource "alicloud_security_group" "sg_for_vpc_prd2" {
+ security_group_name = "SG_For_VPC_PRD2"
+ vpc_id = alicloud_vpc.vpc_prd2.id
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd2_ingress_prd1" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd2.id
+ cidr_ip = "10.1.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd2_ingress_prd2" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd2.id
+ cidr_ip = "10.2.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd2_ingress_sec" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd2.id
+ cidr_ip = "172.16.0.0/16"
+}
+
+resource "alicloud_security_group" "sg_for_vpc_prd3" {
+ security_group_name = "SG_For_VPC_PRD3"
+ vpc_id = alicloud_vpc.vpc_prd3.id
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_prd3_ingress_prd3" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_prd3.id
+ cidr_ip = "10.3.0.0/16"
+}
+
+resource "alicloud_security_group" "sg_for_vpc_sec" {
+ security_group_name = "SG_For_VPC_SEC"
+ vpc_id = alicloud_vpc.vpc_sec.id
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_sec_ingress_prd1" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_sec.id
+ cidr_ip = "10.1.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_sec_ingress_prd2" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_sec.id
+ cidr_ip = "10.2.0.0/16"
+}
+
+resource "alicloud_security_group_rule" "sg_rule_for_vpc_sec_ingress_sec" {
+ type = "ingress"
+ ip_protocol = "all"
+ policy = "accept"
+ port_range = "-1/-1"
+ priority = 1
+ security_group_id = alicloud_security_group.sg_for_vpc_sec.id
+ cidr_ip = "172.16.0.0/16"
+}
+
+# ECS Instances
+resource "alicloud_instance" "ecs_instance_in_vpc_prd1" {
+ instance_name = "PRD1"
+ vswitch_id = alicloud_vswitch.vswitch_prd1_003.id
+ security_groups = [alicloud_security_group.sg_for_vpc_prd1.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+ internet_max_bandwidth_out = 0
+}
+
+resource "alicloud_instance" "ecs_instance_in_vpc_prd2" {
+ instance_name = "PRD2"
+ vswitch_id = alicloud_vswitch.vswitch_prd2_003.id
+ security_groups = [alicloud_security_group.sg_for_vpc_prd2.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+ internet_max_bandwidth_out = 0
+}
+
+resource "alicloud_instance" "ecs_instance_in_vpc_prd3" {
+ instance_name = "PRD3"
+ vswitch_id = alicloud_vswitch.vswitch_prd3_003.id
+ security_groups = [alicloud_security_group.sg_for_vpc_prd3.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+ internet_max_bandwidth_out = 0
+}
+
+resource "alicloud_instance" "ecs_instance_in_vpc_sec" {
+ instance_name = "SEC"
+ vswitch_id = alicloud_vswitch.vswitch_sec_003.id
+ security_groups = [alicloud_security_group.sg_for_vpc_sec.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+ internet_max_bandwidth_out = 0
+}
+
+
+# Run command to enable IPv4 forwarding
+resource "alicloud_ecs_command" "run_command" {
+ name = "enable_ipv4_forward"
+ command_content = base64encode(<<-EOF
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ EOF
+ )
+ type = "RunShellScript"
+ timeout = 60
+}
+
+resource "alicloud_ecs_invocation" "invoke_script" {
+ instance_id = [alicloud_instance.ecs_instance_in_vpc_sec.id]
+ command_id = alicloud_ecs_command.run_command.id
+}
+
+# CEN
+resource "alicloud_cen_instance" "cen_instance" {
+ cen_instance_name = "cen"
+}
+
+# TR
+data "alicloud_cen_transit_router_service" "open" {
+ enable = "On"
+}
+
+resource "alicloud_cen_transit_router" "transit_router" {
+ cen_id = alicloud_cen_instance.cen_instance.id
+}
+
+# Transit Router Attachments
+resource "alicloud_cen_transit_router_vpc_attachment" "transit_router_vpc_prd1_attachment" {
+ vpc_id = alicloud_vpc.vpc_prd1.id
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ zone_mappings {
+ zone_id = var.zone1
+ vswitch_id = alicloud_vswitch.vswitch_prd1_001.id
+ }
+ zone_mappings {
+ zone_id = var.zone2
+ vswitch_id = alicloud_vswitch.vswitch_prd1_002.id
+ }
+ auto_publish_route_enabled = true
+}
+
+resource "alicloud_cen_transit_router_vpc_attachment" "transit_router_vpc_prd2_attachment" {
+ vpc_id = alicloud_vpc.vpc_prd2.id
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ zone_mappings {
+ zone_id = var.zone1
+ vswitch_id = alicloud_vswitch.vswitch_prd2_001.id
+ }
+ zone_mappings {
+ zone_id = var.zone2
+ vswitch_id = alicloud_vswitch.vswitch_prd2_002.id
+ }
+ auto_publish_route_enabled = true
+}
+
+resource "alicloud_cen_transit_router_vpc_attachment" "transit_router_vpc_prd3_attachment" {
+ vpc_id = alicloud_vpc.vpc_prd3.id
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ zone_mappings {
+ zone_id = var.zone1
+ vswitch_id = alicloud_vswitch.vswitch_prd3_001.id
+ }
+ zone_mappings {
+ zone_id = var.zone2
+ vswitch_id = alicloud_vswitch.vswitch_prd3_002.id
+ }
+ auto_publish_route_enabled = true
+}
+
+resource "alicloud_cen_transit_router_vpc_attachment" "transit_router_vpc_sec_attachment" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ zone_mappings {
+ zone_id = var.zone1
+ vswitch_id = alicloud_vswitch.vswitch_sec_001.id
+ }
+ zone_mappings {
+ zone_id = var.zone2
+ vswitch_id = alicloud_vswitch.vswitch_sec_002.id
+ }
+ auto_publish_route_enabled = true
+}
+
+# Transit Router Route Table
+resource "alicloud_cen_transit_router_route_table" "transit_router_custom_route_table_1" {
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ transit_router_route_table_name = "tr_custom_route_table_1"
+}
+
+resource "alicloud_cen_transit_router_route_table" "transit_router_custom_route_table_2" {
+ transit_router_id = alicloud_cen_transit_router.transit_router.transit_router_id
+ transit_router_route_table_name = "tr_custom_route_table_2"
+}
+
+# VPC_PRD1,VPC_PRD2,VPC_PRD3
+resource "alicloud_cen_transit_router_route_table_association" "transit_router_custom_route_table_1_association_prd1" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd1_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_1.transit_router_route_table_id
+}
+
+resource "alicloud_cen_transit_router_route_table_association" "transit_router_custom_route_table_1_association_prd2" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd2_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_1.transit_router_route_table_id
+}
+
+resource "alicloud_cen_transit_router_route_table_association" "transit_router_custom_route_table_1_association_prd3" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd3_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_1.transit_router_route_table_id
+}
+
+resource "alicloud_cen_transit_router_route_entry" "transit_router_route_entry" {
+ transit_router_route_entry_destination_cidr_block = "0.0.0.0/0"
+ transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_sec_attachment.transit_router_attachment_id
+ transit_router_route_entry_next_hop_type = "Attachment"
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_1.transit_router_route_table_id
+}
+
+# SEC
+resource "alicloud_cen_transit_router_route_table_association" "transit_router_custom_route_table_2_association_sec" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_sec_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_2.transit_router_route_table_id
+}
+
+# Transit Router Route Table Propagation
+resource "alicloud_cen_transit_router_route_table_propagation" "transit_router_custom_route_table_propagation_for_vpc_prd1" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd1_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_2.transit_router_route_table_id
+}
+
+resource "alicloud_cen_transit_router_route_table_propagation" "transit_router_custom_route_table_propagation_for_vpc_prd2" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_prd2_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_2.transit_router_route_table_id
+}
+
+resource "alicloud_cen_transit_router_route_table_propagation" "transit_router_custom_route_table_propagation_for_vpc_sec" {
+ transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_sec_attachment.transit_router_attachment_id
+ transit_router_route_table_id = alicloud_cen_transit_router_route_table.transit_router_custom_route_table_2.transit_router_route_table_id
+}
+
+# VPC_SEC Route Table
+resource "alicloud_route_table" "vpc_sec_custom_route_table_1" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ route_table_name = "Custom VPC_SEC TR IN"
+}
+
+resource "alicloud_route_table_attachment" "route_table_attachment_vswitch_sec_001" {
+ vswitch_id = alicloud_vswitch.vswitch_sec_001.id
+ route_table_id = alicloud_route_table.vpc_sec_custom_route_table_1.id
+}
+
+resource "alicloud_route_table_attachment" "route_table_attachment_vswitch_sec_002" {
+ vswitch_id = alicloud_vswitch.vswitch_sec_002.id
+ route_table_id = alicloud_route_table.vpc_sec_custom_route_table_1.id
+}
+
+resource "alicloud_route_table" "vpc_sec_custom_route_table_2" {
+ vpc_id = alicloud_vpc.vpc_sec.id
+ route_table_name = "Custom VPC_SEC TR OUT"
+}
+
+resource "alicloud_route_table_attachment" "route_table_attachment_vswitch_sec_003" {
+ vswitch_id = alicloud_vswitch.vswitch_sec_003.id
+ route_table_id = alicloud_route_table.vpc_sec_custom_route_table_2.id
+}
+
+# VPC_SEC Route Forwarding
+resource "alicloud_route_entry" "route_forward_to_ecs" {
+ route_table_id = alicloud_route_table.vpc_sec_custom_route_table_1.id
+ destination_cidrblock = "0.0.0.0/0"
+ nexthop_type = "Instance"
+ nexthop_id = alicloud_instance.ecs_instance_in_vpc_sec.id
+}
+
+resource "alicloud_route_entry" "route_forward_to_cen" {
+ route_table_id = alicloud_route_table.vpc_sec_custom_route_table_2.id
+ destination_cidrblock = "0.0.0.0/0"
+ nexthop_type = "Attachment"
+ nexthop_id = alicloud_cen_transit_router_vpc_attachment.transit_router_vpc_sec_attachment.transit_router_attachment_id
+}
+
diff --git a/solution/tech-solution/ecnap/outputs.tf b/solution/tech-solution/ecnap/outputs.tf
new file mode 100644
index 000000000..85cb875b6
--- /dev/null
+++ b/solution/tech-solution/ecnap/outputs.tf
@@ -0,0 +1,5 @@
+output "ecs_instances" {
+ description = "查看创建的ECS实例列表"
+ value = format("https://ecs.console.aliyun.com/server/region/%s?instanceIds=%s,%s,%s,%s", var.region, alicloud_instance.ecs_instance_in_vpc_prd1.id, alicloud_instance.ecs_instance_in_vpc_prd2.id, alicloud_instance.ecs_instance_in_vpc_prd3.id, alicloud_instance.ecs_instance_in_vpc_sec.id)
+}
+
diff --git a/solution/tech-solution/ecnap/variables.tf b/solution/tech-solution/ecnap/variables.tf
new file mode 100644
index 000000000..d806b460d
--- /dev/null
+++ b/solution/tech-solution/ecnap/variables.tf
@@ -0,0 +1,33 @@
+variable "ecs_instance_type" {
+ type = string
+ description = "ECS实例规格"
+ default = "ecs.t6-c4m1.large"
+}
+
+variable "ecs_instance_password" {
+ type = string
+ sensitive = true
+ description = "服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)"
+ # default = "Alicloud@123"
+}
+
+variable "region" {
+ type = string
+ description = "资源部署地域"
+ default = "cn-hangzhou"
+}
+
+variable "zone1" {
+ type = string
+ description = "交换机可用区1"
+ default = "cn-hangzhou-j"
+}
+
+variable "zone2" {
+ type = string
+ description = "交换机可用区2,请确保交换机可用区2与交换机可用区1不相同"
+ default = "cn-hangzhou-k"
+}
+
+
+
diff --git a/solution/tech-solution/gaoia/README.md b/solution/tech-solution/gaoia/README.md
new file mode 100644
index 000000000..1d6659350
--- /dev/null
+++ b/solution/tech-solution/gaoia/README.md
@@ -0,0 +1,58 @@
+## Introduction
+
+
+本示例用于实现解决方案[互联网应用全球加速](https://www.aliyun.com/solution/tech-solution/gaoia), 涉及到GA、NLB、VPC、vSwitch、ECS等资源的部署。
+
+
+
+This example is used to implement solution [Global acceleration of Internet applications](https://www.aliyun.com/solution/tech-solution/gaoia), which involves the creation and deployment of resources such as ga, nlb, vpc, vSwitch, and ecs.
+
+
+
+
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [alicloud](#provider\_alicloud) | n/a |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [alicloud_ecs_command.run_command_ecs01](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_command) | resource |
+| [alicloud_ecs_command.run_command_ecs02](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_command) | resource |
+| [alicloud_ecs_invocation.invoke_script_ecs01](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_invocation) | resource |
+| [alicloud_ecs_invocation.invoke_script_ecs02](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ecs_invocation) | resource |
+| [alicloud_ga_accelerator.accelerator](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ga_accelerator) | resource |
+| [alicloud_ga_ip_set.accelerate_region](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ga_ip_set) | resource |
+| [alicloud_ga_listener.ga_listener](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/ga_listener) | resource |
+| [alicloud_instance.ecs_instance_01](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_instance.ecs_instance_02](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance) | resource |
+| [alicloud_nlb_listener.nlb_listener](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/nlb_listener) | resource |
+| [alicloud_nlb_load_balancer.nlb_load_balancer](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/nlb_load_balancer) | resource |
+| [alicloud_nlb_server_group.nlb_server_group](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/nlb_server_group) | resource |
+| [alicloud_nlb_server_group_server_attachment.server_attachment1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/nlb_server_group_server_attachment) | resource |
+| [alicloud_nlb_server_group_server_attachment.server_attachment2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/nlb_server_group_server_attachment) | resource |
+| [alicloud_security_group.security_group](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
+| [alicloud_security_group_rule.allow_tcp_80](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group_rule) | resource |
+| [alicloud_vpc.vpc](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
+| [alicloud_vswitch.vswitch1](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+| [alicloud_vswitch.vswitch2](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [accelerate\_region\_id](#input\_accelerate\_region\_id) | 加速地域ID | `string` | `"cn-hongkong"` | no |
+| [ecs\_instance\_password](#input\_ecs\_instance\_password) | 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)` | `string` | n/a | yes |
+| [ecs\_instance\_type](#input\_ecs\_instance\_type) | ECS实例规格 | `string` | `"ecs.e-c1m1.large"` | no |
+| [region](#input\_region) | 资源部署地域 | `string` | `"us-east-1"` | no |
+| [zone1](#input\_zone1) | 交换机可用区1 | `string` | `"us-east-1a"` | no |
+| [zone2](#input\_zone2) | 交换机可用区2,请确保交换机可用区2与交换机可用区1不相同 | `string` | `"us-east-1b"` | no |
+
\ No newline at end of file
diff --git a/solution/tech-solution/gaoia/main.tf b/solution/tech-solution/gaoia/main.tf
new file mode 100644
index 000000000..c4764b239
--- /dev/null
+++ b/solution/tech-solution/gaoia/main.tf
@@ -0,0 +1,161 @@
+provider "alicloud" {
+ region = "us-east-1"
+}
+
+resource "alicloud_vpc" "vpc" {
+ vpc_name = "VPC_EU"
+ cidr_block = "192.168.0.0/16"
+}
+
+resource "alicloud_vswitch" "vswitch1" {
+ vpc_id = alicloud_vpc.vpc.id
+ zone_id = var.zone1
+ vswitch_name = "vsw_001"
+ cidr_block = "192.168.1.0/24"
+}
+
+resource "alicloud_vswitch" "vswitch2" {
+ vpc_id = alicloud_vpc.vpc.id
+ zone_id = var.zone2
+ vswitch_name = "vsw_002"
+ cidr_block = "192.168.2.0/24"
+}
+
+resource "alicloud_security_group" "security_group" {
+ security_group_name = "SecurityGroup_1"
+ vpc_id = alicloud_vpc.vpc.id
+}
+
+resource "alicloud_security_group_rule" "allow_tcp_80" {
+ type = "ingress"
+ ip_protocol = "tcp"
+ policy = "accept"
+ port_range = "80/80"
+ priority = 1
+ security_group_id = alicloud_security_group.security_group.id
+ cidr_ip = "192.168.0.0/16"
+}
+
+
+resource "alicloud_instance" "ecs_instance_01" {
+ instance_name = "ECS01"
+ vswitch_id = alicloud_vswitch.vswitch1.id
+ security_groups = [alicloud_security_group.security_group.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+}
+
+resource "alicloud_instance" "ecs_instance_02" {
+ instance_name = "ECS02"
+ vswitch_id = alicloud_vswitch.vswitch2.id
+ security_groups = [alicloud_security_group.security_group.id]
+ image_id = "centos_7_6_x64_20G_alibase_20211130.vhd"
+ instance_type = var.ecs_instance_type
+ password = var.ecs_instance_password
+ system_disk_category = "cloud_essd"
+ system_disk_size = 40
+}
+
+resource "alicloud_ecs_command" "run_command_ecs01" {
+ name = "Deploy testing ecs01 website"
+ command_content = base64encode(<<-EOF
+ yum install -y nginx
+ systemctl start nginx.service
+ cd /usr/share/nginx/html/
+ echo "Hello World ! This is ECS01." > index.html
+ EOF
+ )
+ type = "RunShellScript"
+ timeout = 60
+}
+
+resource "alicloud_ecs_invocation" "invoke_script_ecs01" {
+ instance_id = [alicloud_instance.ecs_instance_01.id]
+ command_id = alicloud_ecs_command.run_command_ecs01.id
+}
+
+resource "alicloud_ecs_command" "run_command_ecs02" {
+ name = "Deploy testing ecs02 website"
+ command_content = base64encode(<<-EOF
+ yum install -y nginx
+ systemctl start nginx.service
+ cd /usr/share/nginx/html/
+ echo "Hello World ! This is ECS02." > index.html
+ EOF
+ )
+ type = "RunShellScript"
+ timeout = 60
+}
+
+resource "alicloud_ecs_invocation" "invoke_script_ecs02" {
+ instance_id = [alicloud_instance.ecs_instance_02.id]
+ command_id = alicloud_ecs_command.run_command_ecs02.id
+}
+
+resource "alicloud_nlb_load_balancer" "nlb_load_balancer" {
+ vpc_id = alicloud_vpc.vpc.id
+ load_balancer_name = "NLB_EU"
+ address_type = "Intranet"
+ address_ip_version = "Ipv4"
+ zone_mappings {
+ zone_id = var.zone1
+ vswitch_id = alicloud_vswitch.vswitch1.id
+ }
+ zone_mappings {
+ zone_id = var.zone2
+ vswitch_id = alicloud_vswitch.vswitch2.id
+ }
+}
+
+resource "alicloud_nlb_server_group" "nlb_server_group" {
+ vpc_id = alicloud_vpc.vpc.id
+ server_group_name = "NLB_SERVER_GROUP"
+}
+
+resource "alicloud_nlb_server_group_server_attachment" "server_attachment1" {
+ server_group_id = alicloud_nlb_server_group.nlb_server_group.id
+ server_type = "Ecs"
+ server_id = alicloud_instance.ecs_instance_01.id
+ port = 80
+}
+
+resource "alicloud_nlb_server_group_server_attachment" "server_attachment2" {
+ server_group_id = alicloud_nlb_server_group.nlb_server_group.id
+ server_type = "Ecs"
+ server_id = alicloud_instance.ecs_instance_02.id
+ port = 80
+}
+
+resource "alicloud_nlb_listener" "nlb_listener" {
+ listener_port = 80
+ listener_protocol = "TCP"
+ load_balancer_id = alicloud_nlb_load_balancer.nlb_load_balancer.id
+ server_group_id = alicloud_nlb_server_group.nlb_server_group.id
+}
+
+resource "alicloud_ga_accelerator" "accelerator" {
+ bandwidth_billing_type = "CDT"
+ payment_type = "PayAsYouGo"
+}
+
+resource "alicloud_ga_ip_set" "accelerate_region" {
+ accelerate_region_id = var.accelerate_region_id
+ bandwidth = "2"
+ accelerator_id = alicloud_ga_accelerator.accelerator.id
+ isp_type = "BGP"
+}
+
+resource "alicloud_ga_listener" "ga_listener" {
+ name = "TCP_80"
+ port_ranges {
+ from_port = 80
+ to_port = 80
+ }
+ protocol = "TCP"
+ accelerator_id = alicloud_ga_accelerator.accelerator.id
+ client_affinity = "SOURCE_IP"
+}
+
diff --git a/solution/tech-solution/gaoia/outputs.tf b/solution/tech-solution/gaoia/outputs.tf
new file mode 100644
index 000000000..3395fb52e
--- /dev/null
+++ b/solution/tech-solution/gaoia/outputs.tf
@@ -0,0 +1,9 @@
+output "nlb_dns_name" {
+ description = "NLB的DNS名称"
+ value = alicloud_nlb_load_balancer.nlb_load_balancer.dns_name
+}
+
+output "accelerator_id" {
+ description = "全球加速实例ID"
+ value = alicloud_ga_accelerator.accelerator.id
+}
diff --git a/solution/tech-solution/gaoia/variables.tf b/solution/tech-solution/gaoia/variables.tf
new file mode 100644
index 000000000..4a3dfab51
--- /dev/null
+++ b/solution/tech-solution/gaoia/variables.tf
@@ -0,0 +1,36 @@
+variable "ecs_instance_type" {
+ type = string
+ description = "ECS实例规格"
+ default = "ecs.e-c1m1.large"
+}
+
+variable "ecs_instance_password" {
+ type = string
+ sensitive = true
+ description = "服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)"
+ # default = "Alicloud@123"
+}
+
+variable "region" {
+ type = string
+ description = "资源部署地域"
+ default = "us-east-1"
+}
+
+variable "zone1" {
+ type = string
+ description = "交换机可用区1"
+ default = "us-east-1a"
+}
+
+variable "zone2" {
+ type = string
+ description = "交换机可用区2,请确保交换机可用区2与交换机可用区1不相同"
+ default = "us-east-1b"
+}
+
+variable "accelerate_region_id" {
+ type = string
+ default = "cn-hongkong"
+ description = "加速地域ID"
+}