pulumi-alicloud 3.78.0a1746767796__py3-none-any.whl → 3.78.0a1747367664__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 (146) hide show
  1. pulumi_alicloud/__init__.py +32 -0
  2. pulumi_alicloud/adb/cluster.py +12 -12
  3. pulumi_alicloud/alb/health_check_template.py +233 -93
  4. pulumi_alicloud/alb/load_balancer.py +110 -0
  5. pulumi_alicloud/amqp/exchange.py +250 -159
  6. pulumi_alicloud/apigateway/_inputs.py +23 -3
  7. pulumi_alicloud/apigateway/api.py +7 -7
  8. pulumi_alicloud/apigateway/backend.py +8 -8
  9. pulumi_alicloud/apigateway/outputs.py +16 -2
  10. pulumi_alicloud/arms/remote_write.py +2 -2
  11. pulumi_alicloud/bp/studio_application.py +2 -2
  12. pulumi_alicloud/cassandra/cluster.py +2 -2
  13. pulumi_alicloud/cassandra/data_center.py +2 -2
  14. pulumi_alicloud/cdn/fc_trigger.py +2 -2
  15. pulumi_alicloud/cen/_inputs.py +78 -27
  16. pulumi_alicloud/cen/bandwidth_limit.py +7 -7
  17. pulumi_alicloud/cen/inter_region_traffic_qos_policy.py +6 -6
  18. pulumi_alicloud/cen/outputs.py +52 -18
  19. pulumi_alicloud/cen/traffic_marking_policy.py +49 -9
  20. pulumi_alicloud/chatbot/publish_task.py +2 -2
  21. pulumi_alicloud/cloudfirewall/__init__.py +1 -0
  22. pulumi_alicloud/cloudfirewall/ips_config.py +523 -0
  23. pulumi_alicloud/cr/registry_enterprise_instance.py +4 -4
  24. pulumi_alicloud/das/switch_das_pro.py +6 -2
  25. pulumi_alicloud/dataworks/di_alarm_rule.py +6 -4
  26. pulumi_alicloud/dataworks/di_job.py +8 -6
  27. pulumi_alicloud/dataworks/project_member.py +2 -2
  28. pulumi_alicloud/ddos/domain_resource.py +19 -9
  29. pulumi_alicloud/dms/enterprise_logic_database.py +2 -2
  30. pulumi_alicloud/dms/enterprise_proxy_access.py +2 -2
  31. pulumi_alicloud/drds/instance.py +12 -8
  32. pulumi_alicloud/ebs/dedicated_block_storage_cluster.py +2 -2
  33. pulumi_alicloud/ecs/activation.py +2 -2
  34. pulumi_alicloud/ecs/capacity_reservation.py +2 -2
  35. pulumi_alicloud/ecs/ecs_disk_attachment.py +2 -2
  36. pulumi_alicloud/ecs/ecs_invocation.py +12 -6
  37. pulumi_alicloud/ecs/ecs_network_interface_permission.py +2 -2
  38. pulumi_alicloud/ecs/ecs_snapshot_group.py +2 -2
  39. pulumi_alicloud/ecs/elasticity_assurance.py +2 -2
  40. pulumi_alicloud/ecs/image_copy.py +2 -2
  41. pulumi_alicloud/ecs/image_export.py +2 -2
  42. pulumi_alicloud/ecs/reserved_instance.py +2 -2
  43. pulumi_alicloud/ecs/snapshot.py +8 -4
  44. pulumi_alicloud/ecs/storage_capacity_unit.py +2 -2
  45. pulumi_alicloud/emr/cluster.py +4 -4
  46. pulumi_alicloud/esa/edge_container_app_record.py +10 -2
  47. pulumi_alicloud/esa/http_request_header_modification_rule.py +12 -4
  48. pulumi_alicloud/esa/http_response_header_modification_rule.py +12 -4
  49. pulumi_alicloud/esa/https_basic_configuration.py +12 -4
  50. pulumi_alicloud/esa/network_optimization.py +10 -2
  51. pulumi_alicloud/esa/origin_pool.py +10 -10
  52. pulumi_alicloud/esa/redirect_rule.py +12 -4
  53. pulumi_alicloud/esa/rewrite_url_rule.py +12 -4
  54. pulumi_alicloud/ess/outputs.py +107 -0
  55. pulumi_alicloud/ess/scaling_group.py +47 -0
  56. pulumi_alicloud/expressconnect/virtual_border_router.py +4 -4
  57. pulumi_alicloud/fnf/execution.py +2 -2
  58. pulumi_alicloud/fnf/flow.py +2 -2
  59. pulumi_alicloud/fnf/schedule.py +2 -2
  60. pulumi_alicloud/gpdb/elastic_instance.py +8 -8
  61. pulumi_alicloud/hbr/ecs_backup_plan.py +10 -2
  62. pulumi_alicloud/hbr/hana_backup_client.py +2 -2
  63. pulumi_alicloud/hbr/hana_backup_plan.py +2 -2
  64. pulumi_alicloud/hbr/hana_instance.py +2 -2
  65. pulumi_alicloud/hbr/nas_backup_plan.py +10 -2
  66. pulumi_alicloud/hbr/oss_backup_plan.py +10 -2
  67. pulumi_alicloud/hbr/ots_backup_plan.py +10 -2
  68. pulumi_alicloud/hbr/restore_job.py +2 -2
  69. pulumi_alicloud/hbr/server_backup_plan.py +10 -2
  70. pulumi_alicloud/kms/_inputs.py +12 -12
  71. pulumi_alicloud/kms/instance.py +80 -47
  72. pulumi_alicloud/kms/outputs.py +8 -8
  73. pulumi_alicloud/kvstore/instance.py +21 -7
  74. pulumi_alicloud/lindorm/instance.py +101 -7
  75. pulumi_alicloud/log/etl.py +2 -2
  76. pulumi_alicloud/log/ingestion.py +4 -6
  77. pulumi_alicloud/log/oss_export.py +4 -6
  78. pulumi_alicloud/log/oss_shipper.py +2 -2
  79. pulumi_alicloud/mse/gateway.py +2 -2
  80. pulumi_alicloud/mse/nacos_config.py +2 -0
  81. pulumi_alicloud/mse/znode.py +2 -2
  82. pulumi_alicloud/nas/mount_target.py +6 -6
  83. pulumi_alicloud/nas/snapshot.py +2 -2
  84. pulumi_alicloud/oos/default_patch_baseline.py +2 -2
  85. pulumi_alicloud/oos/secret_parameter.py +2 -2
  86. pulumi_alicloud/oss/bucket_replication.py +8 -8
  87. pulumi_alicloud/pai/__init__.py +3 -0
  88. pulumi_alicloud/pai/_inputs.py +108 -0
  89. pulumi_alicloud/pai/outputs.py +64 -0
  90. pulumi_alicloud/pai/workspace_member.py +393 -0
  91. pulumi_alicloud/pai/workspace_model.py +792 -0
  92. pulumi_alicloud/pai/workspace_model_version.py +1129 -0
  93. pulumi_alicloud/polardb/cluster.py +68 -7
  94. pulumi_alicloud/polardb/global_database_network.py +2 -2
  95. pulumi_alicloud/polardb/parameter_group.py +2 -2
  96. pulumi_alicloud/pulumi-plugin.json +1 -1
  97. pulumi_alicloud/ram/group_policy_attachment.py +2 -2
  98. pulumi_alicloud/ram/role.py +2 -2
  99. pulumi_alicloud/ram/role_attachment.py +6 -4
  100. pulumi_alicloud/rds/instance.py +47 -47
  101. pulumi_alicloud/rds/rds_clone_db_instance.py +30 -30
  102. pulumi_alicloud/rds/rds_upgrade_db_instance.py +2 -2
  103. pulumi_alicloud/resourcemanager/account.py +315 -116
  104. pulumi_alicloud/rocketmq/group.py +2 -2
  105. pulumi_alicloud/ros/change_set.py +2 -2
  106. pulumi_alicloud/ros/stack.py +2 -2
  107. pulumi_alicloud/ros/stack_group.py +2 -2
  108. pulumi_alicloud/ros/stack_instance.py +2 -2
  109. pulumi_alicloud/ros/template_scratch.py +2 -2
  110. pulumi_alicloud/scdn/domain.py +2 -2
  111. pulumi_alicloud/securitycenter/service_linked_role.py +2 -2
  112. pulumi_alicloud/servicecatalog/provisioned_product.py +2 -2
  113. pulumi_alicloud/slb/_inputs.py +44 -0
  114. pulumi_alicloud/slb/acl_entry_attachment.py +2 -2
  115. pulumi_alicloud/slb/ca_certificate.py +4 -0
  116. pulumi_alicloud/slb/listener.py +46 -89
  117. pulumi_alicloud/slb/master_slave_server_group.py +17 -35
  118. pulumi_alicloud/slb/outputs.py +26 -0
  119. pulumi_alicloud/sms/short_url.py +2 -2
  120. pulumi_alicloud/threatdetection/backup_policy.py +2 -2
  121. pulumi_alicloud/threatdetection/honeypot_probe.py +2 -2
  122. pulumi_alicloud/threatdetection/instance.py +28 -21
  123. pulumi_alicloud/threatdetection/outputs.py +98 -6
  124. pulumi_alicloud/threatdetection/vul_whitelist.py +2 -2
  125. pulumi_alicloud/threatdetection/web_lock_config.py +2 -2
  126. pulumi_alicloud/tsdb/instance.py +2 -2
  127. pulumi_alicloud/vpc/common_bandwith_package.py +28 -14
  128. pulumi_alicloud/vpc/forward_entry.py +4 -4
  129. pulumi_alicloud/vpc/gateway_route_table_attachment.py +2 -2
  130. pulumi_alicloud/vpc/ha_vip.py +4 -4
  131. pulumi_alicloud/vpc/ha_vipv2.py +4 -0
  132. pulumi_alicloud/vpc/ipv4_gateway.py +78 -37
  133. pulumi_alicloud/vpc/ipv6_gateway.py +2 -2
  134. pulumi_alicloud/vpc/nat_ip.py +2 -2
  135. pulumi_alicloud/vpc/prefix_list.py +2 -2
  136. pulumi_alicloud/vpc/route_entry.py +6 -2
  137. pulumi_alicloud/vpn/gateway_vco_route.py +2 -2
  138. pulumi_alicloud/vpn/ipsec_server.py +2 -2
  139. pulumi_alicloud/vpn/pbr_route_entry.py +2 -2
  140. pulumi_alicloud/vpn/route_entry.py +8 -8
  141. pulumi_alicloud/wafv3/instance.py +2 -2
  142. pulumi_alicloud/wafv3/outputs.py +11 -0
  143. {pulumi_alicloud-3.78.0a1746767796.dist-info → pulumi_alicloud-3.78.0a1747367664.dist-info}/METADATA +1 -1
  144. {pulumi_alicloud-3.78.0a1746767796.dist-info → pulumi_alicloud-3.78.0a1747367664.dist-info}/RECORD +146 -142
  145. {pulumi_alicloud-3.78.0a1746767796.dist-info → pulumi_alicloud-3.78.0a1747367664.dist-info}/WHEEL +1 -1
  146. {pulumi_alicloud-3.78.0a1746767796.dist-info → pulumi_alicloud-3.78.0a1747367664.dist-info}/top_level.txt +0 -0
@@ -26,27 +26,27 @@ class ExchangeArgs:
26
26
  instance_id: pulumi.Input[builtins.str],
27
27
  internal: pulumi.Input[builtins.bool],
28
28
  virtual_host_name: pulumi.Input[builtins.str],
29
- alternate_exchange: Optional[pulumi.Input[builtins.str]] = None):
29
+ alternate_exchange: Optional[pulumi.Input[builtins.str]] = None,
30
+ x_delayed_type: Optional[pulumi.Input[builtins.str]] = None):
30
31
  """
31
32
  The set of arguments for constructing a Exchange resource.
32
- :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether the Auto Delete attribute is configured. Valid values:
33
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
34
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
35
- :param pulumi.Input[builtins.str] exchange_name: The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
36
- :param pulumi.Input[builtins.str] exchange_type: The type of the exchange. Valid values:
37
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
38
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
39
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
40
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
41
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
42
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
43
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
44
- :param pulumi.Input[builtins.str] instance_id: The ID of the instance.
45
- :param pulumi.Input[builtins.bool] internal: Specifies whether an exchange is an internal exchange. Valid values:
46
- * false: The exchange is not an internal exchange.
47
- * true: The exchange is an internal exchange.
48
- :param pulumi.Input[builtins.str] virtual_host_name: The name of virtual host where an exchange resides.
49
- :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
33
+ :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether to automatically delete the exchange. Valid values:
34
+ :param pulumi.Input[builtins.str] exchange_name: The name of the exchange that you want to create. The exchange name must meet the following conventions:
35
+
36
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
37
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
38
+ :param pulumi.Input[builtins.str] exchange_type: The Exchange type. Value:
39
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
40
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
41
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
42
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
43
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
44
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
45
+ :param pulumi.Input[builtins.str] instance_id: The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
46
+ :param pulumi.Input[builtins.bool] internal: Specifies whether the exchange is an internal exchange. Valid values:
47
+ :param pulumi.Input[builtins.str] virtual_host_name: The name of the vhost to which the exchange that you want to create belongs.
48
+ :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
49
+ :param pulumi.Input[builtins.str] x_delayed_type: RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
50
50
  """
51
51
  pulumi.set(__self__, "auto_delete_state", auto_delete_state)
52
52
  pulumi.set(__self__, "exchange_name", exchange_name)
@@ -56,14 +56,14 @@ class ExchangeArgs:
56
56
  pulumi.set(__self__, "virtual_host_name", virtual_host_name)
57
57
  if alternate_exchange is not None:
58
58
  pulumi.set(__self__, "alternate_exchange", alternate_exchange)
59
+ if x_delayed_type is not None:
60
+ pulumi.set(__self__, "x_delayed_type", x_delayed_type)
59
61
 
60
62
  @property
61
63
  @pulumi.getter(name="autoDeleteState")
62
64
  def auto_delete_state(self) -> pulumi.Input[builtins.bool]:
63
65
  """
64
- Specifies whether the Auto Delete attribute is configured. Valid values:
65
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
66
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
66
+ Specifies whether to automatically delete the exchange. Valid values:
67
67
  """
68
68
  return pulumi.get(self, "auto_delete_state")
69
69
 
@@ -75,7 +75,10 @@ class ExchangeArgs:
75
75
  @pulumi.getter(name="exchangeName")
76
76
  def exchange_name(self) -> pulumi.Input[builtins.str]:
77
77
  """
78
- The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
78
+ The name of the exchange that you want to create. The exchange name must meet the following conventions:
79
+
80
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
81
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
79
82
  """
80
83
  return pulumi.get(self, "exchange_name")
81
84
 
@@ -87,14 +90,13 @@ class ExchangeArgs:
87
90
  @pulumi.getter(name="exchangeType")
88
91
  def exchange_type(self) -> pulumi.Input[builtins.str]:
89
92
  """
90
- The type of the exchange. Valid values:
91
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
92
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
93
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
94
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
95
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
96
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
97
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
93
+ The Exchange type. Value:
94
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
95
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
96
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
97
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
98
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
99
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
98
100
  """
99
101
  return pulumi.get(self, "exchange_type")
100
102
 
@@ -106,7 +108,7 @@ class ExchangeArgs:
106
108
  @pulumi.getter(name="instanceId")
107
109
  def instance_id(self) -> pulumi.Input[builtins.str]:
108
110
  """
109
- The ID of the instance.
111
+ The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
110
112
  """
111
113
  return pulumi.get(self, "instance_id")
112
114
 
@@ -118,9 +120,7 @@ class ExchangeArgs:
118
120
  @pulumi.getter
119
121
  def internal(self) -> pulumi.Input[builtins.bool]:
120
122
  """
121
- Specifies whether an exchange is an internal exchange. Valid values:
122
- * false: The exchange is not an internal exchange.
123
- * true: The exchange is an internal exchange.
123
+ Specifies whether the exchange is an internal exchange. Valid values:
124
124
  """
125
125
  return pulumi.get(self, "internal")
126
126
 
@@ -132,7 +132,7 @@ class ExchangeArgs:
132
132
  @pulumi.getter(name="virtualHostName")
133
133
  def virtual_host_name(self) -> pulumi.Input[builtins.str]:
134
134
  """
135
- The name of virtual host where an exchange resides.
135
+ The name of the vhost to which the exchange that you want to create belongs.
136
136
  """
137
137
  return pulumi.get(self, "virtual_host_name")
138
138
 
@@ -144,7 +144,7 @@ class ExchangeArgs:
144
144
  @pulumi.getter(name="alternateExchange")
145
145
  def alternate_exchange(self) -> Optional[pulumi.Input[builtins.str]]:
146
146
  """
147
- The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
147
+ The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
148
148
  """
149
149
  return pulumi.get(self, "alternate_exchange")
150
150
 
@@ -152,42 +152,58 @@ class ExchangeArgs:
152
152
  def alternate_exchange(self, value: Optional[pulumi.Input[builtins.str]]):
153
153
  pulumi.set(self, "alternate_exchange", value)
154
154
 
155
+ @property
156
+ @pulumi.getter(name="xDelayedType")
157
+ def x_delayed_type(self) -> Optional[pulumi.Input[builtins.str]]:
158
+ """
159
+ RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
160
+ """
161
+ return pulumi.get(self, "x_delayed_type")
162
+
163
+ @x_delayed_type.setter
164
+ def x_delayed_type(self, value: Optional[pulumi.Input[builtins.str]]):
165
+ pulumi.set(self, "x_delayed_type", value)
166
+
155
167
 
156
168
  @pulumi.input_type
157
169
  class _ExchangeState:
158
170
  def __init__(__self__, *,
159
171
  alternate_exchange: Optional[pulumi.Input[builtins.str]] = None,
160
172
  auto_delete_state: Optional[pulumi.Input[builtins.bool]] = None,
173
+ create_time: Optional[pulumi.Input[builtins.int]] = None,
161
174
  exchange_name: Optional[pulumi.Input[builtins.str]] = None,
162
175
  exchange_type: Optional[pulumi.Input[builtins.str]] = None,
163
176
  instance_id: Optional[pulumi.Input[builtins.str]] = None,
164
177
  internal: Optional[pulumi.Input[builtins.bool]] = None,
165
- virtual_host_name: Optional[pulumi.Input[builtins.str]] = None):
178
+ virtual_host_name: Optional[pulumi.Input[builtins.str]] = None,
179
+ x_delayed_type: Optional[pulumi.Input[builtins.str]] = None):
166
180
  """
167
181
  Input properties used for looking up and filtering Exchange resources.
168
- :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
169
- :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether the Auto Delete attribute is configured. Valid values:
170
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
171
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
172
- :param pulumi.Input[builtins.str] exchange_name: The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
173
- :param pulumi.Input[builtins.str] exchange_type: The type of the exchange. Valid values:
174
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
175
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
176
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
177
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
178
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
179
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
180
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
181
- :param pulumi.Input[builtins.str] instance_id: The ID of the instance.
182
- :param pulumi.Input[builtins.bool] internal: Specifies whether an exchange is an internal exchange. Valid values:
183
- * false: The exchange is not an internal exchange.
184
- * true: The exchange is an internal exchange.
185
- :param pulumi.Input[builtins.str] virtual_host_name: The name of virtual host where an exchange resides.
182
+ :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
183
+ :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether to automatically delete the exchange. Valid values:
184
+ :param pulumi.Input[builtins.int] create_time: CreateTime
185
+ :param pulumi.Input[builtins.str] exchange_name: The name of the exchange that you want to create. The exchange name must meet the following conventions:
186
+
187
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
188
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
189
+ :param pulumi.Input[builtins.str] exchange_type: The Exchange type. Value:
190
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
191
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
192
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
193
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
194
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
195
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
196
+ :param pulumi.Input[builtins.str] instance_id: The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
197
+ :param pulumi.Input[builtins.bool] internal: Specifies whether the exchange is an internal exchange. Valid values:
198
+ :param pulumi.Input[builtins.str] virtual_host_name: The name of the vhost to which the exchange that you want to create belongs.
199
+ :param pulumi.Input[builtins.str] x_delayed_type: RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
186
200
  """
187
201
  if alternate_exchange is not None:
188
202
  pulumi.set(__self__, "alternate_exchange", alternate_exchange)
189
203
  if auto_delete_state is not None:
190
204
  pulumi.set(__self__, "auto_delete_state", auto_delete_state)
205
+ if create_time is not None:
206
+ pulumi.set(__self__, "create_time", create_time)
191
207
  if exchange_name is not None:
192
208
  pulumi.set(__self__, "exchange_name", exchange_name)
193
209
  if exchange_type is not None:
@@ -198,12 +214,14 @@ class _ExchangeState:
198
214
  pulumi.set(__self__, "internal", internal)
199
215
  if virtual_host_name is not None:
200
216
  pulumi.set(__self__, "virtual_host_name", virtual_host_name)
217
+ if x_delayed_type is not None:
218
+ pulumi.set(__self__, "x_delayed_type", x_delayed_type)
201
219
 
202
220
  @property
203
221
  @pulumi.getter(name="alternateExchange")
204
222
  def alternate_exchange(self) -> Optional[pulumi.Input[builtins.str]]:
205
223
  """
206
- The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
224
+ The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
207
225
  """
208
226
  return pulumi.get(self, "alternate_exchange")
209
227
 
@@ -215,9 +233,7 @@ class _ExchangeState:
215
233
  @pulumi.getter(name="autoDeleteState")
216
234
  def auto_delete_state(self) -> Optional[pulumi.Input[builtins.bool]]:
217
235
  """
218
- Specifies whether the Auto Delete attribute is configured. Valid values:
219
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
220
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
236
+ Specifies whether to automatically delete the exchange. Valid values:
221
237
  """
222
238
  return pulumi.get(self, "auto_delete_state")
223
239
 
@@ -225,11 +241,26 @@ class _ExchangeState:
225
241
  def auto_delete_state(self, value: Optional[pulumi.Input[builtins.bool]]):
226
242
  pulumi.set(self, "auto_delete_state", value)
227
243
 
244
+ @property
245
+ @pulumi.getter(name="createTime")
246
+ def create_time(self) -> Optional[pulumi.Input[builtins.int]]:
247
+ """
248
+ CreateTime
249
+ """
250
+ return pulumi.get(self, "create_time")
251
+
252
+ @create_time.setter
253
+ def create_time(self, value: Optional[pulumi.Input[builtins.int]]):
254
+ pulumi.set(self, "create_time", value)
255
+
228
256
  @property
229
257
  @pulumi.getter(name="exchangeName")
230
258
  def exchange_name(self) -> Optional[pulumi.Input[builtins.str]]:
231
259
  """
232
- The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
260
+ The name of the exchange that you want to create. The exchange name must meet the following conventions:
261
+
262
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
263
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
233
264
  """
234
265
  return pulumi.get(self, "exchange_name")
235
266
 
@@ -241,14 +272,13 @@ class _ExchangeState:
241
272
  @pulumi.getter(name="exchangeType")
242
273
  def exchange_type(self) -> Optional[pulumi.Input[builtins.str]]:
243
274
  """
244
- The type of the exchange. Valid values:
245
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
246
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
247
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
248
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
249
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
250
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
251
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
275
+ The Exchange type. Value:
276
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
277
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
278
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
279
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
280
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
281
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
252
282
  """
253
283
  return pulumi.get(self, "exchange_type")
254
284
 
@@ -260,7 +290,7 @@ class _ExchangeState:
260
290
  @pulumi.getter(name="instanceId")
261
291
  def instance_id(self) -> Optional[pulumi.Input[builtins.str]]:
262
292
  """
263
- The ID of the instance.
293
+ The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
264
294
  """
265
295
  return pulumi.get(self, "instance_id")
266
296
 
@@ -272,9 +302,7 @@ class _ExchangeState:
272
302
  @pulumi.getter
273
303
  def internal(self) -> Optional[pulumi.Input[builtins.bool]]:
274
304
  """
275
- Specifies whether an exchange is an internal exchange. Valid values:
276
- * false: The exchange is not an internal exchange.
277
- * true: The exchange is an internal exchange.
305
+ Specifies whether the exchange is an internal exchange. Valid values:
278
306
  """
279
307
  return pulumi.get(self, "internal")
280
308
 
@@ -286,7 +314,7 @@ class _ExchangeState:
286
314
  @pulumi.getter(name="virtualHostName")
287
315
  def virtual_host_name(self) -> Optional[pulumi.Input[builtins.str]]:
288
316
  """
289
- The name of virtual host where an exchange resides.
317
+ The name of the vhost to which the exchange that you want to create belongs.
290
318
  """
291
319
  return pulumi.get(self, "virtual_host_name")
292
320
 
@@ -294,6 +322,18 @@ class _ExchangeState:
294
322
  def virtual_host_name(self, value: Optional[pulumi.Input[builtins.str]]):
295
323
  pulumi.set(self, "virtual_host_name", value)
296
324
 
325
+ @property
326
+ @pulumi.getter(name="xDelayedType")
327
+ def x_delayed_type(self) -> Optional[pulumi.Input[builtins.str]]:
328
+ """
329
+ RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
330
+ """
331
+ return pulumi.get(self, "x_delayed_type")
332
+
333
+ @x_delayed_type.setter
334
+ def x_delayed_type(self, value: Optional[pulumi.Input[builtins.str]]):
335
+ pulumi.set(self, "x_delayed_type", value)
336
+
297
337
 
298
338
  @pulumi.type_token("alicloud:amqp/exchange:Exchange")
299
339
  class Exchange(pulumi.CustomResource):
@@ -308,6 +348,7 @@ class Exchange(pulumi.CustomResource):
308
348
  instance_id: Optional[pulumi.Input[builtins.str]] = None,
309
349
  internal: Optional[pulumi.Input[builtins.bool]] = None,
310
350
  virtual_host_name: Optional[pulumi.Input[builtins.str]] = None,
351
+ x_delayed_type: Optional[pulumi.Input[builtins.str]] = None,
311
352
  __props__=None):
312
353
  """
313
354
  Provides a RabbitMQ (AMQP) Exchange resource.
@@ -324,24 +365,39 @@ class Exchange(pulumi.CustomResource):
324
365
  import pulumi
325
366
  import pulumi_alicloud as alicloud
326
367
 
327
- default = alicloud.amqp.Instance("default",
328
- instance_type="professional",
329
- max_tps="1000",
330
- queue_capacity="50",
368
+ config = pulumi.Config()
369
+ name = config.get("name")
370
+ if name is None:
371
+ name = "tf-example"
372
+ virtual_host_name = config.get("virtualHostName")
373
+ if virtual_host_name is None:
374
+ virtual_host_name = "/"
375
+ create_instance = alicloud.amqp.Instance("CreateInstance",
376
+ renewal_duration=1,
377
+ max_tps="3000",
378
+ period_cycle="Month",
379
+ max_connections=2000,
331
380
  support_eip=True,
332
- max_eip_tps="128",
381
+ auto_renew=False,
382
+ renewal_status="AutoRenewal",
383
+ period=12,
384
+ instance_name=name,
385
+ support_tracing=False,
333
386
  payment_type="Subscription",
334
- period=1)
335
- default_virtual_host = alicloud.amqp.VirtualHost("default",
336
- instance_id=default.id,
337
- virtual_host_name="tf-example")
338
- default_exchange = alicloud.amqp.Exchange("default",
387
+ renewal_duration_unit="Month",
388
+ instance_type="enterprise",
389
+ queue_capacity="200",
390
+ max_eip_tps="128",
391
+ storage_size="0")
392
+ default = alicloud.amqp.Exchange("default",
393
+ virtual_host_name=virtual_host_name,
394
+ instance_id=create_instance.id,
395
+ internal=True,
339
396
  auto_delete_state=False,
340
- exchange_name="tf-example",
341
- exchange_type="DIRECT",
342
- instance_id=default.id,
343
- internal=False,
344
- virtual_host_name=default_virtual_host.virtual_host_name)
397
+ exchange_name=name,
398
+ exchange_type="X_CONSISTENT_HASH",
399
+ alternate_exchange="bakExchange",
400
+ x_delayed_type="DIRECT")
345
401
  ```
346
402
 
347
403
  ## Import
@@ -354,24 +410,23 @@ class Exchange(pulumi.CustomResource):
354
410
 
355
411
  :param str resource_name: The name of the resource.
356
412
  :param pulumi.ResourceOptions opts: Options for the resource.
357
- :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
358
- :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether the Auto Delete attribute is configured. Valid values:
359
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
360
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
361
- :param pulumi.Input[builtins.str] exchange_name: The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
362
- :param pulumi.Input[builtins.str] exchange_type: The type of the exchange. Valid values:
363
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
364
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
365
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
366
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
367
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
368
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
369
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
370
- :param pulumi.Input[builtins.str] instance_id: The ID of the instance.
371
- :param pulumi.Input[builtins.bool] internal: Specifies whether an exchange is an internal exchange. Valid values:
372
- * false: The exchange is not an internal exchange.
373
- * true: The exchange is an internal exchange.
374
- :param pulumi.Input[builtins.str] virtual_host_name: The name of virtual host where an exchange resides.
413
+ :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
414
+ :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether to automatically delete the exchange. Valid values:
415
+ :param pulumi.Input[builtins.str] exchange_name: The name of the exchange that you want to create. The exchange name must meet the following conventions:
416
+
417
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
418
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
419
+ :param pulumi.Input[builtins.str] exchange_type: The Exchange type. Value:
420
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
421
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
422
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
423
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
424
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
425
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
426
+ :param pulumi.Input[builtins.str] instance_id: The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
427
+ :param pulumi.Input[builtins.bool] internal: Specifies whether the exchange is an internal exchange. Valid values:
428
+ :param pulumi.Input[builtins.str] virtual_host_name: The name of the vhost to which the exchange that you want to create belongs.
429
+ :param pulumi.Input[builtins.str] x_delayed_type: RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
375
430
  """
376
431
  ...
377
432
  @overload
@@ -394,24 +449,39 @@ class Exchange(pulumi.CustomResource):
394
449
  import pulumi
395
450
  import pulumi_alicloud as alicloud
396
451
 
397
- default = alicloud.amqp.Instance("default",
398
- instance_type="professional",
399
- max_tps="1000",
400
- queue_capacity="50",
452
+ config = pulumi.Config()
453
+ name = config.get("name")
454
+ if name is None:
455
+ name = "tf-example"
456
+ virtual_host_name = config.get("virtualHostName")
457
+ if virtual_host_name is None:
458
+ virtual_host_name = "/"
459
+ create_instance = alicloud.amqp.Instance("CreateInstance",
460
+ renewal_duration=1,
461
+ max_tps="3000",
462
+ period_cycle="Month",
463
+ max_connections=2000,
401
464
  support_eip=True,
402
- max_eip_tps="128",
465
+ auto_renew=False,
466
+ renewal_status="AutoRenewal",
467
+ period=12,
468
+ instance_name=name,
469
+ support_tracing=False,
403
470
  payment_type="Subscription",
404
- period=1)
405
- default_virtual_host = alicloud.amqp.VirtualHost("default",
406
- instance_id=default.id,
407
- virtual_host_name="tf-example")
408
- default_exchange = alicloud.amqp.Exchange("default",
471
+ renewal_duration_unit="Month",
472
+ instance_type="enterprise",
473
+ queue_capacity="200",
474
+ max_eip_tps="128",
475
+ storage_size="0")
476
+ default = alicloud.amqp.Exchange("default",
477
+ virtual_host_name=virtual_host_name,
478
+ instance_id=create_instance.id,
479
+ internal=True,
409
480
  auto_delete_state=False,
410
- exchange_name="tf-example",
411
- exchange_type="DIRECT",
412
- instance_id=default.id,
413
- internal=False,
414
- virtual_host_name=default_virtual_host.virtual_host_name)
481
+ exchange_name=name,
482
+ exchange_type="X_CONSISTENT_HASH",
483
+ alternate_exchange="bakExchange",
484
+ x_delayed_type="DIRECT")
415
485
  ```
416
486
 
417
487
  ## Import
@@ -444,6 +514,7 @@ class Exchange(pulumi.CustomResource):
444
514
  instance_id: Optional[pulumi.Input[builtins.str]] = None,
445
515
  internal: Optional[pulumi.Input[builtins.bool]] = None,
446
516
  virtual_host_name: Optional[pulumi.Input[builtins.str]] = None,
517
+ x_delayed_type: Optional[pulumi.Input[builtins.str]] = None,
447
518
  __props__=None):
448
519
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
449
520
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -472,6 +543,8 @@ class Exchange(pulumi.CustomResource):
472
543
  if virtual_host_name is None and not opts.urn:
473
544
  raise TypeError("Missing required property 'virtual_host_name'")
474
545
  __props__.__dict__["virtual_host_name"] = virtual_host_name
546
+ __props__.__dict__["x_delayed_type"] = x_delayed_type
547
+ __props__.__dict__["create_time"] = None
475
548
  super(Exchange, __self__).__init__(
476
549
  'alicloud:amqp/exchange:Exchange',
477
550
  resource_name,
@@ -484,11 +557,13 @@ class Exchange(pulumi.CustomResource):
484
557
  opts: Optional[pulumi.ResourceOptions] = None,
485
558
  alternate_exchange: Optional[pulumi.Input[builtins.str]] = None,
486
559
  auto_delete_state: Optional[pulumi.Input[builtins.bool]] = None,
560
+ create_time: Optional[pulumi.Input[builtins.int]] = None,
487
561
  exchange_name: Optional[pulumi.Input[builtins.str]] = None,
488
562
  exchange_type: Optional[pulumi.Input[builtins.str]] = None,
489
563
  instance_id: Optional[pulumi.Input[builtins.str]] = None,
490
564
  internal: Optional[pulumi.Input[builtins.bool]] = None,
491
- virtual_host_name: Optional[pulumi.Input[builtins.str]] = None) -> 'Exchange':
565
+ virtual_host_name: Optional[pulumi.Input[builtins.str]] = None,
566
+ x_delayed_type: Optional[pulumi.Input[builtins.str]] = None) -> 'Exchange':
492
567
  """
493
568
  Get an existing Exchange resource's state with the given name, id, and optional extra
494
569
  properties used to qualify the lookup.
@@ -496,24 +571,24 @@ class Exchange(pulumi.CustomResource):
496
571
  :param str resource_name: The unique name of the resulting resource.
497
572
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
498
573
  :param pulumi.ResourceOptions opts: Options for the resource.
499
- :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
500
- :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether the Auto Delete attribute is configured. Valid values:
501
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
502
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
503
- :param pulumi.Input[builtins.str] exchange_name: The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
504
- :param pulumi.Input[builtins.str] exchange_type: The type of the exchange. Valid values:
505
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
506
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
507
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
508
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
509
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
510
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
511
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
512
- :param pulumi.Input[builtins.str] instance_id: The ID of the instance.
513
- :param pulumi.Input[builtins.bool] internal: Specifies whether an exchange is an internal exchange. Valid values:
514
- * false: The exchange is not an internal exchange.
515
- * true: The exchange is an internal exchange.
516
- :param pulumi.Input[builtins.str] virtual_host_name: The name of virtual host where an exchange resides.
574
+ :param pulumi.Input[builtins.str] alternate_exchange: The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
575
+ :param pulumi.Input[builtins.bool] auto_delete_state: Specifies whether to automatically delete the exchange. Valid values:
576
+ :param pulumi.Input[builtins.int] create_time: CreateTime
577
+ :param pulumi.Input[builtins.str] exchange_name: The name of the exchange that you want to create. The exchange name must meet the following conventions:
578
+
579
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
580
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
581
+ :param pulumi.Input[builtins.str] exchange_type: The Exchange type. Value:
582
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
583
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
584
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
585
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
586
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
587
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
588
+ :param pulumi.Input[builtins.str] instance_id: The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
589
+ :param pulumi.Input[builtins.bool] internal: Specifies whether the exchange is an internal exchange. Valid values:
590
+ :param pulumi.Input[builtins.str] virtual_host_name: The name of the vhost to which the exchange that you want to create belongs.
591
+ :param pulumi.Input[builtins.str] x_delayed_type: RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
517
592
  """
518
593
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
519
594
 
@@ -521,18 +596,20 @@ class Exchange(pulumi.CustomResource):
521
596
 
522
597
  __props__.__dict__["alternate_exchange"] = alternate_exchange
523
598
  __props__.__dict__["auto_delete_state"] = auto_delete_state
599
+ __props__.__dict__["create_time"] = create_time
524
600
  __props__.__dict__["exchange_name"] = exchange_name
525
601
  __props__.__dict__["exchange_type"] = exchange_type
526
602
  __props__.__dict__["instance_id"] = instance_id
527
603
  __props__.__dict__["internal"] = internal
528
604
  __props__.__dict__["virtual_host_name"] = virtual_host_name
605
+ __props__.__dict__["x_delayed_type"] = x_delayed_type
529
606
  return Exchange(resource_name, opts=opts, __props__=__props__)
530
607
 
531
608
  @property
532
609
  @pulumi.getter(name="alternateExchange")
533
610
  def alternate_exchange(self) -> pulumi.Output[Optional[builtins.str]]:
534
611
  """
535
- The alternate exchange. An alternate exchange is configured for an existing exchange. It is used to receive messages that fail to be routed to queues from the existing exchange.
612
+ The alternate exchange. An alternate exchange is used to receive messages that fail to be routed to queues from the current exchange.
536
613
  """
537
614
  return pulumi.get(self, "alternate_exchange")
538
615
 
@@ -540,17 +617,26 @@ class Exchange(pulumi.CustomResource):
540
617
  @pulumi.getter(name="autoDeleteState")
541
618
  def auto_delete_state(self) -> pulumi.Output[builtins.bool]:
542
619
  """
543
- Specifies whether the Auto Delete attribute is configured. Valid values:
544
- * true: The Auto Delete attribute is configured. If the last queue that is bound to an exchange is unbound, the exchange is automatically deleted.
545
- * false: The Auto Delete attribute is not configured. If the last queue that is bound to an exchange is unbound, the exchange is not automatically deleted.
620
+ Specifies whether to automatically delete the exchange. Valid values:
546
621
  """
547
622
  return pulumi.get(self, "auto_delete_state")
548
623
 
624
+ @property
625
+ @pulumi.getter(name="createTime")
626
+ def create_time(self) -> pulumi.Output[builtins.int]:
627
+ """
628
+ CreateTime
629
+ """
630
+ return pulumi.get(self, "create_time")
631
+
549
632
  @property
550
633
  @pulumi.getter(name="exchangeName")
551
634
  def exchange_name(self) -> pulumi.Output[builtins.str]:
552
635
  """
553
- The name of the exchange. It must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs (@).
636
+ The name of the exchange that you want to create. The exchange name must meet the following conventions:
637
+
638
+ - The name must be 1 to 255 characters in length, and can contain only letters, digits, hyphens (-), underscores (\\_), periods (.), number signs (#), forward slashes (/), and at signs (@).
639
+ - After the exchange is created, you cannot change its name. If you want to change its name, delete the exchange and create another exchange.
554
640
  """
555
641
  return pulumi.get(self, "exchange_name")
556
642
 
@@ -558,14 +644,13 @@ class Exchange(pulumi.CustomResource):
558
644
  @pulumi.getter(name="exchangeType")
559
645
  def exchange_type(self) -> pulumi.Output[builtins.str]:
560
646
  """
561
- The type of the exchange. Valid values:
562
- * FANOUT: An exchange of this type routes all the received messages to all the queues bound to this exchange. You can use a fanout exchange to broadcast messages.
563
- * DIRECT: An exchange of this type routes a message to the queue whose binding key is exactly the same as the routing key of the message.
564
- * TOPIC: This type is similar to the direct exchange type. An exchange of this type routes a message to one or more queues based on the fuzzy match or multi-condition match result between the routing key of the message and the binding keys of the current exchange.
565
- * HEADERS: Headers Exchange uses the Headers property instead of Routing Key for routing matching.
566
- When binding Headers Exchange and Queue, set the key-value pair of the binding property;
567
- when sending a message to the Headers Exchange, set the message's Headers property key-value pair and use the message Headers
568
- The message is routed to the bound Queue by comparing the attribute key-value pair and the bound attribute key-value pair.
647
+ The Exchange type. Value:
648
+ - `DIRECT`: This type of Routing rule routes messages to a Queue whose Binding Key matches the Routing Key.
649
+ - `TOPIC`: This type is similar to the DIRECT type. It uses Routing Key pattern matching and string comparison to route messages to the bound Queue.
650
+ - `FANOUT`: This type of routing rule is very simple. It routes all messages sent to the Exchange to all queues bound to it, which is equivalent to the broadcast function.
651
+ - `HEADERS`: This type is similar to the DIRECT type. Headers Exchange uses the Headers attribute instead of Routing Key for route matching. When binding Headers Exchange and Queue, the Key-value pair of the bound attribute is set. When sending a message to Headers Exchange, the Headers attribute Key-value pair of the message is set, and the message is routed to the bound Queue by comparing the Headers attribute Key-value pair with the bound attribute Key-value pair.
652
+ - `X_delayed_message`: By declaring this type of Exchange, you can customize the Header attribute x-delay of the message to specify the delivery delay time period, in milliseconds. Messages will be delivered to the corresponding Queue after the time period defined in the x-delay according to the routing rules. The routing rule depends on the Exchange route type specified in the x-delayed-type.
653
+ - `X_CONSISTENT_HASH`: The x-consistent-hash Exchange allows you to Hash the Routing Key or Header value and use the consistent hashing algorithm to route messages to different queues.
569
654
  """
570
655
  return pulumi.get(self, "exchange_type")
571
656
 
@@ -573,7 +658,7 @@ class Exchange(pulumi.CustomResource):
573
658
  @pulumi.getter(name="instanceId")
574
659
  def instance_id(self) -> pulumi.Output[builtins.str]:
575
660
  """
576
- The ID of the instance.
661
+ The ID of the ApsaraMQ for RabbitMQ instance whose exchange you want to delete.
577
662
  """
578
663
  return pulumi.get(self, "instance_id")
579
664
 
@@ -581,9 +666,7 @@ class Exchange(pulumi.CustomResource):
581
666
  @pulumi.getter
582
667
  def internal(self) -> pulumi.Output[builtins.bool]:
583
668
  """
584
- Specifies whether an exchange is an internal exchange. Valid values:
585
- * false: The exchange is not an internal exchange.
586
- * true: The exchange is an internal exchange.
669
+ Specifies whether the exchange is an internal exchange. Valid values:
587
670
  """
588
671
  return pulumi.get(self, "internal")
589
672
 
@@ -591,7 +674,15 @@ class Exchange(pulumi.CustomResource):
591
674
  @pulumi.getter(name="virtualHostName")
592
675
  def virtual_host_name(self) -> pulumi.Output[builtins.str]:
593
676
  """
594
- The name of virtual host where an exchange resides.
677
+ The name of the vhost to which the exchange that you want to create belongs.
595
678
  """
596
679
  return pulumi.get(self, "virtual_host_name")
597
680
 
681
+ @property
682
+ @pulumi.getter(name="xDelayedType")
683
+ def x_delayed_type(self) -> pulumi.Output[Optional[builtins.str]]:
684
+ """
685
+ RabbitMQ supports the x-delayed-message Exchange. By declaring this type of Exchange, you can customize the x-delay header attribute to specify the delay period for message delivery, measured in milliseconds. The message will be delivered to the corresponding Queue after the period defined in x-delay. The routing rules are determined by the type of Exchange specified in x-delayed-type.
686
+ """
687
+ return pulumi.get(self, "x_delayed_type")
688
+