pulumi-alicloud 3.76.0a1743484854__py3-none-any.whl → 3.76.0a1744139894__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumi-alicloud might be problematic. Click here for more details.

Files changed (237) hide show
  1. pulumi_alicloud/__init__.py +271 -4
  2. pulumi_alicloud/_inputs.py +20 -0
  3. pulumi_alicloud/actiontrail/global_events_storage_region.py +2 -2
  4. pulumi_alicloud/adb/db_cluster_lake_version.py +458 -49
  5. pulumi_alicloud/alb/load_balancer_access_log_config_attachment.py +2 -2
  6. pulumi_alicloud/alb/server_group.py +2 -2
  7. pulumi_alicloud/alikafka/sasl_acl.py +7 -7
  8. pulumi_alicloud/apigateway/_inputs.py +134 -0
  9. pulumi_alicloud/apigateway/group.py +117 -5
  10. pulumi_alicloud/apigateway/instance.py +148 -7
  11. pulumi_alicloud/apigateway/outputs.py +107 -0
  12. pulumi_alicloud/arms/alert_contact.py +2 -2
  13. pulumi_alicloud/arms/alert_contact_group.py +2 -2
  14. pulumi_alicloud/arms/get_prometheus.py +2 -6
  15. pulumi_alicloud/arms/grafana_workspace.py +511 -69
  16. pulumi_alicloud/arms/outputs.py +18 -18
  17. pulumi_alicloud/arms/prometheus_alert_rule.py +2 -2
  18. pulumi_alicloud/arms/prometheus_monitoring.py +2 -2
  19. pulumi_alicloud/cdn/domain_new.py +2 -2
  20. pulumi_alicloud/cen/_inputs.py +6 -3
  21. pulumi_alicloud/cen/get_transit_router_vpn_attachments.py +131 -19
  22. pulumi_alicloud/cen/instance.py +101 -59
  23. pulumi_alicloud/cen/inter_region_traffic_qos_policy.py +126 -81
  24. pulumi_alicloud/cen/inter_region_traffic_qos_queue.py +93 -47
  25. pulumi_alicloud/cen/outputs.py +69 -26
  26. pulumi_alicloud/cen/transit_route_table_aggregation.py +171 -55
  27. pulumi_alicloud/cen/transit_router.py +127 -53
  28. pulumi_alicloud/cen/transit_router_cidr.py +53 -35
  29. pulumi_alicloud/cen/transit_router_ecr_attachment.py +2 -2
  30. pulumi_alicloud/cen/transit_router_peer_attachment.py +360 -143
  31. pulumi_alicloud/cen/transit_router_route_table_association.py +33 -43
  32. pulumi_alicloud/cen/transit_router_vpn_attachment.py +438 -109
  33. pulumi_alicloud/clickhouse/db_cluster.py +179 -6
  34. pulumi_alicloud/clickhouseenterprisedbcluster/__init__.py +14 -0
  35. pulumi_alicloud/clickhouseenterprisedbcluster/_inputs.py +167 -0
  36. pulumi_alicloud/clickhouseenterprisedbcluster/account.py +554 -0
  37. pulumi_alicloud/clickhouseenterprisedbcluster/backup_policy.py +407 -0
  38. pulumi_alicloud/clickhouseenterprisedbcluster/click_house_enterprise_db_cluster.py +641 -0
  39. pulumi_alicloud/clickhouseenterprisedbcluster/outputs.py +147 -0
  40. pulumi_alicloud/clickhouseenterprisedbcluster/public_endpoint.py +364 -0
  41. pulumi_alicloud/clickhouseenterprisedbcluster/security_ip.py +357 -0
  42. pulumi_alicloud/cloudsso/scim_server_credential.py +178 -11
  43. pulumi_alicloud/config/outputs.py +12 -0
  44. pulumi_alicloud/cs/__init__.py +1 -0
  45. pulumi_alicloud/cs/get_kubernetes_node_pools.py +147 -0
  46. pulumi_alicloud/cs/managed_kubernetes.py +127 -24
  47. pulumi_alicloud/cs/node_pool.py +42 -42
  48. pulumi_alicloud/cs/outputs.py +1782 -4
  49. pulumi_alicloud/databasefilesystem/service_linked_role.py +2 -2
  50. pulumi_alicloud/dataworks/data_source.py +2 -2
  51. pulumi_alicloud/dataworks/data_source_shared_rule.py +2 -2
  52. pulumi_alicloud/dataworks/di_alarm_rule.py +2 -2
  53. pulumi_alicloud/dataworks/di_job.py +2 -2
  54. pulumi_alicloud/dataworks/dw_resource_group.py +2 -2
  55. pulumi_alicloud/dataworks/network.py +2 -2
  56. pulumi_alicloud/dataworks/project.py +2 -2
  57. pulumi_alicloud/dataworks/project_member.py +2 -2
  58. pulumi_alicloud/dbs/backup_plan.py +2 -2
  59. pulumi_alicloud/ddos/bgp_policy.py +2 -2
  60. pulumi_alicloud/eais/__init__.py +2 -0
  61. pulumi_alicloud/eais/_inputs.py +75 -0
  62. pulumi_alicloud/eais/client_instance_attachment.py +408 -0
  63. pulumi_alicloud/eais/instance.py +365 -118
  64. pulumi_alicloud/eais/outputs.py +32 -0
  65. pulumi_alicloud/ebs/disk_replica_group.py +512 -30
  66. pulumi_alicloud/ebs/disk_replica_pair.py +443 -113
  67. pulumi_alicloud/ebs/enterprise_snapshot_policy.py +2 -2
  68. pulumi_alicloud/ebs/enterprise_snapshot_policy_attachment.py +2 -2
  69. pulumi_alicloud/ecp/instance.py +2 -2
  70. pulumi_alicloud/ecp/key_pair.py +4 -4
  71. pulumi_alicloud/ecs/_inputs.py +33 -0
  72. pulumi_alicloud/ecs/disk.py +1 -1
  73. pulumi_alicloud/ecs/ecs_disk.py +1 -1
  74. pulumi_alicloud/ecs/ecs_launch_template.py +23 -23
  75. pulumi_alicloud/ecs/instance.py +1 -1
  76. pulumi_alicloud/ecs/outputs.py +26 -2
  77. pulumi_alicloud/eflo/__init__.py +5 -0
  78. pulumi_alicloud/eflo/_inputs.py +1717 -0
  79. pulumi_alicloud/eflo/cluster.py +935 -0
  80. pulumi_alicloud/eflo/invocation.py +1114 -0
  81. pulumi_alicloud/eflo/node.py +1013 -0
  82. pulumi_alicloud/eflo/node_group.py +1101 -0
  83. pulumi_alicloud/eflo/outputs.py +1366 -0
  84. pulumi_alicloud/ens/eip_instance_attachment.py +2 -2
  85. pulumi_alicloud/ens/image.py +81 -34
  86. pulumi_alicloud/esa/__init__.py +4 -0
  87. pulumi_alicloud/esa/_inputs.py +640 -18
  88. pulumi_alicloud/esa/cache_reserve_instance.py +522 -0
  89. pulumi_alicloud/esa/cache_rule.py +193 -179
  90. pulumi_alicloud/esa/certificate.py +99 -92
  91. pulumi_alicloud/esa/compression_rule.py +42 -28
  92. pulumi_alicloud/esa/edge_container_app.py +972 -0
  93. pulumi_alicloud/esa/edge_container_app_record.py +376 -0
  94. pulumi_alicloud/esa/http_request_header_modification_rule.py +56 -42
  95. pulumi_alicloud/esa/http_response_header_modification_rule.py +35 -56
  96. pulumi_alicloud/esa/https_application_configuration.py +42 -28
  97. pulumi_alicloud/esa/https_basic_configuration.py +56 -42
  98. pulumi_alicloud/esa/image_transform.py +42 -28
  99. pulumi_alicloud/esa/kv_namespace.py +11 -11
  100. pulumi_alicloud/esa/list.py +28 -28
  101. pulumi_alicloud/esa/network_optimization.py +56 -126
  102. pulumi_alicloud/esa/origin_pool.py +19 -19
  103. pulumi_alicloud/esa/origin_rule.py +67 -39
  104. pulumi_alicloud/esa/outputs.py +536 -12
  105. pulumi_alicloud/esa/page.py +28 -49
  106. pulumi_alicloud/esa/rate_plan_instance.py +86 -159
  107. pulumi_alicloud/esa/redirect_rule.py +42 -28
  108. pulumi_alicloud/esa/rewrite_url_rule.py +49 -63
  109. pulumi_alicloud/esa/site.py +67 -123
  110. pulumi_alicloud/esa/site_delivery_task.py +841 -0
  111. pulumi_alicloud/esa/waiting_room.py +269 -319
  112. pulumi_alicloud/esa/waiting_room_event.py +291 -305
  113. pulumi_alicloud/esa/waiting_room_rule.py +46 -53
  114. pulumi_alicloud/ess/_inputs.py +155 -0
  115. pulumi_alicloud/ess/outputs.py +128 -0
  116. pulumi_alicloud/ess/scaling_group.py +237 -2
  117. pulumi_alicloud/ess/scaling_rule.py +143 -2
  118. pulumi_alicloud/expressconnect/router_grant_association.py +2 -2
  119. pulumi_alicloud/expressconnect/virtual_border_router.py +4 -4
  120. pulumi_alicloud/gpdb/hadoop_data_source.py +2 -2
  121. pulumi_alicloud/gpdb/jdbc_data_source.py +2 -2
  122. pulumi_alicloud/gpdb/remote_adb_data_source.py +6 -6
  123. pulumi_alicloud/gpdb/streaming_data_source.py +2 -2
  124. pulumi_alicloud/gpdb/streaming_job.py +2 -2
  125. pulumi_alicloud/ims/oidc_provider.py +24 -13
  126. pulumi_alicloud/kvstore/account.py +9 -9
  127. pulumi_alicloud/kvstore/connection.py +2 -2
  128. pulumi_alicloud/kvstore/get_instance_classes.py +2 -2
  129. pulumi_alicloud/kvstore/get_instance_engines.py +2 -2
  130. pulumi_alicloud/kvstore/instance.py +7 -7
  131. pulumi_alicloud/kvstore/outputs.py +2 -2
  132. pulumi_alicloud/live/caster.py +2 -2
  133. pulumi_alicloud/maxcompute/__init__.py +1 -0
  134. pulumi_alicloud/maxcompute/_inputs.py +232 -3
  135. pulumi_alicloud/maxcompute/outputs.py +183 -2
  136. pulumi_alicloud/maxcompute/project.py +2 -2
  137. pulumi_alicloud/maxcompute/quota.py +438 -0
  138. pulumi_alicloud/nas/mount_target.py +149 -54
  139. pulumi_alicloud/nlb/__init__.py +1 -0
  140. pulumi_alicloud/nlb/_inputs.py +43 -6
  141. pulumi_alicloud/nlb/load_balancer.py +212 -24
  142. pulumi_alicloud/nlb/load_balancer_zone_shifted_attachment.py +397 -0
  143. pulumi_alicloud/nlb/outputs.py +30 -4
  144. pulumi_alicloud/nlb/server_group_server_attachment.py +118 -65
  145. pulumi_alicloud/oss/__init__.py +1 -0
  146. pulumi_alicloud/oss/_inputs.py +20 -0
  147. pulumi_alicloud/oss/access_point.py +2 -2
  148. pulumi_alicloud/oss/bucket_cname.py +2 -2
  149. pulumi_alicloud/oss/bucket_cors.py +2 -2
  150. pulumi_alicloud/oss/bucket_style.py +402 -0
  151. pulumi_alicloud/oss/bucket_website.py +2 -2
  152. pulumi_alicloud/oss/outputs.py +14 -0
  153. pulumi_alicloud/pai/service.py +59 -67
  154. pulumi_alicloud/polardb/cluster.py +75 -28
  155. pulumi_alicloud/privatelink/vpc_endpoint_zone.py +1 -1
  156. pulumi_alicloud/pulumi-plugin.json +1 -1
  157. pulumi_alicloud/ram/__init__.py +3 -0
  158. pulumi_alicloud/ram/_inputs.py +9 -9
  159. pulumi_alicloud/ram/access_key.py +77 -31
  160. pulumi_alicloud/ram/account_alias.py +18 -45
  161. pulumi_alicloud/ram/get_system_policys.py +189 -0
  162. pulumi_alicloud/ram/group.py +156 -35
  163. pulumi_alicloud/ram/group_policy_attachment.py +51 -29
  164. pulumi_alicloud/ram/login_profile.py +92 -38
  165. pulumi_alicloud/ram/outputs.py +91 -6
  166. pulumi_alicloud/ram/password_policy.py +779 -0
  167. pulumi_alicloud/ram/policy.py +199 -88
  168. pulumi_alicloud/ram/role_policy_attachment.py +51 -29
  169. pulumi_alicloud/ram/saml_provider.py +44 -37
  170. pulumi_alicloud/ram/user_group_attachment.py +273 -0
  171. pulumi_alicloud/ram/user_policy_attachment.py +49 -27
  172. pulumi_alicloud/rds/__init__.py +1 -0
  173. pulumi_alicloud/rds/custom_disk.py +1053 -0
  174. pulumi_alicloud/rds/instance.py +110 -14
  175. pulumi_alicloud/redis/tair_instance.py +14 -14
  176. pulumi_alicloud/resourcemanager/__init__.py +1 -0
  177. pulumi_alicloud/resourcemanager/_inputs.py +53 -0
  178. pulumi_alicloud/resourcemanager/auto_grouping_rule.py +796 -0
  179. pulumi_alicloud/resourcemanager/outputs.py +50 -0
  180. pulumi_alicloud/resourcemanager/shared_resource.py +7 -0
  181. pulumi_alicloud/rocketmq/__init__.py +1 -1
  182. pulumi_alicloud/rocketmq/_inputs.py +146 -4
  183. pulumi_alicloud/rocketmq/account.py +452 -0
  184. pulumi_alicloud/rocketmq/acl.py +473 -47
  185. pulumi_alicloud/rocketmq/client_user.py +8 -2
  186. pulumi_alicloud/rocketmq/consumer_group.py +121 -24
  187. pulumi_alicloud/rocketmq/dnat_entry.py +8 -2
  188. pulumi_alicloud/rocketmq/outputs.py +113 -4
  189. pulumi_alicloud/rocketmq/qos.py +8 -2
  190. pulumi_alicloud/rocketmq/qos_car.py +10 -4
  191. pulumi_alicloud/rocketmq/qos_policy.py +6 -0
  192. pulumi_alicloud/rocketmq/rocket_mq_instance.py +136 -7
  193. pulumi_alicloud/rocketmq/rocket_mq_topic.py +121 -24
  194. pulumi_alicloud/rocketmq/snat_entry.py +8 -2
  195. pulumi_alicloud/sag/__init__.py +8 -0
  196. pulumi_alicloud/sag/acl.py +200 -0
  197. pulumi_alicloud/{rocketmq → sag}/acl_rule.py +7 -7
  198. pulumi_alicloud/sag/client_user.py +560 -0
  199. pulumi_alicloud/sag/dnat_entry.py +512 -0
  200. pulumi_alicloud/sag/get_acls.py +2 -2
  201. pulumi_alicloud/sag/qos.py +202 -0
  202. pulumi_alicloud/sag/qos_car.py +654 -0
  203. pulumi_alicloud/sag/qos_policy.py +659 -0
  204. pulumi_alicloud/sag/snat_entry.py +313 -0
  205. pulumi_alicloud/securitycenter/group.py +2 -2
  206. pulumi_alicloud/selectdb/db_instance.py +60 -11
  207. pulumi_alicloud/slb/server_group_server_attachment.py +101 -111
  208. pulumi_alicloud/sls/oss_export_sink.py +2 -2
  209. pulumi_alicloud/threatdetection/__init__.py +3 -0
  210. pulumi_alicloud/threatdetection/anti_brute_force_rule.py +41 -65
  211. pulumi_alicloud/threatdetection/asset_bind.py +209 -0
  212. pulumi_alicloud/threatdetection/asset_selection_config.py +258 -0
  213. pulumi_alicloud/threatdetection/instance.py +271 -54
  214. pulumi_alicloud/threatdetection/log_meta.py +351 -0
  215. pulumi_alicloud/vpc/__init__.py +1 -0
  216. pulumi_alicloud/vpc/_inputs.py +281 -0
  217. pulumi_alicloud/vpc/gateway_endpoint.py +85 -27
  218. pulumi_alicloud/vpc/get_ipam_ipam_pool_allocations.py +2 -2
  219. pulumi_alicloud/vpc/get_ipam_ipam_pool_cidrs.py +2 -2
  220. pulumi_alicloud/vpc/get_ipam_ipam_pools.py +2 -2
  221. pulumi_alicloud/vpc/get_ipam_ipam_scopes.py +2 -2
  222. pulumi_alicloud/vpc/get_ipam_ipams.py +2 -2
  223. pulumi_alicloud/vpc/ipv6_address.py +85 -5
  224. pulumi_alicloud/vpc/outputs.py +232 -0
  225. pulumi_alicloud/vpc/peer_connection.py +84 -42
  226. pulumi_alicloud/vpc/peer_connection_accepter.py +7 -21
  227. pulumi_alicloud/vpc/route_table.py +100 -45
  228. pulumi_alicloud/vpc/vpc_route_entry.py +724 -0
  229. pulumi_alicloud/vpn/_inputs.py +716 -71
  230. pulumi_alicloud/vpn/gateway_vpn_attachment.py +622 -128
  231. pulumi_alicloud/vpn/get_gateway_vpn_attachments.py +20 -63
  232. pulumi_alicloud/vpn/ipsec_server.py +2 -2
  233. pulumi_alicloud/vpn/outputs.py +1963 -998
  234. {pulumi_alicloud-3.76.0a1743484854.dist-info → pulumi_alicloud-3.76.0a1744139894.dist-info}/METADATA +1 -1
  235. {pulumi_alicloud-3.76.0a1743484854.dist-info → pulumi_alicloud-3.76.0a1744139894.dist-info}/RECORD +237 -197
  236. {pulumi_alicloud-3.76.0a1743484854.dist-info → pulumi_alicloud-3.76.0a1744139894.dist-info}/WHEEL +0 -0
  237. {pulumi_alicloud-3.76.0a1743484854.dist-info → pulumi_alicloud-3.76.0a1744139894.dist-info}/top_level.txt +0 -0
@@ -21,60 +21,62 @@ __all__ = ['TransitRouterVpnAttachmentArgs', 'TransitRouterVpnAttachment']
21
21
  @pulumi.input_type
22
22
  class TransitRouterVpnAttachmentArgs:
23
23
  def __init__(__self__, *,
24
- transit_router_id: pulumi.Input[str],
25
24
  vpn_id: pulumi.Input[str],
26
- zones: pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]],
27
25
  auto_publish_route_enabled: Optional[pulumi.Input[bool]] = None,
28
26
  cen_id: Optional[pulumi.Input[str]] = None,
27
+ charge_type: Optional[pulumi.Input[str]] = None,
29
28
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
30
29
  transit_router_attachment_description: Optional[pulumi.Input[str]] = None,
31
30
  transit_router_attachment_name: Optional[pulumi.Input[str]] = None,
32
- vpn_owner_id: Optional[pulumi.Input[str]] = None):
31
+ transit_router_id: Optional[pulumi.Input[str]] = None,
32
+ vpn_owner_id: Optional[pulumi.Input[str]] = None,
33
+ zones: Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]] = None):
33
34
  """
34
35
  The set of arguments for constructing a TransitRouterVpnAttachment resource.
35
- :param pulumi.Input[str] transit_router_id: The ID of the forwarding router instance.
36
- :param pulumi.Input[str] vpn_id: The id of the vpn.
37
- :param pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]] zones: The list of zone mapping. See `zone` below.
38
- :param pulumi.Input[bool] auto_publish_route_enabled: Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
39
- :param pulumi.Input[str] cen_id: The id of the cen.
40
- :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
41
- :param pulumi.Input[str] transit_router_attachment_description: The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
42
- :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
43
- :param pulumi.Input[str] vpn_owner_id: The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
44
- """
45
- pulumi.set(__self__, "transit_router_id", transit_router_id)
36
+ :param pulumi.Input[str] vpn_id: The ID of the IPsec-VPN attachment.
37
+ :param pulumi.Input[bool] auto_publish_route_enabled: Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
38
+ :param pulumi.Input[str] cen_id: The ID of the Cloud Enterprise Network (CEN) instance.
39
+ :param pulumi.Input[str] charge_type: The billing method.
40
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
41
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: The tag of the resource
42
+ :param pulumi.Input[str] transit_router_attachment_description: The new description of the VPN attachment.
43
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
44
+ :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN attachment.
45
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
46
+ :param pulumi.Input[str] transit_router_id: The ID of the transit router.
47
+ :param pulumi.Input[str] vpn_owner_id: The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
48
+
49
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
50
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
51
+ :param pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]] zones: The Zone ID in the current region.
52
+ System will create resources under the Zone that you specify.
53
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
54
+ """
46
55
  pulumi.set(__self__, "vpn_id", vpn_id)
47
- pulumi.set(__self__, "zones", zones)
48
56
  if auto_publish_route_enabled is not None:
49
57
  pulumi.set(__self__, "auto_publish_route_enabled", auto_publish_route_enabled)
50
58
  if cen_id is not None:
51
59
  pulumi.set(__self__, "cen_id", cen_id)
60
+ if charge_type is not None:
61
+ pulumi.set(__self__, "charge_type", charge_type)
52
62
  if tags is not None:
53
63
  pulumi.set(__self__, "tags", tags)
54
64
  if transit_router_attachment_description is not None:
55
65
  pulumi.set(__self__, "transit_router_attachment_description", transit_router_attachment_description)
56
66
  if transit_router_attachment_name is not None:
57
67
  pulumi.set(__self__, "transit_router_attachment_name", transit_router_attachment_name)
68
+ if transit_router_id is not None:
69
+ pulumi.set(__self__, "transit_router_id", transit_router_id)
58
70
  if vpn_owner_id is not None:
59
71
  pulumi.set(__self__, "vpn_owner_id", vpn_owner_id)
60
-
61
- @property
62
- @pulumi.getter(name="transitRouterId")
63
- def transit_router_id(self) -> pulumi.Input[str]:
64
- """
65
- The ID of the forwarding router instance.
66
- """
67
- return pulumi.get(self, "transit_router_id")
68
-
69
- @transit_router_id.setter
70
- def transit_router_id(self, value: pulumi.Input[str]):
71
- pulumi.set(self, "transit_router_id", value)
72
+ if zones is not None:
73
+ pulumi.set(__self__, "zones", zones)
72
74
 
73
75
  @property
74
76
  @pulumi.getter(name="vpnId")
75
77
  def vpn_id(self) -> pulumi.Input[str]:
76
78
  """
77
- The id of the vpn.
79
+ The ID of the IPsec-VPN attachment.
78
80
  """
79
81
  return pulumi.get(self, "vpn_id")
80
82
 
@@ -82,23 +84,11 @@ class TransitRouterVpnAttachmentArgs:
82
84
  def vpn_id(self, value: pulumi.Input[str]):
83
85
  pulumi.set(self, "vpn_id", value)
84
86
 
85
- @property
86
- @pulumi.getter
87
- def zones(self) -> pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]:
88
- """
89
- The list of zone mapping. See `zone` below.
90
- """
91
- return pulumi.get(self, "zones")
92
-
93
- @zones.setter
94
- def zones(self, value: pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]):
95
- pulumi.set(self, "zones", value)
96
-
97
87
  @property
98
88
  @pulumi.getter(name="autoPublishRouteEnabled")
99
89
  def auto_publish_route_enabled(self) -> Optional[pulumi.Input[bool]]:
100
90
  """
101
- Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
91
+ Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
102
92
  """
103
93
  return pulumi.get(self, "auto_publish_route_enabled")
104
94
 
@@ -110,7 +100,7 @@ class TransitRouterVpnAttachmentArgs:
110
100
  @pulumi.getter(name="cenId")
111
101
  def cen_id(self) -> Optional[pulumi.Input[str]]:
112
102
  """
113
- The id of the cen.
103
+ The ID of the Cloud Enterprise Network (CEN) instance.
114
104
  """
115
105
  return pulumi.get(self, "cen_id")
116
106
 
@@ -118,11 +108,24 @@ class TransitRouterVpnAttachmentArgs:
118
108
  def cen_id(self, value: Optional[pulumi.Input[str]]):
119
109
  pulumi.set(self, "cen_id", value)
120
110
 
111
+ @property
112
+ @pulumi.getter(name="chargeType")
113
+ def charge_type(self) -> Optional[pulumi.Input[str]]:
114
+ """
115
+ The billing method.
116
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
117
+ """
118
+ return pulumi.get(self, "charge_type")
119
+
120
+ @charge_type.setter
121
+ def charge_type(self, value: Optional[pulumi.Input[str]]):
122
+ pulumi.set(self, "charge_type", value)
123
+
121
124
  @property
122
125
  @pulumi.getter
123
126
  def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
124
127
  """
125
- A mapping of tags to assign to the resource.
128
+ The tag of the resource
126
129
  """
127
130
  return pulumi.get(self, "tags")
128
131
 
@@ -134,7 +137,8 @@ class TransitRouterVpnAttachmentArgs:
134
137
  @pulumi.getter(name="transitRouterAttachmentDescription")
135
138
  def transit_router_attachment_description(self) -> Optional[pulumi.Input[str]]:
136
139
  """
137
- The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
140
+ The new description of the VPN attachment.
141
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
138
142
  """
139
143
  return pulumi.get(self, "transit_router_attachment_description")
140
144
 
@@ -146,7 +150,8 @@ class TransitRouterVpnAttachmentArgs:
146
150
  @pulumi.getter(name="transitRouterAttachmentName")
147
151
  def transit_router_attachment_name(self) -> Optional[pulumi.Input[str]]:
148
152
  """
149
- The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
153
+ The name of the VPN attachment.
154
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
150
155
  """
151
156
  return pulumi.get(self, "transit_router_attachment_name")
152
157
 
@@ -154,11 +159,26 @@ class TransitRouterVpnAttachmentArgs:
154
159
  def transit_router_attachment_name(self, value: Optional[pulumi.Input[str]]):
155
160
  pulumi.set(self, "transit_router_attachment_name", value)
156
161
 
162
+ @property
163
+ @pulumi.getter(name="transitRouterId")
164
+ def transit_router_id(self) -> Optional[pulumi.Input[str]]:
165
+ """
166
+ The ID of the transit router.
167
+ """
168
+ return pulumi.get(self, "transit_router_id")
169
+
170
+ @transit_router_id.setter
171
+ def transit_router_id(self, value: Optional[pulumi.Input[str]]):
172
+ pulumi.set(self, "transit_router_id", value)
173
+
157
174
  @property
158
175
  @pulumi.getter(name="vpnOwnerId")
159
176
  def vpn_owner_id(self) -> Optional[pulumi.Input[str]]:
160
177
  """
161
- The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
178
+ The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
179
+
180
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
181
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
162
182
  """
163
183
  return pulumi.get(self, "vpn_owner_id")
164
184
 
@@ -166,12 +186,29 @@ class TransitRouterVpnAttachmentArgs:
166
186
  def vpn_owner_id(self, value: Optional[pulumi.Input[str]]):
167
187
  pulumi.set(self, "vpn_owner_id", value)
168
188
 
189
+ @property
190
+ @pulumi.getter
191
+ def zones(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]]:
192
+ """
193
+ The Zone ID in the current region.
194
+ System will create resources under the Zone that you specify.
195
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
196
+ """
197
+ return pulumi.get(self, "zones")
198
+
199
+ @zones.setter
200
+ def zones(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]]):
201
+ pulumi.set(self, "zones", value)
202
+
169
203
 
170
204
  @pulumi.input_type
171
205
  class _TransitRouterVpnAttachmentState:
172
206
  def __init__(__self__, *,
173
207
  auto_publish_route_enabled: Optional[pulumi.Input[bool]] = None,
174
208
  cen_id: Optional[pulumi.Input[str]] = None,
209
+ charge_type: Optional[pulumi.Input[str]] = None,
210
+ create_time: Optional[pulumi.Input[str]] = None,
211
+ region_id: Optional[pulumi.Input[str]] = None,
175
212
  status: Optional[pulumi.Input[str]] = None,
176
213
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
177
214
  transit_router_attachment_description: Optional[pulumi.Input[str]] = None,
@@ -182,21 +219,38 @@ class _TransitRouterVpnAttachmentState:
182
219
  zones: Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]] = None):
183
220
  """
184
221
  Input properties used for looking up and filtering TransitRouterVpnAttachment resources.
185
- :param pulumi.Input[bool] auto_publish_route_enabled: Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
186
- :param pulumi.Input[str] cen_id: The id of the cen.
187
- :param pulumi.Input[str] status: The associating status of the network.
188
- :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
189
- :param pulumi.Input[str] transit_router_attachment_description: The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
190
- :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
191
- :param pulumi.Input[str] transit_router_id: The ID of the forwarding router instance.
192
- :param pulumi.Input[str] vpn_id: The id of the vpn.
193
- :param pulumi.Input[str] vpn_owner_id: The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
194
- :param pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]] zones: The list of zone mapping. See `zone` below.
222
+ :param pulumi.Input[bool] auto_publish_route_enabled: Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
223
+ :param pulumi.Input[str] cen_id: The ID of the Cloud Enterprise Network (CEN) instance.
224
+ :param pulumi.Input[str] charge_type: The billing method.
225
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
226
+ :param pulumi.Input[str] create_time: The creation time of the resource
227
+ :param pulumi.Input[str] region_id: The ID of the region where the transit router is deployed.
228
+ :param pulumi.Input[str] status: Status
229
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: The tag of the resource
230
+ :param pulumi.Input[str] transit_router_attachment_description: The new description of the VPN attachment.
231
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
232
+ :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN attachment.
233
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
234
+ :param pulumi.Input[str] transit_router_id: The ID of the transit router.
235
+ :param pulumi.Input[str] vpn_id: The ID of the IPsec-VPN attachment.
236
+ :param pulumi.Input[str] vpn_owner_id: The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
237
+
238
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
239
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
240
+ :param pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]] zones: The Zone ID in the current region.
241
+ System will create resources under the Zone that you specify.
242
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
195
243
  """
196
244
  if auto_publish_route_enabled is not None:
197
245
  pulumi.set(__self__, "auto_publish_route_enabled", auto_publish_route_enabled)
198
246
  if cen_id is not None:
199
247
  pulumi.set(__self__, "cen_id", cen_id)
248
+ if charge_type is not None:
249
+ pulumi.set(__self__, "charge_type", charge_type)
250
+ if create_time is not None:
251
+ pulumi.set(__self__, "create_time", create_time)
252
+ if region_id is not None:
253
+ pulumi.set(__self__, "region_id", region_id)
200
254
  if status is not None:
201
255
  pulumi.set(__self__, "status", status)
202
256
  if tags is not None:
@@ -218,7 +272,7 @@ class _TransitRouterVpnAttachmentState:
218
272
  @pulumi.getter(name="autoPublishRouteEnabled")
219
273
  def auto_publish_route_enabled(self) -> Optional[pulumi.Input[bool]]:
220
274
  """
221
- Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
275
+ Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
222
276
  """
223
277
  return pulumi.get(self, "auto_publish_route_enabled")
224
278
 
@@ -230,7 +284,7 @@ class _TransitRouterVpnAttachmentState:
230
284
  @pulumi.getter(name="cenId")
231
285
  def cen_id(self) -> Optional[pulumi.Input[str]]:
232
286
  """
233
- The id of the cen.
287
+ The ID of the Cloud Enterprise Network (CEN) instance.
234
288
  """
235
289
  return pulumi.get(self, "cen_id")
236
290
 
@@ -238,11 +292,48 @@ class _TransitRouterVpnAttachmentState:
238
292
  def cen_id(self, value: Optional[pulumi.Input[str]]):
239
293
  pulumi.set(self, "cen_id", value)
240
294
 
295
+ @property
296
+ @pulumi.getter(name="chargeType")
297
+ def charge_type(self) -> Optional[pulumi.Input[str]]:
298
+ """
299
+ The billing method.
300
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
301
+ """
302
+ return pulumi.get(self, "charge_type")
303
+
304
+ @charge_type.setter
305
+ def charge_type(self, value: Optional[pulumi.Input[str]]):
306
+ pulumi.set(self, "charge_type", value)
307
+
308
+ @property
309
+ @pulumi.getter(name="createTime")
310
+ def create_time(self) -> Optional[pulumi.Input[str]]:
311
+ """
312
+ The creation time of the resource
313
+ """
314
+ return pulumi.get(self, "create_time")
315
+
316
+ @create_time.setter
317
+ def create_time(self, value: Optional[pulumi.Input[str]]):
318
+ pulumi.set(self, "create_time", value)
319
+
320
+ @property
321
+ @pulumi.getter(name="regionId")
322
+ def region_id(self) -> Optional[pulumi.Input[str]]:
323
+ """
324
+ The ID of the region where the transit router is deployed.
325
+ """
326
+ return pulumi.get(self, "region_id")
327
+
328
+ @region_id.setter
329
+ def region_id(self, value: Optional[pulumi.Input[str]]):
330
+ pulumi.set(self, "region_id", value)
331
+
241
332
  @property
242
333
  @pulumi.getter
243
334
  def status(self) -> Optional[pulumi.Input[str]]:
244
335
  """
245
- The associating status of the network.
336
+ Status
246
337
  """
247
338
  return pulumi.get(self, "status")
248
339
 
@@ -254,7 +345,7 @@ class _TransitRouterVpnAttachmentState:
254
345
  @pulumi.getter
255
346
  def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
256
347
  """
257
- A mapping of tags to assign to the resource.
348
+ The tag of the resource
258
349
  """
259
350
  return pulumi.get(self, "tags")
260
351
 
@@ -266,7 +357,8 @@ class _TransitRouterVpnAttachmentState:
266
357
  @pulumi.getter(name="transitRouterAttachmentDescription")
267
358
  def transit_router_attachment_description(self) -> Optional[pulumi.Input[str]]:
268
359
  """
269
- The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
360
+ The new description of the VPN attachment.
361
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
270
362
  """
271
363
  return pulumi.get(self, "transit_router_attachment_description")
272
364
 
@@ -278,7 +370,8 @@ class _TransitRouterVpnAttachmentState:
278
370
  @pulumi.getter(name="transitRouterAttachmentName")
279
371
  def transit_router_attachment_name(self) -> Optional[pulumi.Input[str]]:
280
372
  """
281
- The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
373
+ The name of the VPN attachment.
374
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
282
375
  """
283
376
  return pulumi.get(self, "transit_router_attachment_name")
284
377
 
@@ -290,7 +383,7 @@ class _TransitRouterVpnAttachmentState:
290
383
  @pulumi.getter(name="transitRouterId")
291
384
  def transit_router_id(self) -> Optional[pulumi.Input[str]]:
292
385
  """
293
- The ID of the forwarding router instance.
386
+ The ID of the transit router.
294
387
  """
295
388
  return pulumi.get(self, "transit_router_id")
296
389
 
@@ -302,7 +395,7 @@ class _TransitRouterVpnAttachmentState:
302
395
  @pulumi.getter(name="vpnId")
303
396
  def vpn_id(self) -> Optional[pulumi.Input[str]]:
304
397
  """
305
- The id of the vpn.
398
+ The ID of the IPsec-VPN attachment.
306
399
  """
307
400
  return pulumi.get(self, "vpn_id")
308
401
 
@@ -314,7 +407,10 @@ class _TransitRouterVpnAttachmentState:
314
407
  @pulumi.getter(name="vpnOwnerId")
315
408
  def vpn_owner_id(self) -> Optional[pulumi.Input[str]]:
316
409
  """
317
- The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
410
+ The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
411
+
412
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
413
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
318
414
  """
319
415
  return pulumi.get(self, "vpn_owner_id")
320
416
 
@@ -326,7 +422,9 @@ class _TransitRouterVpnAttachmentState:
326
422
  @pulumi.getter
327
423
  def zones(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TransitRouterVpnAttachmentZoneArgs']]]]:
328
424
  """
329
- The list of zone mapping. See `zone` below.
425
+ The Zone ID in the current region.
426
+ System will create resources under the Zone that you specify.
427
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
330
428
  """
331
429
  return pulumi.get(self, "zones")
332
430
 
@@ -342,6 +440,7 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
342
440
  opts: Optional[pulumi.ResourceOptions] = None,
343
441
  auto_publish_route_enabled: Optional[pulumi.Input[bool]] = None,
344
442
  cen_id: Optional[pulumi.Input[str]] = None,
443
+ charge_type: Optional[pulumi.Input[str]] = None,
345
444
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
346
445
  transit_router_attachment_description: Optional[pulumi.Input[str]] = None,
347
446
  transit_router_attachment_name: Optional[pulumi.Input[str]] = None,
@@ -392,10 +491,10 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
392
491
  "ike_version": "ikev2",
393
492
  "ike_mode": "main",
394
493
  "ike_lifetime": 86400,
395
- "psk": "tf-testvpn2",
494
+ "psk": "tf-examplevpn2",
396
495
  "ike_pfs": "group1",
397
- "remote_id": "testbob2",
398
- "local_id": "testalice2",
496
+ "remote_id": "examplebob2",
497
+ "local_id": "examplealice2",
399
498
  },
400
499
  ipsec_config={
401
500
  "ipsec_pfs": "group5",
@@ -438,6 +537,92 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
438
537
  }])
439
538
  ```
440
539
 
540
+ Dual Tunnel Mode Usage
541
+
542
+ ```python
543
+ import pulumi
544
+ import pulumi_alicloud as alicloud
545
+
546
+ config = pulumi.Config()
547
+ name = config.get("name")
548
+ if name is None:
549
+ name = "tf_example"
550
+ default = alicloud.get_account()
551
+ defaultbp_r5_uk = alicloud.cen.Instance("defaultbpR5Uk", cen_instance_name="example-vpn-attachment")
552
+ default_m8_zo6_h = alicloud.cen.TransitRouter("defaultM8Zo6H", cen_id=defaultbp_r5_uk.id)
553
+ defaultu_uty_cv = alicloud.cen.TransitRouterCidr("defaultuUtyCv",
554
+ cidr="192.168.10.0/24",
555
+ transit_router_id=default_m8_zo6_h.transit_router_id)
556
+ default_meo_c_iz = alicloud.vpn.CustomerGateway("defaultMeoCIz",
557
+ ip_address="0.0.0.0",
558
+ customer_gateway_name="example-vpn-attachment",
559
+ opts = pulumi.ResourceOptions(depends_on=[defaultu_uty_cv]))
560
+ default_get_transit_router_service = alicloud.cen.get_transit_router_service(enable="On")
561
+ defaultvr_pzdh = alicloud.vpn.GatewayVpnAttachment("defaultvrPzdh",
562
+ network_type="public",
563
+ local_subnet="0.0.0.0/0",
564
+ enable_tunnels_bgp=False,
565
+ vpn_attachment_name=name,
566
+ tunnel_options_specifications=[
567
+ {
568
+ "customer_gateway_id": default_meo_c_iz.id,
569
+ "enable_dpd": True,
570
+ "enable_nat_traversal": True,
571
+ "tunnel_index": 1,
572
+ "tunnel_ike_config": {
573
+ "remote_id": "2.2.2.2",
574
+ "ike_enc_alg": "aes",
575
+ "ike_mode": "main",
576
+ "ike_version": "ikev1",
577
+ "local_id": "1.1.1.1",
578
+ "ike_auth_alg": "md5",
579
+ "ike_lifetime": 86100,
580
+ "ike_pfs": "group2",
581
+ "psk": "12345678",
582
+ },
583
+ "tunnel_ipsec_config": {
584
+ "ipsec_auth_alg": "md5",
585
+ "ipsec_enc_alg": "aes",
586
+ "ipsec_lifetime": 86200,
587
+ "ipsec_pfs": "group5",
588
+ },
589
+ },
590
+ {
591
+ "enable_nat_traversal": True,
592
+ "tunnel_index": 2,
593
+ "tunnel_ike_config": {
594
+ "local_id": "4.4.4.4",
595
+ "remote_id": "5.5.5.5",
596
+ "ike_lifetime": 86400,
597
+ "ike_pfs": "group5",
598
+ "ike_mode": "main",
599
+ "ike_version": "ikev2",
600
+ "psk": "32333442",
601
+ "ike_auth_alg": "md5",
602
+ "ike_enc_alg": "aes",
603
+ },
604
+ "tunnel_ipsec_config": {
605
+ "ipsec_enc_alg": "aes",
606
+ "ipsec_lifetime": 86400,
607
+ "ipsec_pfs": "group5",
608
+ "ipsec_auth_alg": "sha256",
609
+ },
610
+ "customer_gateway_id": default_meo_c_iz.id,
611
+ "enable_dpd": True,
612
+ },
613
+ ],
614
+ remote_subnet="0.0.0.0/0")
615
+ default_transit_router_vpn_attachment = alicloud.cen.TransitRouterVpnAttachment("default",
616
+ transit_router_id=default_m8_zo6_h.transit_router_id,
617
+ vpn_id=defaultvr_pzdh.id,
618
+ auto_publish_route_enabled=False,
619
+ charge_type="POSTPAY",
620
+ transit_router_attachment_name="example-vpn-attachment",
621
+ vpn_owner_id=default.id,
622
+ cen_id=default_m8_zo6_h.cen_id,
623
+ transit_router_attachment_description="example-vpn-attachment")
624
+ ```
625
+
441
626
  ## Import
442
627
 
443
628
  Cloud Enterprise Network (CEN) Transit Router Vpn Attachment can be imported using the id, e.g.
@@ -448,15 +633,24 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
448
633
 
449
634
  :param str resource_name: The name of the resource.
450
635
  :param pulumi.ResourceOptions opts: Options for the resource.
451
- :param pulumi.Input[bool] auto_publish_route_enabled: Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
452
- :param pulumi.Input[str] cen_id: The id of the cen.
453
- :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
454
- :param pulumi.Input[str] transit_router_attachment_description: The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
455
- :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
456
- :param pulumi.Input[str] transit_router_id: The ID of the forwarding router instance.
457
- :param pulumi.Input[str] vpn_id: The id of the vpn.
458
- :param pulumi.Input[str] vpn_owner_id: The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
459
- :param pulumi.Input[Sequence[pulumi.Input[Union['TransitRouterVpnAttachmentZoneArgs', 'TransitRouterVpnAttachmentZoneArgsDict']]]] zones: The list of zone mapping. See `zone` below.
636
+ :param pulumi.Input[bool] auto_publish_route_enabled: Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
637
+ :param pulumi.Input[str] cen_id: The ID of the Cloud Enterprise Network (CEN) instance.
638
+ :param pulumi.Input[str] charge_type: The billing method.
639
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
640
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: The tag of the resource
641
+ :param pulumi.Input[str] transit_router_attachment_description: The new description of the VPN attachment.
642
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
643
+ :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN attachment.
644
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
645
+ :param pulumi.Input[str] transit_router_id: The ID of the transit router.
646
+ :param pulumi.Input[str] vpn_id: The ID of the IPsec-VPN attachment.
647
+ :param pulumi.Input[str] vpn_owner_id: The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
648
+
649
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
650
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
651
+ :param pulumi.Input[Sequence[pulumi.Input[Union['TransitRouterVpnAttachmentZoneArgs', 'TransitRouterVpnAttachmentZoneArgsDict']]]] zones: The Zone ID in the current region.
652
+ System will create resources under the Zone that you specify.
653
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
460
654
  """
461
655
  ...
462
656
  @overload
@@ -506,10 +700,10 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
506
700
  "ike_version": "ikev2",
507
701
  "ike_mode": "main",
508
702
  "ike_lifetime": 86400,
509
- "psk": "tf-testvpn2",
703
+ "psk": "tf-examplevpn2",
510
704
  "ike_pfs": "group1",
511
- "remote_id": "testbob2",
512
- "local_id": "testalice2",
705
+ "remote_id": "examplebob2",
706
+ "local_id": "examplealice2",
513
707
  },
514
708
  ipsec_config={
515
709
  "ipsec_pfs": "group5",
@@ -552,6 +746,92 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
552
746
  }])
553
747
  ```
554
748
 
749
+ Dual Tunnel Mode Usage
750
+
751
+ ```python
752
+ import pulumi
753
+ import pulumi_alicloud as alicloud
754
+
755
+ config = pulumi.Config()
756
+ name = config.get("name")
757
+ if name is None:
758
+ name = "tf_example"
759
+ default = alicloud.get_account()
760
+ defaultbp_r5_uk = alicloud.cen.Instance("defaultbpR5Uk", cen_instance_name="example-vpn-attachment")
761
+ default_m8_zo6_h = alicloud.cen.TransitRouter("defaultM8Zo6H", cen_id=defaultbp_r5_uk.id)
762
+ defaultu_uty_cv = alicloud.cen.TransitRouterCidr("defaultuUtyCv",
763
+ cidr="192.168.10.0/24",
764
+ transit_router_id=default_m8_zo6_h.transit_router_id)
765
+ default_meo_c_iz = alicloud.vpn.CustomerGateway("defaultMeoCIz",
766
+ ip_address="0.0.0.0",
767
+ customer_gateway_name="example-vpn-attachment",
768
+ opts = pulumi.ResourceOptions(depends_on=[defaultu_uty_cv]))
769
+ default_get_transit_router_service = alicloud.cen.get_transit_router_service(enable="On")
770
+ defaultvr_pzdh = alicloud.vpn.GatewayVpnAttachment("defaultvrPzdh",
771
+ network_type="public",
772
+ local_subnet="0.0.0.0/0",
773
+ enable_tunnels_bgp=False,
774
+ vpn_attachment_name=name,
775
+ tunnel_options_specifications=[
776
+ {
777
+ "customer_gateway_id": default_meo_c_iz.id,
778
+ "enable_dpd": True,
779
+ "enable_nat_traversal": True,
780
+ "tunnel_index": 1,
781
+ "tunnel_ike_config": {
782
+ "remote_id": "2.2.2.2",
783
+ "ike_enc_alg": "aes",
784
+ "ike_mode": "main",
785
+ "ike_version": "ikev1",
786
+ "local_id": "1.1.1.1",
787
+ "ike_auth_alg": "md5",
788
+ "ike_lifetime": 86100,
789
+ "ike_pfs": "group2",
790
+ "psk": "12345678",
791
+ },
792
+ "tunnel_ipsec_config": {
793
+ "ipsec_auth_alg": "md5",
794
+ "ipsec_enc_alg": "aes",
795
+ "ipsec_lifetime": 86200,
796
+ "ipsec_pfs": "group5",
797
+ },
798
+ },
799
+ {
800
+ "enable_nat_traversal": True,
801
+ "tunnel_index": 2,
802
+ "tunnel_ike_config": {
803
+ "local_id": "4.4.4.4",
804
+ "remote_id": "5.5.5.5",
805
+ "ike_lifetime": 86400,
806
+ "ike_pfs": "group5",
807
+ "ike_mode": "main",
808
+ "ike_version": "ikev2",
809
+ "psk": "32333442",
810
+ "ike_auth_alg": "md5",
811
+ "ike_enc_alg": "aes",
812
+ },
813
+ "tunnel_ipsec_config": {
814
+ "ipsec_enc_alg": "aes",
815
+ "ipsec_lifetime": 86400,
816
+ "ipsec_pfs": "group5",
817
+ "ipsec_auth_alg": "sha256",
818
+ },
819
+ "customer_gateway_id": default_meo_c_iz.id,
820
+ "enable_dpd": True,
821
+ },
822
+ ],
823
+ remote_subnet="0.0.0.0/0")
824
+ default_transit_router_vpn_attachment = alicloud.cen.TransitRouterVpnAttachment("default",
825
+ transit_router_id=default_m8_zo6_h.transit_router_id,
826
+ vpn_id=defaultvr_pzdh.id,
827
+ auto_publish_route_enabled=False,
828
+ charge_type="POSTPAY",
829
+ transit_router_attachment_name="example-vpn-attachment",
830
+ vpn_owner_id=default.id,
831
+ cen_id=default_m8_zo6_h.cen_id,
832
+ transit_router_attachment_description="example-vpn-attachment")
833
+ ```
834
+
555
835
  ## Import
556
836
 
557
837
  Cloud Enterprise Network (CEN) Transit Router Vpn Attachment can be imported using the id, e.g.
@@ -577,6 +857,7 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
577
857
  opts: Optional[pulumi.ResourceOptions] = None,
578
858
  auto_publish_route_enabled: Optional[pulumi.Input[bool]] = None,
579
859
  cen_id: Optional[pulumi.Input[str]] = None,
860
+ charge_type: Optional[pulumi.Input[str]] = None,
580
861
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
581
862
  transit_router_attachment_description: Optional[pulumi.Input[str]] = None,
582
863
  transit_router_attachment_name: Optional[pulumi.Input[str]] = None,
@@ -595,19 +876,18 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
595
876
 
596
877
  __props__.__dict__["auto_publish_route_enabled"] = auto_publish_route_enabled
597
878
  __props__.__dict__["cen_id"] = cen_id
879
+ __props__.__dict__["charge_type"] = charge_type
598
880
  __props__.__dict__["tags"] = tags
599
881
  __props__.__dict__["transit_router_attachment_description"] = transit_router_attachment_description
600
882
  __props__.__dict__["transit_router_attachment_name"] = transit_router_attachment_name
601
- if transit_router_id is None and not opts.urn:
602
- raise TypeError("Missing required property 'transit_router_id'")
603
883
  __props__.__dict__["transit_router_id"] = transit_router_id
604
884
  if vpn_id is None and not opts.urn:
605
885
  raise TypeError("Missing required property 'vpn_id'")
606
886
  __props__.__dict__["vpn_id"] = vpn_id
607
887
  __props__.__dict__["vpn_owner_id"] = vpn_owner_id
608
- if zones is None and not opts.urn:
609
- raise TypeError("Missing required property 'zones'")
610
888
  __props__.__dict__["zones"] = zones
889
+ __props__.__dict__["create_time"] = None
890
+ __props__.__dict__["region_id"] = None
611
891
  __props__.__dict__["status"] = None
612
892
  super(TransitRouterVpnAttachment, __self__).__init__(
613
893
  'alicloud:cen/transitRouterVpnAttachment:TransitRouterVpnAttachment',
@@ -621,6 +901,9 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
621
901
  opts: Optional[pulumi.ResourceOptions] = None,
622
902
  auto_publish_route_enabled: Optional[pulumi.Input[bool]] = None,
623
903
  cen_id: Optional[pulumi.Input[str]] = None,
904
+ charge_type: Optional[pulumi.Input[str]] = None,
905
+ create_time: Optional[pulumi.Input[str]] = None,
906
+ region_id: Optional[pulumi.Input[str]] = None,
624
907
  status: Optional[pulumi.Input[str]] = None,
625
908
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
626
909
  transit_router_attachment_description: Optional[pulumi.Input[str]] = None,
@@ -636,16 +919,27 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
636
919
  :param str resource_name: The unique name of the resulting resource.
637
920
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
638
921
  :param pulumi.ResourceOptions opts: Options for the resource.
639
- :param pulumi.Input[bool] auto_publish_route_enabled: Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
640
- :param pulumi.Input[str] cen_id: The id of the cen.
641
- :param pulumi.Input[str] status: The associating status of the network.
642
- :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
643
- :param pulumi.Input[str] transit_router_attachment_description: The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
644
- :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
645
- :param pulumi.Input[str] transit_router_id: The ID of the forwarding router instance.
646
- :param pulumi.Input[str] vpn_id: The id of the vpn.
647
- :param pulumi.Input[str] vpn_owner_id: The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
648
- :param pulumi.Input[Sequence[pulumi.Input[Union['TransitRouterVpnAttachmentZoneArgs', 'TransitRouterVpnAttachmentZoneArgsDict']]]] zones: The list of zone mapping. See `zone` below.
922
+ :param pulumi.Input[bool] auto_publish_route_enabled: Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
923
+ :param pulumi.Input[str] cen_id: The ID of the Cloud Enterprise Network (CEN) instance.
924
+ :param pulumi.Input[str] charge_type: The billing method.
925
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
926
+ :param pulumi.Input[str] create_time: The creation time of the resource
927
+ :param pulumi.Input[str] region_id: The ID of the region where the transit router is deployed.
928
+ :param pulumi.Input[str] status: Status
929
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: The tag of the resource
930
+ :param pulumi.Input[str] transit_router_attachment_description: The new description of the VPN attachment.
931
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
932
+ :param pulumi.Input[str] transit_router_attachment_name: The name of the VPN attachment.
933
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
934
+ :param pulumi.Input[str] transit_router_id: The ID of the transit router.
935
+ :param pulumi.Input[str] vpn_id: The ID of the IPsec-VPN attachment.
936
+ :param pulumi.Input[str] vpn_owner_id: The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
937
+
938
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
939
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
940
+ :param pulumi.Input[Sequence[pulumi.Input[Union['TransitRouterVpnAttachmentZoneArgs', 'TransitRouterVpnAttachmentZoneArgsDict']]]] zones: The Zone ID in the current region.
941
+ System will create resources under the Zone that you specify.
942
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
649
943
  """
650
944
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
651
945
 
@@ -653,6 +947,9 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
653
947
 
654
948
  __props__.__dict__["auto_publish_route_enabled"] = auto_publish_route_enabled
655
949
  __props__.__dict__["cen_id"] = cen_id
950
+ __props__.__dict__["charge_type"] = charge_type
951
+ __props__.__dict__["create_time"] = create_time
952
+ __props__.__dict__["region_id"] = region_id
656
953
  __props__.__dict__["status"] = status
657
954
  __props__.__dict__["tags"] = tags
658
955
  __props__.__dict__["transit_router_attachment_description"] = transit_router_attachment_description
@@ -665,25 +962,50 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
665
962
 
666
963
  @property
667
964
  @pulumi.getter(name="autoPublishRouteEnabled")
668
- def auto_publish_route_enabled(self) -> pulumi.Output[bool]:
965
+ def auto_publish_route_enabled(self) -> pulumi.Output[Optional[bool]]:
669
966
  """
670
- Whether to allow the forwarding router instance to automatically publish routing entries to IPsec connections.
967
+ Specifies whether to allow the transit router to automatically advertise routes to the IPsec-VPN attachment. Valid values:
671
968
  """
672
969
  return pulumi.get(self, "auto_publish_route_enabled")
673
970
 
674
971
  @property
675
972
  @pulumi.getter(name="cenId")
676
- def cen_id(self) -> pulumi.Output[Optional[str]]:
973
+ def cen_id(self) -> pulumi.Output[str]:
677
974
  """
678
- The id of the cen.
975
+ The ID of the Cloud Enterprise Network (CEN) instance.
679
976
  """
680
977
  return pulumi.get(self, "cen_id")
681
978
 
979
+ @property
980
+ @pulumi.getter(name="chargeType")
981
+ def charge_type(self) -> pulumi.Output[str]:
982
+ """
983
+ The billing method.
984
+ Set the value to `POSTPAY`, which is the default value and specifies the pay-as-you-go billing method.
985
+ """
986
+ return pulumi.get(self, "charge_type")
987
+
988
+ @property
989
+ @pulumi.getter(name="createTime")
990
+ def create_time(self) -> pulumi.Output[str]:
991
+ """
992
+ The creation time of the resource
993
+ """
994
+ return pulumi.get(self, "create_time")
995
+
996
+ @property
997
+ @pulumi.getter(name="regionId")
998
+ def region_id(self) -> pulumi.Output[str]:
999
+ """
1000
+ The ID of the region where the transit router is deployed.
1001
+ """
1002
+ return pulumi.get(self, "region_id")
1003
+
682
1004
  @property
683
1005
  @pulumi.getter
684
1006
  def status(self) -> pulumi.Output[str]:
685
1007
  """
686
- The associating status of the network.
1008
+ Status
687
1009
  """
688
1010
  return pulumi.get(self, "status")
689
1011
 
@@ -691,7 +1013,7 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
691
1013
  @pulumi.getter
692
1014
  def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
693
1015
  """
694
- A mapping of tags to assign to the resource.
1016
+ The tag of the resource
695
1017
  """
696
1018
  return pulumi.get(self, "tags")
697
1019
 
@@ -699,7 +1021,8 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
699
1021
  @pulumi.getter(name="transitRouterAttachmentDescription")
700
1022
  def transit_router_attachment_description(self) -> pulumi.Output[Optional[str]]:
701
1023
  """
702
- The description of the VPN connection. The description can contain `2` to `256` characters. The description must start with English letters, but cannot start with `http://` or `https://`.
1024
+ The new description of the VPN attachment.
1025
+ The description must be 2 to 256 characters in length. The description must start with a letter but cannot start with `http://` or `https://`.
703
1026
  """
704
1027
  return pulumi.get(self, "transit_router_attachment_description")
705
1028
 
@@ -707,15 +1030,16 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
707
1030
  @pulumi.getter(name="transitRouterAttachmentName")
708
1031
  def transit_router_attachment_name(self) -> pulumi.Output[Optional[str]]:
709
1032
  """
710
- The name of the VPN connection. The name must be `2` to `128` characters in length, and can contain digits, underscores (_), and hyphens (-). It must start with a letter.
1033
+ The name of the VPN attachment.
1034
+ The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). It must start with a letter.
711
1035
  """
712
1036
  return pulumi.get(self, "transit_router_attachment_name")
713
1037
 
714
1038
  @property
715
1039
  @pulumi.getter(name="transitRouterId")
716
- def transit_router_id(self) -> pulumi.Output[str]:
1040
+ def transit_router_id(self) -> pulumi.Output[Optional[str]]:
717
1041
  """
718
- The ID of the forwarding router instance.
1042
+ The ID of the transit router.
719
1043
  """
720
1044
  return pulumi.get(self, "transit_router_id")
721
1045
 
@@ -723,7 +1047,7 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
723
1047
  @pulumi.getter(name="vpnId")
724
1048
  def vpn_id(self) -> pulumi.Output[str]:
725
1049
  """
726
- The id of the vpn.
1050
+ The ID of the IPsec-VPN attachment.
727
1051
  """
728
1052
  return pulumi.get(self, "vpn_id")
729
1053
 
@@ -731,15 +1055,20 @@ class TransitRouterVpnAttachment(pulumi.CustomResource):
731
1055
  @pulumi.getter(name="vpnOwnerId")
732
1056
  def vpn_owner_id(self) -> pulumi.Output[str]:
733
1057
  """
734
- The owner id of vpn. **NOTE:** You must set `vpn_owner_id`, if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
1058
+ The ID of the Alibaba Cloud account to which the IPsec-VPN connection belongs.
1059
+
1060
+ - If you do not set this parameter, the ID of the current Alibaba Cloud account is used.
1061
+ - You must set VpnOwnerId if you want to connect the transit router to an IPsec-VPN connection that belongs to another Alibaba Cloud account.
735
1062
  """
736
1063
  return pulumi.get(self, "vpn_owner_id")
737
1064
 
738
1065
  @property
739
1066
  @pulumi.getter
740
- def zones(self) -> pulumi.Output[Sequence['outputs.TransitRouterVpnAttachmentZone']]:
1067
+ def zones(self) -> pulumi.Output[Optional[Sequence['outputs.TransitRouterVpnAttachmentZone']]]:
741
1068
  """
742
- The list of zone mapping. See `zone` below.
1069
+ The Zone ID in the current region.
1070
+ System will create resources under the Zone that you specify.
1071
+ Left blank if associated IPSec connection is in dual-tunnel mode. See `zone` below.
743
1072
  """
744
1073
  return pulumi.get(self, "zones")
745
1074