pulumi-alicloud 3.84.0a1756507491__py3-none-any.whl → 3.85.0__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 (283) hide show
  1. pulumi_alicloud/__init__.py +172 -0
  2. pulumi_alicloud/_inputs.py +635 -0
  3. pulumi_alicloud/ackone/membership_attachment.py +122 -0
  4. pulumi_alicloud/actiontrail/__init__.py +1 -0
  5. pulumi_alicloud/actiontrail/advanced_query_template.py +311 -0
  6. pulumi_alicloud/actiontrail/trail.py +303 -149
  7. pulumi_alicloud/actiontrail/trail_deprecated.py +131 -23
  8. pulumi_alicloud/alb/a_script.py +170 -0
  9. pulumi_alicloud/alb/get_rules.py +206 -0
  10. pulumi_alicloud/alb/listener.py +240 -0
  11. pulumi_alicloud/alb/listener_acl_attachment.py +180 -0
  12. pulumi_alicloud/alb/listener_additional_certificate_attachment.py +314 -0
  13. pulumi_alicloud/alb/load_balancer_access_log_config_attachment.py +136 -0
  14. pulumi_alicloud/alb/load_balancer_common_bandwidth_package_attachment.py +122 -0
  15. pulumi_alicloud/alb/load_balancer_zone_shifted_attachment.py +124 -0
  16. pulumi_alicloud/alb/rule.py +202 -0
  17. pulumi_alicloud/alikafka/sasl_user.py +2 -2
  18. pulumi_alicloud/amqp/get_instances.py +49 -20
  19. pulumi_alicloud/amqp/outputs.py +20 -20
  20. pulumi_alicloud/amqp/virtual_host.py +46 -20
  21. pulumi_alicloud/apig/environment.py +86 -0
  22. pulumi_alicloud/arms/__init__.py +6 -0
  23. pulumi_alicloud/arms/addon_release.py +174 -0
  24. pulumi_alicloud/arms/env_feature.py +158 -0
  25. pulumi_alicloud/arms/env_pod_monitor.py +206 -0
  26. pulumi_alicloud/arms/env_service_monitor.py +204 -0
  27. pulumi_alicloud/arms/environment.py +150 -0
  28. pulumi_alicloud/arms/get_addon_releases.py +354 -0
  29. pulumi_alicloud/arms/get_env_custom_jobs.py +268 -0
  30. pulumi_alicloud/arms/get_env_features.py +342 -0
  31. pulumi_alicloud/arms/get_env_pod_monitors.py +390 -0
  32. pulumi_alicloud/arms/get_env_service_monitors.py +388 -0
  33. pulumi_alicloud/arms/get_environments.py +282 -0
  34. pulumi_alicloud/arms/outputs.py +620 -0
  35. pulumi_alicloud/arms/prometheus_monitoring.py +190 -0
  36. pulumi_alicloud/cen/transit_router_multicast_domain_member.py +118 -0
  37. pulumi_alicloud/cen/transit_router_multicast_domain_source.py +160 -0
  38. pulumi_alicloud/cfg/aggregate_delivery.py +100 -0
  39. pulumi_alicloud/cfg/delivery_channel.py +54 -0
  40. pulumi_alicloud/cloudauth/face_config.py +48 -0
  41. pulumi_alicloud/cloudfirewall/nat_firewall_control_policy.py +236 -0
  42. pulumi_alicloud/cloudmonitor/__init__.py +1 -0
  43. pulumi_alicloud/cloudmonitor/get_service_metric_alarm_rules.py +333 -0
  44. pulumi_alicloud/cloudmonitor/outputs.py +696 -0
  45. pulumi_alicloud/cloudsso/__init__.py +1 -0
  46. pulumi_alicloud/cloudsso/access_configuration.py +12 -12
  47. pulumi_alicloud/cloudsso/access_configuration_provisioning.py +84 -0
  48. pulumi_alicloud/cloudsso/access_management.py +90 -0
  49. pulumi_alicloud/cloudsso/delegate_account.py +218 -0
  50. pulumi_alicloud/cloudsso/group.py +60 -0
  51. pulumi_alicloud/cloudsso/user.py +66 -0
  52. pulumi_alicloud/cloudsso/user_attachment.py +82 -0
  53. pulumi_alicloud/cloudstoragegateway/express_sync.py +154 -0
  54. pulumi_alicloud/cloudstoragegateway/express_sync_share_attachment.py +160 -0
  55. pulumi_alicloud/cloudstoragegateway/gateway.py +0 -13
  56. pulumi_alicloud/cloudstoragegateway/gateway_block_volume.py +132 -0
  57. pulumi_alicloud/cloudstoragegateway/gateway_cache_disk.py +92 -0
  58. pulumi_alicloud/cloudstoragegateway/gateway_file_share.py +130 -0
  59. pulumi_alicloud/cloudstoragegateway/gateway_logging.py +120 -0
  60. pulumi_alicloud/cloudstoragegateway/gateway_smb_user.py +92 -0
  61. pulumi_alicloud/cms/alarm.py +4 -4
  62. pulumi_alicloud/cms/get_site_monitors.py +20 -20
  63. pulumi_alicloud/cms/hybrid_monitor_fc_task.py +24 -24
  64. pulumi_alicloud/cms/hybrid_monitor_sls_task.py +164 -0
  65. pulumi_alicloud/cms/site_monitor.py +20 -20
  66. pulumi_alicloud/cms/sls_group.py +80 -0
  67. pulumi_alicloud/compute/nest_service_instance.py +10 -10
  68. pulumi_alicloud/cs/_inputs.py +565 -0
  69. pulumi_alicloud/cs/autoscaling_config.py +260 -35
  70. pulumi_alicloud/cs/get_cluster_credential.py +30 -0
  71. pulumi_alicloud/cs/get_kubernetes_addon_metadata.py +78 -0
  72. pulumi_alicloud/cs/get_kubernetes_addons.py +72 -0
  73. pulumi_alicloud/cs/get_kubernetes_node_pools.py +124 -0
  74. pulumi_alicloud/cs/kubernetes.py +296 -0
  75. pulumi_alicloud/cs/kubernetes_addon.py +108 -0
  76. pulumi_alicloud/cs/kubernetes_permission.py +162 -0
  77. pulumi_alicloud/cs/managed_kubernetes.py +583 -14
  78. pulumi_alicloud/cs/node_pool.py +423 -0
  79. pulumi_alicloud/cs/outputs.py +374 -0
  80. pulumi_alicloud/dataworks/data_source_shared_rule.py +116 -0
  81. pulumi_alicloud/dataworks/dw_resource_group.py +82 -0
  82. pulumi_alicloud/dataworks/network.py +100 -0
  83. pulumi_alicloud/ddos/bgp_ip.py +57 -48
  84. pulumi_alicloud/ddos/ddos_bgp_instance.py +246 -106
  85. pulumi_alicloud/ddos/domain_resource.py +6 -6
  86. pulumi_alicloud/directmail/mail_address.py +62 -0
  87. pulumi_alicloud/directmail/receivers.py +40 -0
  88. pulumi_alicloud/dms/__init__.py +1 -0
  89. pulumi_alicloud/dms/enterprise_workspace.py +354 -0
  90. pulumi_alicloud/dns/access_strategy.py +152 -0
  91. pulumi_alicloud/dns/address_pool.py +4 -4
  92. pulumi_alicloud/dns/ddos_bgp_instance.py +246 -106
  93. pulumi_alicloud/dts/job_monitor_rule.py +228 -0
  94. pulumi_alicloud/dts/migration_job.py +238 -0
  95. pulumi_alicloud/dts/synchronization_job.py +266 -14
  96. pulumi_alicloud/ebs/disk_replica_pair.py +112 -0
  97. pulumi_alicloud/ecs/ecs_network_interface_permission.py +84 -0
  98. pulumi_alicloud/ecs/image_import.py +2 -2
  99. pulumi_alicloud/ecs/ram_role_attachment.py +28 -28
  100. pulumi_alicloud/edas/k8s_application.py +124 -0
  101. pulumi_alicloud/edas/k8s_cluster.py +104 -0
  102. pulumi_alicloud/edas/k8s_slb_attachment.py +152 -0
  103. pulumi_alicloud/eflo/__init__.py +2 -0
  104. pulumi_alicloud/eflo/_inputs.py +94 -0
  105. pulumi_alicloud/eflo/er.py +487 -0
  106. pulumi_alicloud/eflo/node.py +54 -7
  107. pulumi_alicloud/eflo/node_group_attachment.py +604 -0
  108. pulumi_alicloud/eflo/outputs.py +75 -0
  109. pulumi_alicloud/emr/cluster.py +64 -64
  110. pulumi_alicloud/emr/get_clusters.py +16 -16
  111. pulumi_alicloud/emrv2/cluster.py +16 -16
  112. pulumi_alicloud/emrv2/get_cluster_instances.py +16 -16
  113. pulumi_alicloud/esa/__init__.py +7 -0
  114. pulumi_alicloud/esa/kv_account.py +145 -0
  115. pulumi_alicloud/esa/origin_ca_certificate.py +441 -0
  116. pulumi_alicloud/esa/origin_client_certificate.py +564 -0
  117. pulumi_alicloud/esa/origin_protection.py +290 -0
  118. pulumi_alicloud/esa/routine_related_record.py +226 -0
  119. pulumi_alicloud/esa/site_origin_client_certificate.py +515 -0
  120. pulumi_alicloud/esa/url_observation.py +352 -0
  121. pulumi_alicloud/eventbridge/rule.py +102 -0
  122. pulumi_alicloud/fc/_inputs.py +77 -3
  123. pulumi_alicloud/fc/custom_domain.py +14 -14
  124. pulumi_alicloud/fc/function.py +14 -14
  125. pulumi_alicloud/fc/function_async_invoke_config.py +48 -48
  126. pulumi_alicloud/fc/get_service.py +2 -2
  127. pulumi_alicloud/fc/outputs.py +63 -2
  128. pulumi_alicloud/fc/trigger.py +100 -100
  129. pulumi_alicloud/fc/v3_async_invoke_config.py +154 -0
  130. pulumi_alicloud/fc/v3_function.py +189 -3
  131. pulumi_alicloud/fc/v3_function_version.py +30 -2
  132. pulumi_alicloud/fnf/execution.py +14 -14
  133. pulumi_alicloud/fnf/flow.py +14 -14
  134. pulumi_alicloud/ga/additional_certificate.py +236 -0
  135. pulumi_alicloud/gpdb/hadoop_data_source.py +16 -16
  136. pulumi_alicloud/gpdb/streaming_job.py +4 -4
  137. pulumi_alicloud/gwlb/listener.py +172 -0
  138. pulumi_alicloud/gwlb/load_balancer.py +96 -0
  139. pulumi_alicloud/gwlb/server_group.py +160 -0
  140. pulumi_alicloud/hbr/ecs_backup_plan.py +4 -4
  141. pulumi_alicloud/hbr/ots_backup_plan.py +28 -28
  142. pulumi_alicloud/hbr/restore_job.py +4 -4
  143. pulumi_alicloud/hologram/instance.py +35 -0
  144. pulumi_alicloud/imm/project.py +14 -14
  145. pulumi_alicloud/kms/get_aliases.py +6 -6
  146. pulumi_alicloud/kms/get_instances.py +178 -0
  147. pulumi_alicloud/kms/instance.py +470 -16
  148. pulumi_alicloud/kms/policy.py +96 -0
  149. pulumi_alicloud/log/dashboard.py +40 -40
  150. pulumi_alicloud/log/ingestion.py +38 -38
  151. pulumi_alicloud/log/log_tail_attachment.py +20 -20
  152. pulumi_alicloud/log/log_tail_config.py +20 -20
  153. pulumi_alicloud/log/oss_export.py +6 -0
  154. pulumi_alicloud/log/project.py +20 -20
  155. pulumi_alicloud/log/resource.py +22 -22
  156. pulumi_alicloud/log/resource_record.py +40 -40
  157. pulumi_alicloud/maxcompute/get_service.py +2 -2
  158. pulumi_alicloud/message/__init__.py +1 -0
  159. pulumi_alicloud/message/_inputs.py +141 -0
  160. pulumi_alicloud/message/outputs.py +120 -0
  161. pulumi_alicloud/message/service_event_rule.py +490 -0
  162. pulumi_alicloud/message/service_subscription.py +48 -1
  163. pulumi_alicloud/mongodb/__init__.py +1 -0
  164. pulumi_alicloud/mongodb/global_security_ip_group.py +304 -0
  165. pulumi_alicloud/mongodb/instance.py +47 -0
  166. pulumi_alicloud/mongodb/sharding_instance.py +385 -0
  167. pulumi_alicloud/msc_sub_webhook.py +44 -0
  168. pulumi_alicloud/mse/cluster.py +47 -0
  169. pulumi_alicloud/mse/gateway.py +62 -0
  170. pulumi_alicloud/nas/access_group.py +46 -18
  171. pulumi_alicloud/nas/access_rule.py +28 -0
  172. pulumi_alicloud/nas/data_flow.py +114 -0
  173. pulumi_alicloud/nlb/listener_additional_certificate_attachment.py +328 -0
  174. pulumi_alicloud/nlb/server_group.py +28 -21
  175. pulumi_alicloud/oos/execution.py +30 -30
  176. pulumi_alicloud/oos/get_parameters.py +10 -10
  177. pulumi_alicloud/oos/get_secret_parameters.py +10 -10
  178. pulumi_alicloud/oos/template.py +28 -28
  179. pulumi_alicloud/oss/bucket.py +634 -0
  180. pulumi_alicloud/oss/bucket_replication.py +56 -56
  181. pulumi_alicloud/outputs.py +489 -0
  182. pulumi_alicloud/pai/flow_pipeline.py +70 -70
  183. pulumi_alicloud/pai/workspace_datasetversion.py +108 -0
  184. pulumi_alicloud/pai/workspace_run.py +62 -0
  185. pulumi_alicloud/polardb/cluster.py +7 -7
  186. pulumi_alicloud/privatelink/vpc_endpoint.py +21 -7
  187. pulumi_alicloud/privatelink/vpc_endpoint_service.py +11 -11
  188. pulumi_alicloud/pulumi-plugin.json +1 -1
  189. pulumi_alicloud/pvtz/endpoint.py +96 -0
  190. pulumi_alicloud/pvtz/rule.py +122 -0
  191. pulumi_alicloud/pvtz/rule_attachment.py +150 -0
  192. pulumi_alicloud/ram/get_policies.py +18 -18
  193. pulumi_alicloud/ram/get_policy_document.py +2 -2
  194. pulumi_alicloud/ram/get_role_policy_attachments.py +34 -34
  195. pulumi_alicloud/ram/get_users.py +32 -32
  196. pulumi_alicloud/ram/group_membership.py +74 -0
  197. pulumi_alicloud/ram/group_policy_attachment.py +18 -18
  198. pulumi_alicloud/ram/policy.py +18 -18
  199. pulumi_alicloud/ram/role.py +16 -16
  200. pulumi_alicloud/ram/role_attachment.py +14 -14
  201. pulumi_alicloud/ram/role_policy_attachment.py +34 -34
  202. pulumi_alicloud/ram/user_policy_attachment.py +18 -18
  203. pulumi_alicloud/rds/get_instance_classes.py +6 -4
  204. pulumi_alicloud/rds/outputs.py +4 -0
  205. pulumi_alicloud/rds/rds_clone_db_instance.py +8 -1
  206. pulumi_alicloud/resourcemanager/__init__.py +1 -0
  207. pulumi_alicloud/resourcemanager/auto_grouping_rule.py +24 -24
  208. pulumi_alicloud/resourcemanager/control_policy.py +18 -18
  209. pulumi_alicloud/resourcemanager/control_policy_attachment.py +18 -18
  210. pulumi_alicloud/resourcemanager/delegated_administrator.py +22 -50
  211. pulumi_alicloud/resourcemanager/folder.py +106 -29
  212. pulumi_alicloud/resourcemanager/get_accounts.py +35 -18
  213. pulumi_alicloud/resourcemanager/get_shared_resources.py +64 -0
  214. pulumi_alicloud/resourcemanager/message_contact.py +572 -0
  215. pulumi_alicloud/resourcemanager/outputs.py +31 -20
  216. pulumi_alicloud/resourcemanager/policy.py +16 -16
  217. pulumi_alicloud/resourcemanager/policy_attachment.py +82 -0
  218. pulumi_alicloud/resourcemanager/policy_version.py +32 -32
  219. pulumi_alicloud/resourcemanager/resource_directory.py +137 -46
  220. pulumi_alicloud/resourcemanager/role.py +14 -14
  221. pulumi_alicloud/resourcemanager/shared_resource.py +81 -45
  222. pulumi_alicloud/resourcemanager/shared_target.py +60 -24
  223. pulumi_alicloud/rocketmq/qos_policy.py +70 -0
  224. pulumi_alicloud/ros/_inputs.py +70 -18
  225. pulumi_alicloud/ros/outputs.py +59 -12
  226. pulumi_alicloud/ros/stack.py +14 -14
  227. pulumi_alicloud/ros/stack_group.py +342 -223
  228. pulumi_alicloud/ros/template.py +2 -2
  229. pulumi_alicloud/sag/qos_policy.py +70 -0
  230. pulumi_alicloud/sddp/data_limit.py +148 -0
  231. pulumi_alicloud/sddp/rule.py +10 -10
  232. pulumi_alicloud/servicecatalog/principal_portfolio_association.py +16 -16
  233. pulumi_alicloud/servicecatalog/product_portfolio_association.py +54 -0
  234. pulumi_alicloud/sls/__init__.py +5 -0
  235. pulumi_alicloud/sls/_inputs.py +128 -0
  236. pulumi_alicloud/sls/collection_policy.py +276 -0
  237. pulumi_alicloud/sls/get_etls.py +294 -0
  238. pulumi_alicloud/sls/get_logtail_configs.py +395 -0
  239. pulumi_alicloud/sls/get_machine_groups.py +229 -0
  240. pulumi_alicloud/sls/logtail_config.py +692 -0
  241. pulumi_alicloud/sls/machine_group.py +502 -0
  242. pulumi_alicloud/sls/oss_export_sink.py +134 -0
  243. pulumi_alicloud/sls/outputs.py +449 -0
  244. pulumi_alicloud/sslcertificatesservice/__init__.py +9 -0
  245. pulumi_alicloud/sslcertificatesservice/pca_certificate.py +646 -0
  246. pulumi_alicloud/star_rocks_instance.py +1425 -0
  247. pulumi_alicloud/tag/policy.py +2 -2
  248. pulumi_alicloud/tag/policy_attachment.py +2 -2
  249. pulumi_alicloud/threatdetection/__init__.py +1 -0
  250. pulumi_alicloud/threatdetection/_inputs.py +183 -0
  251. pulumi_alicloud/threatdetection/anti_brute_force_rule.py +50 -1
  252. pulumi_alicloud/threatdetection/attack_path_sensitive_asset_config.py +218 -0
  253. pulumi_alicloud/threatdetection/image_event_operation.py +191 -90
  254. pulumi_alicloud/threatdetection/oss_scan_config.py +257 -65
  255. pulumi_alicloud/threatdetection/outputs.py +147 -0
  256. pulumi_alicloud/vod/editing_project.py +8 -8
  257. pulumi_alicloud/vpc/_inputs.py +87 -54
  258. pulumi_alicloud/vpc/common_bandwith_package.py +28 -0
  259. pulumi_alicloud/vpc/dhcp_options_set.py +97 -58
  260. pulumi_alicloud/vpc/flow_log.py +117 -25
  261. pulumi_alicloud/vpc/gateway_endpoint.py +12 -12
  262. pulumi_alicloud/vpc/gateway_endpoint_route_table_attachment.py +12 -12
  263. pulumi_alicloud/vpc/ha_vip_attachment.py +41 -60
  264. pulumi_alicloud/vpc/ha_vipv2.py +100 -88
  265. pulumi_alicloud/vpc/ipam_ipam_pool.py +54 -0
  266. pulumi_alicloud/vpc/network_acl.py +34 -23
  267. pulumi_alicloud/vpc/outputs.py +58 -36
  268. pulumi_alicloud/vpc/route_entry.py +6 -2
  269. pulumi_alicloud/vpc/vbr_ha.py +100 -0
  270. pulumi_alicloud/vpc/vpc_network_acl_attachment.py +48 -0
  271. pulumi_alicloud/vpn/get_gateways.py +98 -0
  272. pulumi_alicloud/vpn/ssl_vpn_client_cert.py +82 -0
  273. pulumi_alicloud/vpn/ssl_vpn_server.py +76 -0
  274. pulumi_alicloud/wafv3/__init__.py +1 -0
  275. pulumi_alicloud/wafv3/_inputs.py +1318 -182
  276. pulumi_alicloud/wafv3/defense_rule.py +806 -0
  277. pulumi_alicloud/wafv3/defense_template.py +87 -124
  278. pulumi_alicloud/wafv3/domain.py +136 -35
  279. pulumi_alicloud/wafv3/outputs.py +925 -123
  280. {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0.dist-info}/METADATA +1 -1
  281. {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0.dist-info}/RECORD +283 -251
  282. {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0.dist-info}/WHEEL +0 -0
  283. {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,806 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['DefenseRuleArgs', 'DefenseRule']
20
+
21
+ @pulumi.input_type
22
+ class DefenseRuleArgs:
23
+ def __init__(__self__, *,
24
+ config: pulumi.Input['DefenseRuleConfigArgs'],
25
+ defense_scene: pulumi.Input[_builtins.str],
26
+ defense_type: pulumi.Input[_builtins.str],
27
+ instance_id: pulumi.Input[_builtins.str],
28
+ defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
29
+ resource: Optional[pulumi.Input[_builtins.str]] = None,
30
+ rule_name: Optional[pulumi.Input[_builtins.str]] = None,
31
+ rule_status: Optional[pulumi.Input[_builtins.int]] = None,
32
+ template_id: Optional[pulumi.Input[_builtins.int]] = None):
33
+ """
34
+ The set of arguments for constructing a DefenseRule resource.
35
+ :param pulumi.Input['DefenseRuleConfigArgs'] config: Rule configuration content, in JSON format, constructed with a series of parameters.
36
+
37
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
38
+ See `config` below.
39
+ :param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
40
+
41
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
42
+ :param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
43
+ :param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
44
+ :param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
45
+ :param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
46
+
47
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
48
+ :param pulumi.Input[_builtins.str] rule_name: The rule name.
49
+ :param pulumi.Input[_builtins.int] rule_status: Protection rule status.
50
+ :param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
51
+ """
52
+ pulumi.set(__self__, "config", config)
53
+ pulumi.set(__self__, "defense_scene", defense_scene)
54
+ pulumi.set(__self__, "defense_type", defense_type)
55
+ pulumi.set(__self__, "instance_id", instance_id)
56
+ if defense_origin is not None:
57
+ pulumi.set(__self__, "defense_origin", defense_origin)
58
+ if resource is not None:
59
+ pulumi.set(__self__, "resource", resource)
60
+ if rule_name is not None:
61
+ pulumi.set(__self__, "rule_name", rule_name)
62
+ if rule_status is not None:
63
+ pulumi.set(__self__, "rule_status", rule_status)
64
+ if template_id is not None:
65
+ pulumi.set(__self__, "template_id", template_id)
66
+
67
+ @_builtins.property
68
+ @pulumi.getter
69
+ def config(self) -> pulumi.Input['DefenseRuleConfigArgs']:
70
+ """
71
+ Rule configuration content, in JSON format, constructed with a series of parameters.
72
+
73
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
74
+ See `config` below.
75
+ """
76
+ return pulumi.get(self, "config")
77
+
78
+ @config.setter
79
+ def config(self, value: pulumi.Input['DefenseRuleConfigArgs']):
80
+ pulumi.set(self, "config", value)
81
+
82
+ @_builtins.property
83
+ @pulumi.getter(name="defenseScene")
84
+ def defense_scene(self) -> pulumi.Input[_builtins.str]:
85
+ """
86
+ The WAF protection scenario to be created.
87
+
88
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
89
+ """
90
+ return pulumi.get(self, "defense_scene")
91
+
92
+ @defense_scene.setter
93
+ def defense_scene(self, value: pulumi.Input[_builtins.str]):
94
+ pulumi.set(self, "defense_scene", value)
95
+
96
+ @_builtins.property
97
+ @pulumi.getter(name="defenseType")
98
+ def defense_type(self) -> pulumi.Input[_builtins.str]:
99
+ """
100
+ The protection rule type. Value:
101
+ """
102
+ return pulumi.get(self, "defense_type")
103
+
104
+ @defense_type.setter
105
+ def defense_type(self, value: pulumi.Input[_builtins.str]):
106
+ pulumi.set(self, "defense_type", value)
107
+
108
+ @_builtins.property
109
+ @pulumi.getter(name="instanceId")
110
+ def instance_id(self) -> pulumi.Input[_builtins.str]:
111
+ """
112
+ The ID of the Web Application Firewall (WAF) instance.
113
+ """
114
+ return pulumi.get(self, "instance_id")
115
+
116
+ @instance_id.setter
117
+ def instance_id(self, value: pulumi.Input[_builtins.str]):
118
+ pulumi.set(self, "instance_id", value)
119
+
120
+ @_builtins.property
121
+ @pulumi.getter(name="defenseOrigin")
122
+ def defense_origin(self) -> Optional[pulumi.Input[_builtins.str]]:
123
+ """
124
+ Sources of protection. Value:
125
+ """
126
+ return pulumi.get(self, "defense_origin")
127
+
128
+ @defense_origin.setter
129
+ def defense_origin(self, value: Optional[pulumi.Input[_builtins.str]]):
130
+ pulumi.set(self, "defense_origin", value)
131
+
132
+ @_builtins.property
133
+ @pulumi.getter
134
+ def resource(self) -> Optional[pulumi.Input[_builtins.str]]:
135
+ """
136
+ The protection object corresponding to the rule to be queried.
137
+
138
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
139
+ """
140
+ return pulumi.get(self, "resource")
141
+
142
+ @resource.setter
143
+ def resource(self, value: Optional[pulumi.Input[_builtins.str]]):
144
+ pulumi.set(self, "resource", value)
145
+
146
+ @_builtins.property
147
+ @pulumi.getter(name="ruleName")
148
+ def rule_name(self) -> Optional[pulumi.Input[_builtins.str]]:
149
+ """
150
+ The rule name.
151
+ """
152
+ return pulumi.get(self, "rule_name")
153
+
154
+ @rule_name.setter
155
+ def rule_name(self, value: Optional[pulumi.Input[_builtins.str]]):
156
+ pulumi.set(self, "rule_name", value)
157
+
158
+ @_builtins.property
159
+ @pulumi.getter(name="ruleStatus")
160
+ def rule_status(self) -> Optional[pulumi.Input[_builtins.int]]:
161
+ """
162
+ Protection rule status.
163
+ """
164
+ return pulumi.get(self, "rule_status")
165
+
166
+ @rule_status.setter
167
+ def rule_status(self, value: Optional[pulumi.Input[_builtins.int]]):
168
+ pulumi.set(self, "rule_status", value)
169
+
170
+ @_builtins.property
171
+ @pulumi.getter(name="templateId")
172
+ def template_id(self) -> Optional[pulumi.Input[_builtins.int]]:
173
+ """
174
+ The protection template ID of the protection rule to be created.
175
+ """
176
+ return pulumi.get(self, "template_id")
177
+
178
+ @template_id.setter
179
+ def template_id(self, value: Optional[pulumi.Input[_builtins.int]]):
180
+ pulumi.set(self, "template_id", value)
181
+
182
+
183
+ @pulumi.input_type
184
+ class _DefenseRuleState:
185
+ def __init__(__self__, *,
186
+ config: Optional[pulumi.Input['DefenseRuleConfigArgs']] = None,
187
+ defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
188
+ defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
189
+ defense_type: Optional[pulumi.Input[_builtins.str]] = None,
190
+ instance_id: Optional[pulumi.Input[_builtins.str]] = None,
191
+ resource: Optional[pulumi.Input[_builtins.str]] = None,
192
+ rule_id: Optional[pulumi.Input[_builtins.int]] = None,
193
+ rule_name: Optional[pulumi.Input[_builtins.str]] = None,
194
+ rule_status: Optional[pulumi.Input[_builtins.int]] = None,
195
+ template_id: Optional[pulumi.Input[_builtins.int]] = None):
196
+ """
197
+ Input properties used for looking up and filtering DefenseRule resources.
198
+ :param pulumi.Input['DefenseRuleConfigArgs'] config: Rule configuration content, in JSON format, constructed with a series of parameters.
199
+
200
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
201
+ See `config` below.
202
+ :param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
203
+ :param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
204
+
205
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
206
+ :param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
207
+ :param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
208
+ :param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
209
+
210
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
211
+ :param pulumi.Input[_builtins.int] rule_id: The protection rule ID.
212
+ :param pulumi.Input[_builtins.str] rule_name: The rule name.
213
+ :param pulumi.Input[_builtins.int] rule_status: Protection rule status.
214
+ :param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
215
+ """
216
+ if config is not None:
217
+ pulumi.set(__self__, "config", config)
218
+ if defense_origin is not None:
219
+ pulumi.set(__self__, "defense_origin", defense_origin)
220
+ if defense_scene is not None:
221
+ pulumi.set(__self__, "defense_scene", defense_scene)
222
+ if defense_type is not None:
223
+ pulumi.set(__self__, "defense_type", defense_type)
224
+ if instance_id is not None:
225
+ pulumi.set(__self__, "instance_id", instance_id)
226
+ if resource is not None:
227
+ pulumi.set(__self__, "resource", resource)
228
+ if rule_id is not None:
229
+ pulumi.set(__self__, "rule_id", rule_id)
230
+ if rule_name is not None:
231
+ pulumi.set(__self__, "rule_name", rule_name)
232
+ if rule_status is not None:
233
+ pulumi.set(__self__, "rule_status", rule_status)
234
+ if template_id is not None:
235
+ pulumi.set(__self__, "template_id", template_id)
236
+
237
+ @_builtins.property
238
+ @pulumi.getter
239
+ def config(self) -> Optional[pulumi.Input['DefenseRuleConfigArgs']]:
240
+ """
241
+ Rule configuration content, in JSON format, constructed with a series of parameters.
242
+
243
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
244
+ See `config` below.
245
+ """
246
+ return pulumi.get(self, "config")
247
+
248
+ @config.setter
249
+ def config(self, value: Optional[pulumi.Input['DefenseRuleConfigArgs']]):
250
+ pulumi.set(self, "config", value)
251
+
252
+ @_builtins.property
253
+ @pulumi.getter(name="defenseOrigin")
254
+ def defense_origin(self) -> Optional[pulumi.Input[_builtins.str]]:
255
+ """
256
+ Sources of protection. Value:
257
+ """
258
+ return pulumi.get(self, "defense_origin")
259
+
260
+ @defense_origin.setter
261
+ def defense_origin(self, value: Optional[pulumi.Input[_builtins.str]]):
262
+ pulumi.set(self, "defense_origin", value)
263
+
264
+ @_builtins.property
265
+ @pulumi.getter(name="defenseScene")
266
+ def defense_scene(self) -> Optional[pulumi.Input[_builtins.str]]:
267
+ """
268
+ The WAF protection scenario to be created.
269
+
270
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
271
+ """
272
+ return pulumi.get(self, "defense_scene")
273
+
274
+ @defense_scene.setter
275
+ def defense_scene(self, value: Optional[pulumi.Input[_builtins.str]]):
276
+ pulumi.set(self, "defense_scene", value)
277
+
278
+ @_builtins.property
279
+ @pulumi.getter(name="defenseType")
280
+ def defense_type(self) -> Optional[pulumi.Input[_builtins.str]]:
281
+ """
282
+ The protection rule type. Value:
283
+ """
284
+ return pulumi.get(self, "defense_type")
285
+
286
+ @defense_type.setter
287
+ def defense_type(self, value: Optional[pulumi.Input[_builtins.str]]):
288
+ pulumi.set(self, "defense_type", value)
289
+
290
+ @_builtins.property
291
+ @pulumi.getter(name="instanceId")
292
+ def instance_id(self) -> Optional[pulumi.Input[_builtins.str]]:
293
+ """
294
+ The ID of the Web Application Firewall (WAF) instance.
295
+ """
296
+ return pulumi.get(self, "instance_id")
297
+
298
+ @instance_id.setter
299
+ def instance_id(self, value: Optional[pulumi.Input[_builtins.str]]):
300
+ pulumi.set(self, "instance_id", value)
301
+
302
+ @_builtins.property
303
+ @pulumi.getter
304
+ def resource(self) -> Optional[pulumi.Input[_builtins.str]]:
305
+ """
306
+ The protection object corresponding to the rule to be queried.
307
+
308
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
309
+ """
310
+ return pulumi.get(self, "resource")
311
+
312
+ @resource.setter
313
+ def resource(self, value: Optional[pulumi.Input[_builtins.str]]):
314
+ pulumi.set(self, "resource", value)
315
+
316
+ @_builtins.property
317
+ @pulumi.getter(name="ruleId")
318
+ def rule_id(self) -> Optional[pulumi.Input[_builtins.int]]:
319
+ """
320
+ The protection rule ID.
321
+ """
322
+ return pulumi.get(self, "rule_id")
323
+
324
+ @rule_id.setter
325
+ def rule_id(self, value: Optional[pulumi.Input[_builtins.int]]):
326
+ pulumi.set(self, "rule_id", value)
327
+
328
+ @_builtins.property
329
+ @pulumi.getter(name="ruleName")
330
+ def rule_name(self) -> Optional[pulumi.Input[_builtins.str]]:
331
+ """
332
+ The rule name.
333
+ """
334
+ return pulumi.get(self, "rule_name")
335
+
336
+ @rule_name.setter
337
+ def rule_name(self, value: Optional[pulumi.Input[_builtins.str]]):
338
+ pulumi.set(self, "rule_name", value)
339
+
340
+ @_builtins.property
341
+ @pulumi.getter(name="ruleStatus")
342
+ def rule_status(self) -> Optional[pulumi.Input[_builtins.int]]:
343
+ """
344
+ Protection rule status.
345
+ """
346
+ return pulumi.get(self, "rule_status")
347
+
348
+ @rule_status.setter
349
+ def rule_status(self, value: Optional[pulumi.Input[_builtins.int]]):
350
+ pulumi.set(self, "rule_status", value)
351
+
352
+ @_builtins.property
353
+ @pulumi.getter(name="templateId")
354
+ def template_id(self) -> Optional[pulumi.Input[_builtins.int]]:
355
+ """
356
+ The protection template ID of the protection rule to be created.
357
+ """
358
+ return pulumi.get(self, "template_id")
359
+
360
+ @template_id.setter
361
+ def template_id(self, value: Optional[pulumi.Input[_builtins.int]]):
362
+ pulumi.set(self, "template_id", value)
363
+
364
+
365
+ @pulumi.type_token("alicloud:wafv3/defenseRule:DefenseRule")
366
+ class DefenseRule(pulumi.CustomResource):
367
+ @overload
368
+ def __init__(__self__,
369
+ resource_name: str,
370
+ opts: Optional[pulumi.ResourceOptions] = None,
371
+ config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
372
+ defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
373
+ defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
374
+ defense_type: Optional[pulumi.Input[_builtins.str]] = None,
375
+ instance_id: Optional[pulumi.Input[_builtins.str]] = None,
376
+ resource: Optional[pulumi.Input[_builtins.str]] = None,
377
+ rule_name: Optional[pulumi.Input[_builtins.str]] = None,
378
+ rule_status: Optional[pulumi.Input[_builtins.int]] = None,
379
+ template_id: Optional[pulumi.Input[_builtins.int]] = None,
380
+ __props__=None):
381
+ """
382
+ Provides a WAFV3 Defense Rule resource.
383
+
384
+ For information about WAFV3 Defense Rule and how to use it, see [What is Defense Rule](https://next.api.alibabacloud.com/document/waf-openapi/2021-10-01/CreateDefenseRule).
385
+
386
+ > **NOTE:** Available since v1.257.0.
387
+
388
+ ## Example Usage
389
+
390
+ Basic Usage
391
+
392
+ ```python
393
+ import pulumi
394
+ import pulumi_alicloud as alicloud
395
+
396
+ config = pulumi.Config()
397
+ name = config.get("name")
398
+ if name is None:
399
+ name = "tfaccwafv310619"
400
+ region_id = config.get("regionId")
401
+ if region_id is None:
402
+ region_id = "cn-hangzhou"
403
+ default = alicloud.wafv3.get_instances()
404
+ default_domain = alicloud.wafv3.Domain("default",
405
+ instance_id=default.ids[0],
406
+ listen={
407
+ "protection_resource": "share",
408
+ "http_ports": [
409
+ 81,
410
+ 82,
411
+ 83,
412
+ ],
413
+ "https_ports": [],
414
+ "xff_header_mode": 2,
415
+ "xff_headers": [
416
+ "examplea",
417
+ "exampleb",
418
+ "examplec",
419
+ ],
420
+ "custom_ciphers": [],
421
+ "ipv6_enabled": True,
422
+ },
423
+ redirect={
424
+ "keepalive_timeout": 15,
425
+ "backends": [
426
+ "1.1.1.1",
427
+ "3.3.3.3",
428
+ "2.2.2.2",
429
+ ],
430
+ "write_timeout": 5,
431
+ "keepalive_requests": 1000,
432
+ "request_headers": [
433
+ {
434
+ "key": "examplekey1",
435
+ "value": "exampleValue1",
436
+ },
437
+ {
438
+ "key": "key1",
439
+ "value": "value1",
440
+ },
441
+ {
442
+ "key": "key22",
443
+ "value": "value22",
444
+ },
445
+ ],
446
+ "loadbalance": "iphash",
447
+ "focus_http_backend": False,
448
+ "sni_enabled": False,
449
+ "connect_timeout": 5,
450
+ "read_timeout": 5,
451
+ "keepalive": True,
452
+ "retry": True,
453
+ },
454
+ domain="zcexample_250746.wafqax.top",
455
+ access_type="share")
456
+ default_defense_rule = alicloud.wafv3.DefenseRule("default",
457
+ defense_origin="custom",
458
+ config={
459
+ "account_identifiers": [{
460
+ "priority": 2,
461
+ "decode_type": "jwt",
462
+ "key": "Query-Arg",
463
+ "sub_key": "adb",
464
+ "position": "jwt",
465
+ }],
466
+ },
467
+ instance_id=default.ids[0],
468
+ defense_type="resource",
469
+ defense_scene="account_identifier",
470
+ rule_status=1,
471
+ resource=default_domain.domain_id)
472
+ ```
473
+
474
+ ## Import
475
+
476
+ WAFV3 Defense Rule can be imported using the id, e.g.
477
+
478
+ ```sh
479
+ $ pulumi import alicloud:wafv3/defenseRule:DefenseRule example <instance_id>:<defense_type>:<rule_id>
480
+ ```
481
+
482
+ :param str resource_name: The name of the resource.
483
+ :param pulumi.ResourceOptions opts: Options for the resource.
484
+ :param pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']] config: Rule configuration content, in JSON format, constructed with a series of parameters.
485
+
486
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
487
+ See `config` below.
488
+ :param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
489
+ :param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
490
+
491
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
492
+ :param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
493
+ :param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
494
+ :param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
495
+
496
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
497
+ :param pulumi.Input[_builtins.str] rule_name: The rule name.
498
+ :param pulumi.Input[_builtins.int] rule_status: Protection rule status.
499
+ :param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
500
+ """
501
+ ...
502
+ @overload
503
+ def __init__(__self__,
504
+ resource_name: str,
505
+ args: DefenseRuleArgs,
506
+ opts: Optional[pulumi.ResourceOptions] = None):
507
+ """
508
+ Provides a WAFV3 Defense Rule resource.
509
+
510
+ For information about WAFV3 Defense Rule and how to use it, see [What is Defense Rule](https://next.api.alibabacloud.com/document/waf-openapi/2021-10-01/CreateDefenseRule).
511
+
512
+ > **NOTE:** Available since v1.257.0.
513
+
514
+ ## Example Usage
515
+
516
+ Basic Usage
517
+
518
+ ```python
519
+ import pulumi
520
+ import pulumi_alicloud as alicloud
521
+
522
+ config = pulumi.Config()
523
+ name = config.get("name")
524
+ if name is None:
525
+ name = "tfaccwafv310619"
526
+ region_id = config.get("regionId")
527
+ if region_id is None:
528
+ region_id = "cn-hangzhou"
529
+ default = alicloud.wafv3.get_instances()
530
+ default_domain = alicloud.wafv3.Domain("default",
531
+ instance_id=default.ids[0],
532
+ listen={
533
+ "protection_resource": "share",
534
+ "http_ports": [
535
+ 81,
536
+ 82,
537
+ 83,
538
+ ],
539
+ "https_ports": [],
540
+ "xff_header_mode": 2,
541
+ "xff_headers": [
542
+ "examplea",
543
+ "exampleb",
544
+ "examplec",
545
+ ],
546
+ "custom_ciphers": [],
547
+ "ipv6_enabled": True,
548
+ },
549
+ redirect={
550
+ "keepalive_timeout": 15,
551
+ "backends": [
552
+ "1.1.1.1",
553
+ "3.3.3.3",
554
+ "2.2.2.2",
555
+ ],
556
+ "write_timeout": 5,
557
+ "keepalive_requests": 1000,
558
+ "request_headers": [
559
+ {
560
+ "key": "examplekey1",
561
+ "value": "exampleValue1",
562
+ },
563
+ {
564
+ "key": "key1",
565
+ "value": "value1",
566
+ },
567
+ {
568
+ "key": "key22",
569
+ "value": "value22",
570
+ },
571
+ ],
572
+ "loadbalance": "iphash",
573
+ "focus_http_backend": False,
574
+ "sni_enabled": False,
575
+ "connect_timeout": 5,
576
+ "read_timeout": 5,
577
+ "keepalive": True,
578
+ "retry": True,
579
+ },
580
+ domain="zcexample_250746.wafqax.top",
581
+ access_type="share")
582
+ default_defense_rule = alicloud.wafv3.DefenseRule("default",
583
+ defense_origin="custom",
584
+ config={
585
+ "account_identifiers": [{
586
+ "priority": 2,
587
+ "decode_type": "jwt",
588
+ "key": "Query-Arg",
589
+ "sub_key": "adb",
590
+ "position": "jwt",
591
+ }],
592
+ },
593
+ instance_id=default.ids[0],
594
+ defense_type="resource",
595
+ defense_scene="account_identifier",
596
+ rule_status=1,
597
+ resource=default_domain.domain_id)
598
+ ```
599
+
600
+ ## Import
601
+
602
+ WAFV3 Defense Rule can be imported using the id, e.g.
603
+
604
+ ```sh
605
+ $ pulumi import alicloud:wafv3/defenseRule:DefenseRule example <instance_id>:<defense_type>:<rule_id>
606
+ ```
607
+
608
+ :param str resource_name: The name of the resource.
609
+ :param DefenseRuleArgs args: The arguments to use to populate this resource's properties.
610
+ :param pulumi.ResourceOptions opts: Options for the resource.
611
+ """
612
+ ...
613
+ def __init__(__self__, resource_name: str, *args, **kwargs):
614
+ resource_args, opts = _utilities.get_resource_args_opts(DefenseRuleArgs, pulumi.ResourceOptions, *args, **kwargs)
615
+ if resource_args is not None:
616
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
617
+ else:
618
+ __self__._internal_init(resource_name, *args, **kwargs)
619
+
620
+ def _internal_init(__self__,
621
+ resource_name: str,
622
+ opts: Optional[pulumi.ResourceOptions] = None,
623
+ config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
624
+ defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
625
+ defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
626
+ defense_type: Optional[pulumi.Input[_builtins.str]] = None,
627
+ instance_id: Optional[pulumi.Input[_builtins.str]] = None,
628
+ resource: Optional[pulumi.Input[_builtins.str]] = None,
629
+ rule_name: Optional[pulumi.Input[_builtins.str]] = None,
630
+ rule_status: Optional[pulumi.Input[_builtins.int]] = None,
631
+ template_id: Optional[pulumi.Input[_builtins.int]] = None,
632
+ __props__=None):
633
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
634
+ if not isinstance(opts, pulumi.ResourceOptions):
635
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
636
+ if opts.id is None:
637
+ if __props__ is not None:
638
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
639
+ __props__ = DefenseRuleArgs.__new__(DefenseRuleArgs)
640
+
641
+ if config is None and not opts.urn:
642
+ raise TypeError("Missing required property 'config'")
643
+ __props__.__dict__["config"] = config
644
+ __props__.__dict__["defense_origin"] = defense_origin
645
+ if defense_scene is None and not opts.urn:
646
+ raise TypeError("Missing required property 'defense_scene'")
647
+ __props__.__dict__["defense_scene"] = defense_scene
648
+ if defense_type is None and not opts.urn:
649
+ raise TypeError("Missing required property 'defense_type'")
650
+ __props__.__dict__["defense_type"] = defense_type
651
+ if instance_id is None and not opts.urn:
652
+ raise TypeError("Missing required property 'instance_id'")
653
+ __props__.__dict__["instance_id"] = instance_id
654
+ __props__.__dict__["resource"] = resource
655
+ __props__.__dict__["rule_name"] = rule_name
656
+ __props__.__dict__["rule_status"] = rule_status
657
+ __props__.__dict__["template_id"] = template_id
658
+ __props__.__dict__["rule_id"] = None
659
+ super(DefenseRule, __self__).__init__(
660
+ 'alicloud:wafv3/defenseRule:DefenseRule',
661
+ resource_name,
662
+ __props__,
663
+ opts)
664
+
665
+ @staticmethod
666
+ def get(resource_name: str,
667
+ id: pulumi.Input[str],
668
+ opts: Optional[pulumi.ResourceOptions] = None,
669
+ config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
670
+ defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
671
+ defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
672
+ defense_type: Optional[pulumi.Input[_builtins.str]] = None,
673
+ instance_id: Optional[pulumi.Input[_builtins.str]] = None,
674
+ resource: Optional[pulumi.Input[_builtins.str]] = None,
675
+ rule_id: Optional[pulumi.Input[_builtins.int]] = None,
676
+ rule_name: Optional[pulumi.Input[_builtins.str]] = None,
677
+ rule_status: Optional[pulumi.Input[_builtins.int]] = None,
678
+ template_id: Optional[pulumi.Input[_builtins.int]] = None) -> 'DefenseRule':
679
+ """
680
+ Get an existing DefenseRule resource's state with the given name, id, and optional extra
681
+ properties used to qualify the lookup.
682
+
683
+ :param str resource_name: The unique name of the resulting resource.
684
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
685
+ :param pulumi.ResourceOptions opts: Options for the resource.
686
+ :param pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']] config: Rule configuration content, in JSON format, constructed with a series of parameters.
687
+
688
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
689
+ See `config` below.
690
+ :param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
691
+ :param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
692
+
693
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
694
+ :param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
695
+ :param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
696
+ :param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
697
+
698
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
699
+ :param pulumi.Input[_builtins.int] rule_id: The protection rule ID.
700
+ :param pulumi.Input[_builtins.str] rule_name: The rule name.
701
+ :param pulumi.Input[_builtins.int] rule_status: Protection rule status.
702
+ :param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
703
+ """
704
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
705
+
706
+ __props__ = _DefenseRuleState.__new__(_DefenseRuleState)
707
+
708
+ __props__.__dict__["config"] = config
709
+ __props__.__dict__["defense_origin"] = defense_origin
710
+ __props__.__dict__["defense_scene"] = defense_scene
711
+ __props__.__dict__["defense_type"] = defense_type
712
+ __props__.__dict__["instance_id"] = instance_id
713
+ __props__.__dict__["resource"] = resource
714
+ __props__.__dict__["rule_id"] = rule_id
715
+ __props__.__dict__["rule_name"] = rule_name
716
+ __props__.__dict__["rule_status"] = rule_status
717
+ __props__.__dict__["template_id"] = template_id
718
+ return DefenseRule(resource_name, opts=opts, __props__=__props__)
719
+
720
+ @_builtins.property
721
+ @pulumi.getter
722
+ def config(self) -> pulumi.Output['outputs.DefenseRuleConfig']:
723
+ """
724
+ Rule configuration content, in JSON format, constructed with a series of parameters.
725
+
726
+ > **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
727
+ See `config` below.
728
+ """
729
+ return pulumi.get(self, "config")
730
+
731
+ @_builtins.property
732
+ @pulumi.getter(name="defenseOrigin")
733
+ def defense_origin(self) -> pulumi.Output[Optional[_builtins.str]]:
734
+ """
735
+ Sources of protection. Value:
736
+ """
737
+ return pulumi.get(self, "defense_origin")
738
+
739
+ @_builtins.property
740
+ @pulumi.getter(name="defenseScene")
741
+ def defense_scene(self) -> pulumi.Output[_builtins.str]:
742
+ """
743
+ The WAF protection scenario to be created.
744
+
745
+ When the protection rule type `DefenseType` is set to `template`, the value is as follows:
746
+ """
747
+ return pulumi.get(self, "defense_scene")
748
+
749
+ @_builtins.property
750
+ @pulumi.getter(name="defenseType")
751
+ def defense_type(self) -> pulumi.Output[_builtins.str]:
752
+ """
753
+ The protection rule type. Value:
754
+ """
755
+ return pulumi.get(self, "defense_type")
756
+
757
+ @_builtins.property
758
+ @pulumi.getter(name="instanceId")
759
+ def instance_id(self) -> pulumi.Output[_builtins.str]:
760
+ """
761
+ The ID of the Web Application Firewall (WAF) instance.
762
+ """
763
+ return pulumi.get(self, "instance_id")
764
+
765
+ @_builtins.property
766
+ @pulumi.getter
767
+ def resource(self) -> pulumi.Output[_builtins.str]:
768
+ """
769
+ The protection object corresponding to the rule to be queried.
770
+
771
+ > **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
772
+ """
773
+ return pulumi.get(self, "resource")
774
+
775
+ @_builtins.property
776
+ @pulumi.getter(name="ruleId")
777
+ def rule_id(self) -> pulumi.Output[_builtins.int]:
778
+ """
779
+ The protection rule ID.
780
+ """
781
+ return pulumi.get(self, "rule_id")
782
+
783
+ @_builtins.property
784
+ @pulumi.getter(name="ruleName")
785
+ def rule_name(self) -> pulumi.Output[_builtins.str]:
786
+ """
787
+ The rule name.
788
+ """
789
+ return pulumi.get(self, "rule_name")
790
+
791
+ @_builtins.property
792
+ @pulumi.getter(name="ruleStatus")
793
+ def rule_status(self) -> pulumi.Output[Optional[_builtins.int]]:
794
+ """
795
+ Protection rule status.
796
+ """
797
+ return pulumi.get(self, "rule_status")
798
+
799
+ @_builtins.property
800
+ @pulumi.getter(name="templateId")
801
+ def template_id(self) -> pulumi.Output[Optional[_builtins.int]]:
802
+ """
803
+ The protection template ID of the protection rule to be created.
804
+ """
805
+ return pulumi.get(self, "template_id")
806
+