pulumi-gcp 7.23.0a1715695885__py3-none-any.whl → 7.24.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.
Files changed (355) hide show
  1. pulumi_gcp/__init__.py +40 -0
  2. pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +12 -12
  3. pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +12 -12
  4. pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +12 -12
  5. pulumi_gcp/apigateway/api_config_iam_binding.py +8 -8
  6. pulumi_gcp/apigateway/api_config_iam_member.py +8 -8
  7. pulumi_gcp/apigateway/api_config_iam_policy.py +8 -8
  8. pulumi_gcp/apigateway/api_iam_binding.py +8 -8
  9. pulumi_gcp/apigateway/api_iam_member.py +8 -8
  10. pulumi_gcp/apigateway/api_iam_policy.py +8 -8
  11. pulumi_gcp/apigateway/gateway_iam_binding.py +8 -8
  12. pulumi_gcp/apigateway/gateway_iam_member.py +8 -8
  13. pulumi_gcp/apigateway/gateway_iam_policy.py +8 -8
  14. pulumi_gcp/apigee/environment_iam_binding.py +12 -12
  15. pulumi_gcp/apigee/environment_iam_member.py +12 -12
  16. pulumi_gcp/apigee/environment_iam_policy.py +12 -12
  17. pulumi_gcp/artifactregistry/repository_iam_binding.py +12 -12
  18. pulumi_gcp/artifactregistry/repository_iam_member.py +12 -12
  19. pulumi_gcp/artifactregistry/repository_iam_policy.py +12 -12
  20. pulumi_gcp/bigquery/_inputs.py +16 -0
  21. pulumi_gcp/bigquery/connection.py +126 -0
  22. pulumi_gcp/bigquery/connection_iam_binding.py +12 -12
  23. pulumi_gcp/bigquery/connection_iam_member.py +12 -12
  24. pulumi_gcp/bigquery/connection_iam_policy.py +12 -12
  25. pulumi_gcp/bigquery/dataset_access.py +56 -0
  26. pulumi_gcp/bigquery/dataset_iam_binding.py +12 -12
  27. pulumi_gcp/bigquery/dataset_iam_member.py +12 -12
  28. pulumi_gcp/bigquery/dataset_iam_policy.py +12 -12
  29. pulumi_gcp/bigquery/iam_binding.py +12 -12
  30. pulumi_gcp/bigquery/iam_member.py +12 -12
  31. pulumi_gcp/bigquery/iam_policy.py +12 -12
  32. pulumi_gcp/bigquery/outputs.py +16 -0
  33. pulumi_gcp/bigquery/routine.py +2 -2
  34. pulumi_gcp/bigquery/table.py +47 -0
  35. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +12 -12
  36. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +12 -12
  37. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +12 -12
  38. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +12 -12
  39. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +12 -12
  40. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +12 -12
  41. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +12 -12
  42. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +12 -12
  43. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +12 -12
  44. pulumi_gcp/bigtable/__init__.py +1 -0
  45. pulumi_gcp/bigtable/_inputs.py +101 -0
  46. pulumi_gcp/bigtable/authorized_view.py +440 -0
  47. pulumi_gcp/bigtable/instance_iam_binding.py +12 -12
  48. pulumi_gcp/bigtable/instance_iam_member.py +12 -12
  49. pulumi_gcp/bigtable/instance_iam_policy.py +12 -12
  50. pulumi_gcp/bigtable/outputs.py +119 -0
  51. pulumi_gcp/bigtable/table_iam_binding.py +12 -12
  52. pulumi_gcp/bigtable/table_iam_member.py +12 -12
  53. pulumi_gcp/bigtable/table_iam_policy.py +12 -12
  54. pulumi_gcp/billing/account_iam_binding.py +12 -12
  55. pulumi_gcp/billing/account_iam_member.py +12 -12
  56. pulumi_gcp/billing/account_iam_policy.py +12 -12
  57. pulumi_gcp/billing/project_info.py +4 -4
  58. pulumi_gcp/binaryauthorization/attestor_iam_binding.py +12 -12
  59. pulumi_gcp/binaryauthorization/attestor_iam_member.py +12 -12
  60. pulumi_gcp/binaryauthorization/attestor_iam_policy.py +12 -12
  61. pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +12 -12
  62. pulumi_gcp/certificateauthority/ca_pool_iam_member.py +12 -12
  63. pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +12 -12
  64. pulumi_gcp/certificateauthority/certificate_template.py +70 -0
  65. pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +12 -12
  66. pulumi_gcp/certificateauthority/certificate_template_iam_member.py +12 -12
  67. pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +12 -12
  68. pulumi_gcp/cloudasset/__init__.py +1 -0
  69. pulumi_gcp/cloudasset/get_search_all_resources.py +197 -0
  70. pulumi_gcp/cloudasset/outputs.py +184 -0
  71. pulumi_gcp/cloudbuildv2/connection_iam_binding.py +12 -12
  72. pulumi_gcp/cloudbuildv2/connection_iam_member.py +12 -12
  73. pulumi_gcp/cloudbuildv2/connection_iam_policy.py +12 -12
  74. pulumi_gcp/cloudbuildv2/repository.py +2 -2
  75. pulumi_gcp/clouddeploy/_inputs.py +96 -0
  76. pulumi_gcp/clouddeploy/custom_target_type.py +46 -0
  77. pulumi_gcp/clouddeploy/delivery_pipeline.py +7 -7
  78. pulumi_gcp/clouddeploy/outputs.py +96 -1
  79. pulumi_gcp/clouddeploy/target.py +54 -7
  80. pulumi_gcp/cloudfunctions/function.py +21 -0
  81. pulumi_gcp/cloudfunctions/function_iam_binding.py +12 -12
  82. pulumi_gcp/cloudfunctions/function_iam_member.py +12 -12
  83. pulumi_gcp/cloudfunctions/function_iam_policy.py +12 -12
  84. pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +12 -12
  85. pulumi_gcp/cloudfunctionsv2/function_iam_member.py +12 -12
  86. pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +12 -12
  87. pulumi_gcp/cloudrun/iam_binding.py +12 -12
  88. pulumi_gcp/cloudrun/iam_member.py +12 -12
  89. pulumi_gcp/cloudrun/iam_policy.py +12 -12
  90. pulumi_gcp/cloudrunv2/job_iam_binding.py +12 -12
  91. pulumi_gcp/cloudrunv2/job_iam_member.py +12 -12
  92. pulumi_gcp/cloudrunv2/job_iam_policy.py +12 -12
  93. pulumi_gcp/cloudrunv2/service_iam_binding.py +12 -12
  94. pulumi_gcp/cloudrunv2/service_iam_member.py +12 -12
  95. pulumi_gcp/cloudrunv2/service_iam_policy.py +12 -12
  96. pulumi_gcp/cloudtasks/queue_iam_binding.py +12 -12
  97. pulumi_gcp/cloudtasks/queue_iam_member.py +12 -12
  98. pulumi_gcp/cloudtasks/queue_iam_policy.py +12 -12
  99. pulumi_gcp/compute/__init__.py +1 -0
  100. pulumi_gcp/compute/_inputs.py +1412 -42
  101. pulumi_gcp/compute/backend_service.py +315 -0
  102. pulumi_gcp/compute/disk_iam_binding.py +12 -12
  103. pulumi_gcp/compute/disk_iam_member.py +12 -12
  104. pulumi_gcp/compute/disk_iam_policy.py +12 -12
  105. pulumi_gcp/compute/firewall_policy_rule.py +125 -10
  106. pulumi_gcp/compute/forwarding_rule.py +6 -6
  107. pulumi_gcp/compute/get_network_endpoint_group.py +2 -2
  108. pulumi_gcp/compute/get_region_network_endpoint_group.py +2 -2
  109. pulumi_gcp/compute/get_router_nat.py +11 -1
  110. pulumi_gcp/compute/get_snapshot.py +2 -0
  111. pulumi_gcp/compute/image_iam_binding.py +12 -12
  112. pulumi_gcp/compute/image_iam_member.py +12 -12
  113. pulumi_gcp/compute/image_iam_policy.py +12 -12
  114. pulumi_gcp/compute/instance_iam_binding.py +12 -12
  115. pulumi_gcp/compute/instance_iam_member.py +12 -12
  116. pulumi_gcp/compute/instance_iam_policy.py +12 -12
  117. pulumi_gcp/compute/interconnect.py +1683 -0
  118. pulumi_gcp/compute/machine_image_iam_binding.py +8 -8
  119. pulumi_gcp/compute/machine_image_iam_member.py +8 -8
  120. pulumi_gcp/compute/machine_image_iam_policy.py +8 -8
  121. pulumi_gcp/compute/network_firewall_policy_rule.py +125 -10
  122. pulumi_gcp/compute/outputs.py +1385 -0
  123. pulumi_gcp/compute/region_backend_service.py +315 -0
  124. pulumi_gcp/compute/region_disk_iam_binding.py +12 -12
  125. pulumi_gcp/compute/region_disk_iam_member.py +12 -12
  126. pulumi_gcp/compute/region_disk_iam_policy.py +12 -12
  127. pulumi_gcp/compute/region_network_firewall_policy_rule.py +125 -10
  128. pulumi_gcp/compute/region_security_policy_rule.py +230 -1
  129. pulumi_gcp/compute/router_nat.py +68 -0
  130. pulumi_gcp/compute/router_peer.py +88 -0
  131. pulumi_gcp/compute/security_policy.py +49 -0
  132. pulumi_gcp/compute/snapshot_iam_binding.py +12 -12
  133. pulumi_gcp/compute/snapshot_iam_member.py +12 -12
  134. pulumi_gcp/compute/snapshot_iam_policy.py +12 -12
  135. pulumi_gcp/compute/subnetwork_iam_binding.py +12 -12
  136. pulumi_gcp/compute/subnetwork_iam_member.py +12 -12
  137. pulumi_gcp/compute/subnetwork_iam_policy.py +12 -12
  138. pulumi_gcp/compute/target_instance.py +4 -4
  139. pulumi_gcp/compute/target_pool.py +21 -21
  140. pulumi_gcp/container/_inputs.py +81 -5
  141. pulumi_gcp/container/outputs.py +109 -8
  142. pulumi_gcp/containeranalysis/note_iam_binding.py +12 -12
  143. pulumi_gcp/containeranalysis/note_iam_member.py +12 -12
  144. pulumi_gcp/containeranalysis/note_iam_policy.py +12 -12
  145. pulumi_gcp/databasemigrationservice/connection_profile.py +6 -6
  146. pulumi_gcp/datacatalog/entry_group_iam_binding.py +12 -12
  147. pulumi_gcp/datacatalog/entry_group_iam_member.py +12 -12
  148. pulumi_gcp/datacatalog/entry_group_iam_policy.py +12 -12
  149. pulumi_gcp/datacatalog/policy_tag_iam_binding.py +12 -12
  150. pulumi_gcp/datacatalog/policy_tag_iam_member.py +12 -12
  151. pulumi_gcp/datacatalog/policy_tag_iam_policy.py +12 -12
  152. pulumi_gcp/datacatalog/tag_template_iam_binding.py +12 -12
  153. pulumi_gcp/datacatalog/tag_template_iam_member.py +12 -12
  154. pulumi_gcp/datacatalog/tag_template_iam_policy.py +12 -12
  155. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +12 -12
  156. pulumi_gcp/datacatalog/taxonomy_iam_member.py +12 -12
  157. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +12 -12
  158. pulumi_gcp/dataflow/flex_template_job.py +7 -7
  159. pulumi_gcp/dataflow/job.py +7 -7
  160. pulumi_gcp/dataloss/_inputs.py +420 -13
  161. pulumi_gcp/dataloss/outputs.py +439 -13
  162. pulumi_gcp/dataplex/asset_iam_binding.py +12 -12
  163. pulumi_gcp/dataplex/asset_iam_member.py +12 -12
  164. pulumi_gcp/dataplex/asset_iam_policy.py +12 -12
  165. pulumi_gcp/dataplex/datascan_iam_binding.py +12 -12
  166. pulumi_gcp/dataplex/datascan_iam_member.py +12 -12
  167. pulumi_gcp/dataplex/datascan_iam_policy.py +12 -12
  168. pulumi_gcp/dataplex/lake_iam_binding.py +12 -12
  169. pulumi_gcp/dataplex/lake_iam_member.py +12 -12
  170. pulumi_gcp/dataplex/lake_iam_policy.py +12 -12
  171. pulumi_gcp/dataplex/task.py +16 -16
  172. pulumi_gcp/dataplex/task_iam_binding.py +12 -12
  173. pulumi_gcp/dataplex/task_iam_member.py +12 -12
  174. pulumi_gcp/dataplex/task_iam_policy.py +12 -12
  175. pulumi_gcp/dataplex/zone_iam_binding.py +12 -12
  176. pulumi_gcp/dataplex/zone_iam_member.py +12 -12
  177. pulumi_gcp/dataplex/zone_iam_policy.py +12 -12
  178. pulumi_gcp/dataproc/_inputs.py +190 -46
  179. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +12 -12
  180. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +12 -12
  181. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +12 -12
  182. pulumi_gcp/dataproc/cluster_iam_binding.py +12 -12
  183. pulumi_gcp/dataproc/cluster_iam_member.py +12 -12
  184. pulumi_gcp/dataproc/cluster_iam_policy.py +12 -12
  185. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +26 -2
  186. pulumi_gcp/dataproc/job_iam_binding.py +12 -12
  187. pulumi_gcp/dataproc/job_iam_member.py +12 -12
  188. pulumi_gcp/dataproc/job_iam_policy.py +12 -12
  189. pulumi_gcp/dataproc/metastore_federation.py +4 -0
  190. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +208 -0
  191. pulumi_gcp/dataproc/metastore_federation_iam_member.py +208 -0
  192. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +208 -0
  193. pulumi_gcp/dataproc/metastore_service_iam_binding.py +12 -12
  194. pulumi_gcp/dataproc/metastore_service_iam_member.py +12 -12
  195. pulumi_gcp/dataproc/metastore_service_iam_policy.py +12 -12
  196. pulumi_gcp/dataproc/outputs.py +182 -46
  197. pulumi_gcp/datastream/_inputs.py +1789 -820
  198. pulumi_gcp/datastream/connection_profile.py +163 -3
  199. pulumi_gcp/datastream/outputs.py +864 -5
  200. pulumi_gcp/datastream/stream.py +174 -0
  201. pulumi_gcp/dns/dns_managed_zone_iam_binding.py +12 -12
  202. pulumi_gcp/dns/dns_managed_zone_iam_member.py +12 -12
  203. pulumi_gcp/dns/dns_managed_zone_iam_policy.py +12 -12
  204. pulumi_gcp/endpoints/service_iam_binding.py +12 -12
  205. pulumi_gcp/endpoints/service_iam_member.py +12 -12
  206. pulumi_gcp/endpoints/service_iam_policy.py +12 -12
  207. pulumi_gcp/firestore/field.py +4 -4
  208. pulumi_gcp/folder/iam_audit_config.py +23 -23
  209. pulumi_gcp/folder/iam_member.py +16 -16
  210. pulumi_gcp/folder/iam_policy.py +16 -16
  211. pulumi_gcp/gkebackup/backup_plan_iam_binding.py +12 -12
  212. pulumi_gcp/gkebackup/backup_plan_iam_member.py +12 -12
  213. pulumi_gcp/gkebackup/backup_plan_iam_policy.py +12 -12
  214. pulumi_gcp/gkehub/feature_iam_binding.py +12 -12
  215. pulumi_gcp/gkehub/feature_iam_member.py +12 -12
  216. pulumi_gcp/gkehub/feature_iam_policy.py +12 -12
  217. pulumi_gcp/gkehub/membership_binding.py +6 -6
  218. pulumi_gcp/gkehub/membership_iam_binding.py +12 -12
  219. pulumi_gcp/gkehub/membership_iam_member.py +12 -12
  220. pulumi_gcp/gkehub/membership_iam_policy.py +12 -12
  221. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  222. pulumi_gcp/gkehub/namespace.py +4 -4
  223. pulumi_gcp/gkehub/scope_iam_binding.py +12 -12
  224. pulumi_gcp/gkehub/scope_iam_member.py +12 -12
  225. pulumi_gcp/gkehub/scope_iam_policy.py +12 -12
  226. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  227. pulumi_gcp/healthcare/consent_store_iam_binding.py +12 -12
  228. pulumi_gcp/healthcare/consent_store_iam_member.py +12 -12
  229. pulumi_gcp/healthcare/consent_store_iam_policy.py +12 -12
  230. pulumi_gcp/healthcare/dataset_iam_binding.py +12 -12
  231. pulumi_gcp/healthcare/dataset_iam_member.py +12 -12
  232. pulumi_gcp/healthcare/dataset_iam_policy.py +12 -12
  233. pulumi_gcp/healthcare/dicom_store_iam_binding.py +12 -12
  234. pulumi_gcp/healthcare/dicom_store_iam_member.py +12 -12
  235. pulumi_gcp/healthcare/dicom_store_iam_policy.py +12 -12
  236. pulumi_gcp/healthcare/fhir_store_iam_binding.py +12 -12
  237. pulumi_gcp/healthcare/fhir_store_iam_member.py +12 -12
  238. pulumi_gcp/healthcare/fhir_store_iam_policy.py +12 -12
  239. pulumi_gcp/healthcare/hl7_store_iam_binding.py +12 -12
  240. pulumi_gcp/healthcare/hl7_store_iam_member.py +12 -12
  241. pulumi_gcp/healthcare/hl7_store_iam_policy.py +12 -12
  242. pulumi_gcp/iam/_inputs.py +191 -2
  243. pulumi_gcp/iam/outputs.py +197 -2
  244. pulumi_gcp/iam/workforce_pool_provider.py +245 -0
  245. pulumi_gcp/iap/app_engine_service_iam_binding.py +12 -12
  246. pulumi_gcp/iap/app_engine_service_iam_member.py +12 -12
  247. pulumi_gcp/iap/app_engine_service_iam_policy.py +12 -12
  248. pulumi_gcp/iap/app_engine_version_iam_binding.py +12 -12
  249. pulumi_gcp/iap/app_engine_version_iam_member.py +12 -12
  250. pulumi_gcp/iap/app_engine_version_iam_policy.py +12 -12
  251. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  252. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +12 -12
  253. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +12 -12
  254. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +12 -12
  255. pulumi_gcp/iap/tunnel_iam_binding.py +12 -12
  256. pulumi_gcp/iap/tunnel_iam_member.py +12 -12
  257. pulumi_gcp/iap/tunnel_iam_policy.py +12 -12
  258. pulumi_gcp/iap/tunnel_instance_iam_binding.py +12 -12
  259. pulumi_gcp/iap/tunnel_instance_iam_member.py +12 -12
  260. pulumi_gcp/iap/tunnel_instance_iam_policy.py +12 -12
  261. pulumi_gcp/iap/web_backend_service_iam_binding.py +12 -12
  262. pulumi_gcp/iap/web_backend_service_iam_member.py +12 -12
  263. pulumi_gcp/iap/web_backend_service_iam_policy.py +12 -12
  264. pulumi_gcp/iap/web_iam_binding.py +12 -12
  265. pulumi_gcp/iap/web_iam_member.py +12 -12
  266. pulumi_gcp/iap/web_iam_policy.py +12 -12
  267. pulumi_gcp/iap/web_region_backend_service_iam_binding.py +12 -12
  268. pulumi_gcp/iap/web_region_backend_service_iam_member.py +12 -12
  269. pulumi_gcp/iap/web_region_backend_service_iam_policy.py +12 -12
  270. pulumi_gcp/iap/web_type_app_enging_iam_binding.py +12 -12
  271. pulumi_gcp/iap/web_type_app_enging_iam_member.py +12 -12
  272. pulumi_gcp/iap/web_type_app_enging_iam_policy.py +12 -12
  273. pulumi_gcp/iap/web_type_compute_iam_binding.py +12 -12
  274. pulumi_gcp/iap/web_type_compute_iam_member.py +12 -12
  275. pulumi_gcp/iap/web_type_compute_iam_policy.py +12 -12
  276. pulumi_gcp/integrationconnectors/__init__.py +1 -0
  277. pulumi_gcp/integrationconnectors/managed_zone.py +753 -0
  278. pulumi_gcp/kms/key_ring_iam_binding.py +12 -12
  279. pulumi_gcp/kms/key_ring_iam_member.py +12 -12
  280. pulumi_gcp/kms/key_ring_iam_policy.py +12 -12
  281. pulumi_gcp/netapp/storage_pool.py +7 -7
  282. pulumi_gcp/netapp/volume.py +4 -4
  283. pulumi_gcp/networkconnectivity/__init__.py +1 -0
  284. pulumi_gcp/networkconnectivity/regional_endpoint.py +946 -0
  285. pulumi_gcp/networksecurity/firewall_endpoint.py +34 -0
  286. pulumi_gcp/networksecurity/firewall_endpoint_association.py +24 -0
  287. pulumi_gcp/networksecurity/gateway_security_policy.py +4 -4
  288. pulumi_gcp/networksecurity/security_profile.py +16 -0
  289. pulumi_gcp/networksecurity/security_profile_group.py +18 -0
  290. pulumi_gcp/networksecurity/tls_inspection_policy.py +435 -5
  291. pulumi_gcp/networkservices/__init__.py +1 -0
  292. pulumi_gcp/networkservices/_inputs.py +254 -0
  293. pulumi_gcp/networkservices/lb_traffic_extension.py +1181 -0
  294. pulumi_gcp/networkservices/outputs.py +265 -0
  295. pulumi_gcp/notebooks/instance_iam_binding.py +12 -12
  296. pulumi_gcp/notebooks/instance_iam_member.py +12 -12
  297. pulumi_gcp/notebooks/instance_iam_policy.py +12 -12
  298. pulumi_gcp/notebooks/runtime_iam_binding.py +12 -12
  299. pulumi_gcp/notebooks/runtime_iam_member.py +12 -12
  300. pulumi_gcp/notebooks/runtime_iam_policy.py +12 -12
  301. pulumi_gcp/organizations/_inputs.py +10 -0
  302. pulumi_gcp/organizations/iam_member.py +16 -16
  303. pulumi_gcp/organizations/iam_policy.py +16 -16
  304. pulumi_gcp/organizations/outputs.py +10 -0
  305. pulumi_gcp/orgpolicy/policy.py +2 -2
  306. pulumi_gcp/projects/iam_audit_config.py +23 -23
  307. pulumi_gcp/projects/iam_binding.py +23 -23
  308. pulumi_gcp/projects/iam_member.py +23 -23
  309. pulumi_gcp/projects/iam_policy.py +16 -16
  310. pulumi_gcp/projects/service.py +2 -43
  311. pulumi_gcp/pubsub/schema_iam_binding.py +12 -12
  312. pulumi_gcp/pubsub/schema_iam_member.py +12 -12
  313. pulumi_gcp/pubsub/schema_iam_policy.py +12 -12
  314. pulumi_gcp/pubsub/subscription.py +4 -4
  315. pulumi_gcp/pubsub/subscription_iam_binding.py +12 -12
  316. pulumi_gcp/pubsub/subscription_iam_member.py +12 -12
  317. pulumi_gcp/pubsub/subscription_iam_policy.py +12 -12
  318. pulumi_gcp/pubsub/topic_iam_binding.py +12 -12
  319. pulumi_gcp/pubsub/topic_iam_member.py +12 -12
  320. pulumi_gcp/pubsub/topic_iam_policy.py +12 -12
  321. pulumi_gcp/pulumi-plugin.json +1 -1
  322. pulumi_gcp/secretmanager/secret_iam_binding.py +12 -12
  323. pulumi_gcp/secretmanager/secret_iam_member.py +12 -12
  324. pulumi_gcp/secretmanager/secret_iam_policy.py +12 -12
  325. pulumi_gcp/servicedirectory/namespace_iam_binding.py +8 -8
  326. pulumi_gcp/servicedirectory/namespace_iam_member.py +8 -8
  327. pulumi_gcp/servicedirectory/namespace_iam_policy.py +8 -8
  328. pulumi_gcp/servicedirectory/service_iam_binding.py +8 -8
  329. pulumi_gcp/servicedirectory/service_iam_member.py +8 -8
  330. pulumi_gcp/servicedirectory/service_iam_policy.py +8 -8
  331. pulumi_gcp/sourcerepo/repository_iam_binding.py +12 -12
  332. pulumi_gcp/sourcerepo/repository_iam_member.py +12 -12
  333. pulumi_gcp/sourcerepo/repository_iam_policy.py +12 -12
  334. pulumi_gcp/spanner/database_iam_binding.py +12 -12
  335. pulumi_gcp/spanner/database_iam_member.py +12 -12
  336. pulumi_gcp/spanner/database_iam_policy.py +12 -12
  337. pulumi_gcp/spanner/instance_iam_binding.py +12 -12
  338. pulumi_gcp/spanner/instance_iam_member.py +12 -12
  339. pulumi_gcp/spanner/instance_iam_policy.py +12 -12
  340. pulumi_gcp/storage/_inputs.py +12 -10
  341. pulumi_gcp/storage/bucket.py +44 -0
  342. pulumi_gcp/storage/bucket_iam_binding.py +12 -12
  343. pulumi_gcp/storage/bucket_iam_member.py +12 -12
  344. pulumi_gcp/storage/bucket_iam_policy.py +12 -12
  345. pulumi_gcp/storage/outputs.py +12 -10
  346. pulumi_gcp/tags/tag_key_iam_binding.py +12 -12
  347. pulumi_gcp/tags/tag_key_iam_member.py +12 -12
  348. pulumi_gcp/tags/tag_key_iam_policy.py +12 -12
  349. pulumi_gcp/tags/tag_value_iam_binding.py +12 -12
  350. pulumi_gcp/tags/tag_value_iam_member.py +12 -12
  351. pulumi_gcp/tags/tag_value_iam_policy.py +12 -12
  352. {pulumi_gcp-7.23.0a1715695885.dist-info → pulumi_gcp-7.24.0.dist-info}/METADATA +1 -1
  353. {pulumi_gcp-7.23.0a1715695885.dist-info → pulumi_gcp-7.24.0.dist-info}/RECORD +355 -349
  354. {pulumi_gcp-7.23.0a1715695885.dist-info → pulumi_gcp-7.24.0.dist-info}/WHEEL +0 -0
  355. {pulumi_gcp-7.23.0a1715695885.dist-info → pulumi_gcp-7.24.0.dist-info}/top_level.txt +0 -0
@@ -182,6 +182,10 @@ __all__ = [
182
182
  'InstanceTemplateServiceAccount',
183
183
  'InstanceTemplateShieldedInstanceConfig',
184
184
  'InterconnectAttachmentPrivateInterconnectInfo',
185
+ 'InterconnectCircuitInfo',
186
+ 'InterconnectExpectedOutage',
187
+ 'InterconnectMacsec',
188
+ 'InterconnectMacsecPreSharedKey',
185
189
  'MachineImageIamBindingCondition',
186
190
  'MachineImageIamMemberCondition',
187
191
  'MachineImageMachineImageEncryptionKey',
@@ -310,8 +314,19 @@ __all__ = [
310
314
  'RegionSecurityPolicyDdosProtectionConfig',
311
315
  'RegionSecurityPolicyRuleMatch',
312
316
  'RegionSecurityPolicyRuleMatchConfig',
317
+ 'RegionSecurityPolicyRuleMatchExpr',
313
318
  'RegionSecurityPolicyRuleNetworkMatch',
314
319
  'RegionSecurityPolicyRuleNetworkMatchUserDefinedField',
320
+ 'RegionSecurityPolicyRulePreconfiguredWafConfig',
321
+ 'RegionSecurityPolicyRulePreconfiguredWafConfigExclusion',
322
+ 'RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky',
323
+ 'RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader',
324
+ 'RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam',
325
+ 'RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri',
326
+ 'RegionSecurityPolicyRuleRateLimitOptions',
327
+ 'RegionSecurityPolicyRuleRateLimitOptionsBanThreshold',
328
+ 'RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig',
329
+ 'RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold',
315
330
  'RegionSecurityPolicyUserDefinedField',
316
331
  'RegionUrlMapDefaultRouteAction',
317
332
  'RegionUrlMapDefaultRouteActionCorsPolicy',
@@ -3111,6 +3126,25 @@ class BackendServiceLocalityLbPolicyPolicy(dict):
3111
3126
  Note that specifying the same policy more than once for a backend is
3112
3127
  not a valid configuration and will be rejected.
3113
3128
  The possible values are:
3129
+ * `ROUND_ROBIN`: This is a simple policy in which each healthy backend
3130
+ is selected in round robin order.
3131
+ * `LEAST_REQUEST`: An O(1) algorithm which selects two random healthy
3132
+ hosts and picks the host which has fewer active requests.
3133
+ * `RING_HASH`: The ring/modulo hash load balancer implements consistent
3134
+ hashing to backends. The algorithm has the property that the
3135
+ addition/removal of a host from a set of N hosts only affects
3136
+ 1/N of the requests.
3137
+ * `RANDOM`: The load balancer selects a random healthy host.
3138
+ * `ORIGINAL_DESTINATION`: Backend host is selected based on the client
3139
+ connection metadata, i.e., connections are opened
3140
+ to the same address as the destination address of
3141
+ the incoming connection before the connection
3142
+ was redirected to the load balancer.
3143
+ * `MAGLEV`: used as a drop in replacement for the ring hash load balancer.
3144
+ Maglev is not as stable as ring hash but has faster table lookup
3145
+ build times and host selection times. For more information about
3146
+ Maglev, refer to https://ai.google/research/pubs/pub44824
3147
+ Possible values are: `ROUND_ROBIN`, `LEAST_REQUEST`, `RING_HASH`, `RANDOM`, `ORIGINAL_DESTINATION`, `MAGLEV`.
3114
3148
  """
3115
3149
  pulumi.set(__self__, "name", name)
3116
3150
 
@@ -3126,6 +3160,25 @@ class BackendServiceLocalityLbPolicyPolicy(dict):
3126
3160
  Note that specifying the same policy more than once for a backend is
3127
3161
  not a valid configuration and will be rejected.
3128
3162
  The possible values are:
3163
+ * `ROUND_ROBIN`: This is a simple policy in which each healthy backend
3164
+ is selected in round robin order.
3165
+ * `LEAST_REQUEST`: An O(1) algorithm which selects two random healthy
3166
+ hosts and picks the host which has fewer active requests.
3167
+ * `RING_HASH`: The ring/modulo hash load balancer implements consistent
3168
+ hashing to backends. The algorithm has the property that the
3169
+ addition/removal of a host from a set of N hosts only affects
3170
+ 1/N of the requests.
3171
+ * `RANDOM`: The load balancer selects a random healthy host.
3172
+ * `ORIGINAL_DESTINATION`: Backend host is selected based on the client
3173
+ connection metadata, i.e., connections are opened
3174
+ to the same address as the destination address of
3175
+ the incoming connection before the connection
3176
+ was redirected to the load balancer.
3177
+ * `MAGLEV`: used as a drop in replacement for the ring hash load balancer.
3178
+ Maglev is not as stable as ring hash but has faster table lookup
3179
+ build times and host selection times. For more information about
3180
+ Maglev, refer to https://ai.google/research/pubs/pub44824
3181
+ Possible values are: `ROUND_ROBIN`, `LEAST_REQUEST`, `RING_HASH`, `RANDOM`, `ORIGINAL_DESTINATION`, `MAGLEV`.
3129
3182
  """
3130
3183
  return pulumi.get(self, "name")
3131
3184
 
@@ -4665,6 +4718,15 @@ class HealthCheckGrpcHealthCheck(dict):
4665
4718
  port_name are defined, port takes precedence.
4666
4719
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
4667
4720
  following values:
4721
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
4722
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
4723
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
4724
+ network endpoint is used for health checking. For other backends, the
4725
+ port or named port specified in the Backend Service is used for health
4726
+ checking.
4727
+ If not specified, gRPC health check follows behavior specified in `port` and
4728
+ `portName` fields.
4729
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
4668
4730
  """
4669
4731
  if grpc_service_name is not None:
4670
4732
  pulumi.set(__self__, "grpc_service_name", grpc_service_name)
@@ -4712,6 +4774,15 @@ class HealthCheckGrpcHealthCheck(dict):
4712
4774
  """
4713
4775
  Specifies how port is selected for health checking, can be one of the
4714
4776
  following values:
4777
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
4778
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
4779
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
4780
+ network endpoint is used for health checking. For other backends, the
4781
+ port or named port specified in the Backend Service is used for health
4782
+ checking.
4783
+ If not specified, gRPC health check follows behavior specified in `port` and
4784
+ `portName` fields.
4785
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
4715
4786
  """
4716
4787
  return pulumi.get(self, "port_specification")
4717
4788
 
@@ -4915,6 +4986,15 @@ class HealthCheckHttpHealthCheck(dict):
4915
4986
  port_name are defined, port takes precedence.
4916
4987
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
4917
4988
  following values:
4989
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
4990
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
4991
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
4992
+ network endpoint is used for health checking. For other backends, the
4993
+ port or named port specified in the Backend Service is used for health
4994
+ checking.
4995
+ If not specified, HTTP health check follows behavior specified in `port` and
4996
+ `portName` fields.
4997
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
4918
4998
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
4919
4999
  backend.
4920
5000
  Default value is `NONE`.
@@ -4974,6 +5054,15 @@ class HealthCheckHttpHealthCheck(dict):
4974
5054
  """
4975
5055
  Specifies how port is selected for health checking, can be one of the
4976
5056
  following values:
5057
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5058
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5059
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5060
+ network endpoint is used for health checking. For other backends, the
5061
+ port or named port specified in the Backend Service is used for health
5062
+ checking.
5063
+ If not specified, HTTP health check follows behavior specified in `port` and
5064
+ `portName` fields.
5065
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
4977
5066
  """
4978
5067
  return pulumi.get(self, "port_specification")
4979
5068
 
@@ -5051,6 +5140,15 @@ class HealthCheckHttpsHealthCheck(dict):
5051
5140
  port_name are defined, port takes precedence.
5052
5141
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
5053
5142
  following values:
5143
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5144
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5145
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5146
+ network endpoint is used for health checking. For other backends, the
5147
+ port or named port specified in the Backend Service is used for health
5148
+ checking.
5149
+ If not specified, HTTPS health check follows behavior specified in `port` and
5150
+ `portName` fields.
5151
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5054
5152
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
5055
5153
  backend.
5056
5154
  Default value is `NONE`.
@@ -5110,6 +5208,15 @@ class HealthCheckHttpsHealthCheck(dict):
5110
5208
  """
5111
5209
  Specifies how port is selected for health checking, can be one of the
5112
5210
  following values:
5211
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5212
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5213
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5214
+ network endpoint is used for health checking. For other backends, the
5215
+ port or named port specified in the Backend Service is used for health
5216
+ checking.
5217
+ If not specified, HTTPS health check follows behavior specified in `port` and
5218
+ `portName` fields.
5219
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5113
5220
  """
5114
5221
  return pulumi.get(self, "port_specification")
5115
5222
 
@@ -5202,6 +5309,15 @@ class HealthCheckSslHealthCheck(dict):
5202
5309
  port_name are defined, port takes precedence.
5203
5310
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
5204
5311
  following values:
5312
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5313
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5314
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5315
+ network endpoint is used for health checking. For other backends, the
5316
+ port or named port specified in the Backend Service is used for health
5317
+ checking.
5318
+ If not specified, HTTP2 health check follows behavior specified in `port` and
5319
+ `portName` fields.
5320
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5205
5321
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
5206
5322
  backend.
5207
5323
  Default value is `NONE`.
@@ -5251,6 +5367,15 @@ class HealthCheckSslHealthCheck(dict):
5251
5367
  """
5252
5368
  Specifies how port is selected for health checking, can be one of the
5253
5369
  following values:
5370
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5371
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5372
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5373
+ network endpoint is used for health checking. For other backends, the
5374
+ port or named port specified in the Backend Service is used for health
5375
+ checking.
5376
+ If not specified, HTTP2 health check follows behavior specified in `port` and
5377
+ `portName` fields.
5378
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5254
5379
  """
5255
5380
  return pulumi.get(self, "port_specification")
5256
5381
 
@@ -5324,6 +5449,15 @@ class HealthCheckTcpHealthCheck(dict):
5324
5449
  port_name are defined, port takes precedence.
5325
5450
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
5326
5451
  following values:
5452
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5453
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5454
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5455
+ network endpoint is used for health checking. For other backends, the
5456
+ port or named port specified in the Backend Service is used for health
5457
+ checking.
5458
+ If not specified, TCP health check follows behavior specified in `port` and
5459
+ `portName` fields.
5460
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5327
5461
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
5328
5462
  backend.
5329
5463
  Default value is `NONE`.
@@ -5373,6 +5507,15 @@ class HealthCheckTcpHealthCheck(dict):
5373
5507
  """
5374
5508
  Specifies how port is selected for health checking, can be one of the
5375
5509
  following values:
5510
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
5511
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
5512
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
5513
+ network endpoint is used for health checking. For other backends, the
5514
+ port or named port specified in the Backend Service is used for health
5515
+ checking.
5516
+ If not specified, TCP health check follows behavior specified in `port` and
5517
+ `portName` fields.
5518
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
5376
5519
  """
5377
5520
  return pulumi.get(self, "port_specification")
5378
5521
 
@@ -13175,6 +13318,382 @@ class InterconnectAttachmentPrivateInterconnectInfo(dict):
13175
13318
  return pulumi.get(self, "tag8021q")
13176
13319
 
13177
13320
 
13321
+ @pulumi.output_type
13322
+ class InterconnectCircuitInfo(dict):
13323
+ @staticmethod
13324
+ def __key_warning(key: str):
13325
+ suggest = None
13326
+ if key == "customerDemarcId":
13327
+ suggest = "customer_demarc_id"
13328
+ elif key == "googleCircuitId":
13329
+ suggest = "google_circuit_id"
13330
+ elif key == "googleDemarcId":
13331
+ suggest = "google_demarc_id"
13332
+
13333
+ if suggest:
13334
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectCircuitInfo. Access the value via the '{suggest}' property getter instead.")
13335
+
13336
+ def __getitem__(self, key: str) -> Any:
13337
+ InterconnectCircuitInfo.__key_warning(key)
13338
+ return super().__getitem__(key)
13339
+
13340
+ def get(self, key: str, default = None) -> Any:
13341
+ InterconnectCircuitInfo.__key_warning(key)
13342
+ return super().get(key, default)
13343
+
13344
+ def __init__(__self__, *,
13345
+ customer_demarc_id: Optional[str] = None,
13346
+ google_circuit_id: Optional[str] = None,
13347
+ google_demarc_id: Optional[str] = None):
13348
+ """
13349
+ :param str customer_demarc_id: (Output)
13350
+ Customer-side demarc ID for this circuit.
13351
+ :param str google_circuit_id: (Output)
13352
+ Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
13353
+ :param str google_demarc_id: (Output)
13354
+ Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by
13355
+ Google to the customer in the LOA.
13356
+ """
13357
+ if customer_demarc_id is not None:
13358
+ pulumi.set(__self__, "customer_demarc_id", customer_demarc_id)
13359
+ if google_circuit_id is not None:
13360
+ pulumi.set(__self__, "google_circuit_id", google_circuit_id)
13361
+ if google_demarc_id is not None:
13362
+ pulumi.set(__self__, "google_demarc_id", google_demarc_id)
13363
+
13364
+ @property
13365
+ @pulumi.getter(name="customerDemarcId")
13366
+ def customer_demarc_id(self) -> Optional[str]:
13367
+ """
13368
+ (Output)
13369
+ Customer-side demarc ID for this circuit.
13370
+ """
13371
+ return pulumi.get(self, "customer_demarc_id")
13372
+
13373
+ @property
13374
+ @pulumi.getter(name="googleCircuitId")
13375
+ def google_circuit_id(self) -> Optional[str]:
13376
+ """
13377
+ (Output)
13378
+ Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
13379
+ """
13380
+ return pulumi.get(self, "google_circuit_id")
13381
+
13382
+ @property
13383
+ @pulumi.getter(name="googleDemarcId")
13384
+ def google_demarc_id(self) -> Optional[str]:
13385
+ """
13386
+ (Output)
13387
+ Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by
13388
+ Google to the customer in the LOA.
13389
+ """
13390
+ return pulumi.get(self, "google_demarc_id")
13391
+
13392
+
13393
+ @pulumi.output_type
13394
+ class InterconnectExpectedOutage(dict):
13395
+ @staticmethod
13396
+ def __key_warning(key: str):
13397
+ suggest = None
13398
+ if key == "affectedCircuits":
13399
+ suggest = "affected_circuits"
13400
+ elif key == "endTime":
13401
+ suggest = "end_time"
13402
+ elif key == "issueType":
13403
+ suggest = "issue_type"
13404
+ elif key == "startTime":
13405
+ suggest = "start_time"
13406
+
13407
+ if suggest:
13408
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectExpectedOutage. Access the value via the '{suggest}' property getter instead.")
13409
+
13410
+ def __getitem__(self, key: str) -> Any:
13411
+ InterconnectExpectedOutage.__key_warning(key)
13412
+ return super().__getitem__(key)
13413
+
13414
+ def get(self, key: str, default = None) -> Any:
13415
+ InterconnectExpectedOutage.__key_warning(key)
13416
+ return super().get(key, default)
13417
+
13418
+ def __init__(__self__, *,
13419
+ affected_circuits: Optional[Sequence[str]] = None,
13420
+ description: Optional[str] = None,
13421
+ end_time: Optional[str] = None,
13422
+ issue_type: Optional[str] = None,
13423
+ name: Optional[str] = None,
13424
+ source: Optional[str] = None,
13425
+ start_time: Optional[str] = None,
13426
+ state: Optional[str] = None):
13427
+ """
13428
+ :param Sequence[str] affected_circuits: (Output)
13429
+ If issueType is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be
13430
+ affected.
13431
+ :param str description: An optional description of this resource. Provide this property when you create the resource.
13432
+ :param str end_time: (Output)
13433
+ Scheduled end time for the outage (milliseconds since Unix epoch).
13434
+ :param str issue_type: (Output)
13435
+ Form this outage is expected to take. Note that the versions of this enum prefixed with
13436
+ "IT_" have been deprecated in favor of the unprefixed values. Can take one of the
13437
+ following values:
13438
+ - OUTAGE: The Interconnect may be completely out of service for some or all of the
13439
+ specified window.
13440
+ - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain
13441
+ up, but with reduced bandwidth.
13442
+ :param str name: Name of the resource. Provided by the client when the resource is created. The name must be
13443
+ 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters
13444
+ long and match the regular expression `a-z?` which means the first
13445
+ character must be a lowercase letter, and all following characters must be a dash,
13446
+ lowercase letter, or digit, except the last character, which cannot be a dash.
13447
+ :param str source: (Output)
13448
+ The party that generated this notification. Note that the value of NSRC_GOOGLE has been
13449
+ deprecated in favor of GOOGLE. Can take the following value:
13450
+ - GOOGLE: this notification as generated by Google.
13451
+ :param str start_time: (Output)
13452
+ Scheduled start time for the outage (milliseconds since Unix epoch).
13453
+ :param str state: (Output)
13454
+ State of this notification. Note that the versions of this enum prefixed with "NS_" have
13455
+ been deprecated in favor of the unprefixed values. Can take one of the following values:
13456
+ - ACTIVE: This outage notification is active. The event could be in the past, present,
13457
+ or future. See startTime and endTime for scheduling.
13458
+ - CANCELLED: The outage associated with this notification was cancelled before the
13459
+ outage was due to start.
13460
+ - COMPLETED: The outage associated with this notification is complete.
13461
+ """
13462
+ if affected_circuits is not None:
13463
+ pulumi.set(__self__, "affected_circuits", affected_circuits)
13464
+ if description is not None:
13465
+ pulumi.set(__self__, "description", description)
13466
+ if end_time is not None:
13467
+ pulumi.set(__self__, "end_time", end_time)
13468
+ if issue_type is not None:
13469
+ pulumi.set(__self__, "issue_type", issue_type)
13470
+ if name is not None:
13471
+ pulumi.set(__self__, "name", name)
13472
+ if source is not None:
13473
+ pulumi.set(__self__, "source", source)
13474
+ if start_time is not None:
13475
+ pulumi.set(__self__, "start_time", start_time)
13476
+ if state is not None:
13477
+ pulumi.set(__self__, "state", state)
13478
+
13479
+ @property
13480
+ @pulumi.getter(name="affectedCircuits")
13481
+ def affected_circuits(self) -> Optional[Sequence[str]]:
13482
+ """
13483
+ (Output)
13484
+ If issueType is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be
13485
+ affected.
13486
+ """
13487
+ return pulumi.get(self, "affected_circuits")
13488
+
13489
+ @property
13490
+ @pulumi.getter
13491
+ def description(self) -> Optional[str]:
13492
+ """
13493
+ An optional description of this resource. Provide this property when you create the resource.
13494
+ """
13495
+ return pulumi.get(self, "description")
13496
+
13497
+ @property
13498
+ @pulumi.getter(name="endTime")
13499
+ def end_time(self) -> Optional[str]:
13500
+ """
13501
+ (Output)
13502
+ Scheduled end time for the outage (milliseconds since Unix epoch).
13503
+ """
13504
+ return pulumi.get(self, "end_time")
13505
+
13506
+ @property
13507
+ @pulumi.getter(name="issueType")
13508
+ def issue_type(self) -> Optional[str]:
13509
+ """
13510
+ (Output)
13511
+ Form this outage is expected to take. Note that the versions of this enum prefixed with
13512
+ "IT_" have been deprecated in favor of the unprefixed values. Can take one of the
13513
+ following values:
13514
+ - OUTAGE: The Interconnect may be completely out of service for some or all of the
13515
+ specified window.
13516
+ - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain
13517
+ up, but with reduced bandwidth.
13518
+ """
13519
+ return pulumi.get(self, "issue_type")
13520
+
13521
+ @property
13522
+ @pulumi.getter
13523
+ def name(self) -> Optional[str]:
13524
+ """
13525
+ Name of the resource. Provided by the client when the resource is created. The name must be
13526
+ 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters
13527
+ long and match the regular expression `a-z?` which means the first
13528
+ character must be a lowercase letter, and all following characters must be a dash,
13529
+ lowercase letter, or digit, except the last character, which cannot be a dash.
13530
+ """
13531
+ return pulumi.get(self, "name")
13532
+
13533
+ @property
13534
+ @pulumi.getter
13535
+ def source(self) -> Optional[str]:
13536
+ """
13537
+ (Output)
13538
+ The party that generated this notification. Note that the value of NSRC_GOOGLE has been
13539
+ deprecated in favor of GOOGLE. Can take the following value:
13540
+ - GOOGLE: this notification as generated by Google.
13541
+ """
13542
+ return pulumi.get(self, "source")
13543
+
13544
+ @property
13545
+ @pulumi.getter(name="startTime")
13546
+ def start_time(self) -> Optional[str]:
13547
+ """
13548
+ (Output)
13549
+ Scheduled start time for the outage (milliseconds since Unix epoch).
13550
+ """
13551
+ return pulumi.get(self, "start_time")
13552
+
13553
+ @property
13554
+ @pulumi.getter
13555
+ def state(self) -> Optional[str]:
13556
+ """
13557
+ (Output)
13558
+ State of this notification. Note that the versions of this enum prefixed with "NS_" have
13559
+ been deprecated in favor of the unprefixed values. Can take one of the following values:
13560
+ - ACTIVE: This outage notification is active. The event could be in the past, present,
13561
+ or future. See startTime and endTime for scheduling.
13562
+ - CANCELLED: The outage associated with this notification was cancelled before the
13563
+ outage was due to start.
13564
+ - COMPLETED: The outage associated with this notification is complete.
13565
+ """
13566
+ return pulumi.get(self, "state")
13567
+
13568
+
13569
+ @pulumi.output_type
13570
+ class InterconnectMacsec(dict):
13571
+ @staticmethod
13572
+ def __key_warning(key: str):
13573
+ suggest = None
13574
+ if key == "preSharedKeys":
13575
+ suggest = "pre_shared_keys"
13576
+
13577
+ if suggest:
13578
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectMacsec. Access the value via the '{suggest}' property getter instead.")
13579
+
13580
+ def __getitem__(self, key: str) -> Any:
13581
+ InterconnectMacsec.__key_warning(key)
13582
+ return super().__getitem__(key)
13583
+
13584
+ def get(self, key: str, default = None) -> Any:
13585
+ InterconnectMacsec.__key_warning(key)
13586
+ return super().get(key, default)
13587
+
13588
+ def __init__(__self__, *,
13589
+ pre_shared_keys: Sequence['outputs.InterconnectMacsecPreSharedKey']):
13590
+ """
13591
+ :param Sequence['InterconnectMacsecPreSharedKeyArgs'] pre_shared_keys: A keychain placeholder describing a set of named key objects along with their
13592
+ start times. A MACsec CKN/CAK is generated for each key in the key chain.
13593
+ Google router automatically picks the key with the most recent startTime when establishing
13594
+ or re-establishing a MACsec secure link.
13595
+ Structure is documented below.
13596
+ """
13597
+ pulumi.set(__self__, "pre_shared_keys", pre_shared_keys)
13598
+
13599
+ @property
13600
+ @pulumi.getter(name="preSharedKeys")
13601
+ def pre_shared_keys(self) -> Sequence['outputs.InterconnectMacsecPreSharedKey']:
13602
+ """
13603
+ A keychain placeholder describing a set of named key objects along with their
13604
+ start times. A MACsec CKN/CAK is generated for each key in the key chain.
13605
+ Google router automatically picks the key with the most recent startTime when establishing
13606
+ or re-establishing a MACsec secure link.
13607
+ Structure is documented below.
13608
+ """
13609
+ return pulumi.get(self, "pre_shared_keys")
13610
+
13611
+
13612
+ @pulumi.output_type
13613
+ class InterconnectMacsecPreSharedKey(dict):
13614
+ @staticmethod
13615
+ def __key_warning(key: str):
13616
+ suggest = None
13617
+ if key == "failOpen":
13618
+ suggest = "fail_open"
13619
+ elif key == "startTime":
13620
+ suggest = "start_time"
13621
+
13622
+ if suggest:
13623
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectMacsecPreSharedKey. Access the value via the '{suggest}' property getter instead.")
13624
+
13625
+ def __getitem__(self, key: str) -> Any:
13626
+ InterconnectMacsecPreSharedKey.__key_warning(key)
13627
+ return super().__getitem__(key)
13628
+
13629
+ def get(self, key: str, default = None) -> Any:
13630
+ InterconnectMacsecPreSharedKey.__key_warning(key)
13631
+ return super().get(key, default)
13632
+
13633
+ def __init__(__self__, *,
13634
+ name: str,
13635
+ fail_open: Optional[bool] = None,
13636
+ start_time: Optional[str] = None):
13637
+ """
13638
+ :param str name: A name for this pre-shared key. The name must be 1-63 characters long, and
13639
+ comply with RFC1035. Specifically, the name must be 1-63 characters long and match
13640
+ the regular expression `a-z?` which means the first character
13641
+ must be a lowercase letter, and all following characters must be a dash, lowercase
13642
+ letter, or digit, except the last character, which cannot be a dash.
13643
+ :param bool fail_open: If set to true, the Interconnect connection is configured with a should-secure
13644
+ MACsec security policy, that allows the Google router to fallback to cleartext
13645
+ traffic if the MKA session cannot be established. By default, the Interconnect
13646
+ connection is configured with a must-secure security policy that drops all traffic
13647
+ if the MKA session cannot be established with your router.
13648
+ :param str start_time: A RFC3339 timestamp on or after which the key is valid. startTime can be in the
13649
+ future. If the keychain has a single key, startTime can be omitted. If the keychain
13650
+ has multiple keys, startTime is mandatory for each key. The start times of keys must
13651
+ be in increasing order. The start times of two consecutive keys must be at least 6
13652
+ hours apart.
13653
+ """
13654
+ pulumi.set(__self__, "name", name)
13655
+ if fail_open is not None:
13656
+ pulumi.set(__self__, "fail_open", fail_open)
13657
+ if start_time is not None:
13658
+ pulumi.set(__self__, "start_time", start_time)
13659
+
13660
+ @property
13661
+ @pulumi.getter
13662
+ def name(self) -> str:
13663
+ """
13664
+ A name for this pre-shared key. The name must be 1-63 characters long, and
13665
+ comply with RFC1035. Specifically, the name must be 1-63 characters long and match
13666
+ the regular expression `a-z?` which means the first character
13667
+ must be a lowercase letter, and all following characters must be a dash, lowercase
13668
+ letter, or digit, except the last character, which cannot be a dash.
13669
+ """
13670
+ return pulumi.get(self, "name")
13671
+
13672
+ @property
13673
+ @pulumi.getter(name="failOpen")
13674
+ def fail_open(self) -> Optional[bool]:
13675
+ """
13676
+ If set to true, the Interconnect connection is configured with a should-secure
13677
+ MACsec security policy, that allows the Google router to fallback to cleartext
13678
+ traffic if the MKA session cannot be established. By default, the Interconnect
13679
+ connection is configured with a must-secure security policy that drops all traffic
13680
+ if the MKA session cannot be established with your router.
13681
+ """
13682
+ return pulumi.get(self, "fail_open")
13683
+
13684
+ @property
13685
+ @pulumi.getter(name="startTime")
13686
+ def start_time(self) -> Optional[str]:
13687
+ """
13688
+ A RFC3339 timestamp on or after which the key is valid. startTime can be in the
13689
+ future. If the keychain has a single key, startTime can be omitted. If the keychain
13690
+ has multiple keys, startTime is mandatory for each key. The start times of keys must
13691
+ be in increasing order. The start times of two consecutive keys must be at least 6
13692
+ hours apart.
13693
+ """
13694
+ return pulumi.get(self, "start_time")
13695
+
13696
+
13178
13697
  @pulumi.output_type
13179
13698
  class MachineImageIamBindingCondition(dict):
13180
13699
  def __init__(__self__, *,
@@ -17787,6 +18306,15 @@ class RegionHealthCheckGrpcHealthCheck(dict):
17787
18306
  port_name are defined, port takes precedence.
17788
18307
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
17789
18308
  following values:
18309
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18310
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18311
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18312
+ network endpoint is used for health checking. For other backends, the
18313
+ port or named port specified in the Backend Service is used for health
18314
+ checking.
18315
+ If not specified, gRPC health check follows behavior specified in `port` and
18316
+ `portName` fields.
18317
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
17790
18318
  """
17791
18319
  if grpc_service_name is not None:
17792
18320
  pulumi.set(__self__, "grpc_service_name", grpc_service_name)
@@ -17834,6 +18362,15 @@ class RegionHealthCheckGrpcHealthCheck(dict):
17834
18362
  """
17835
18363
  Specifies how port is selected for health checking, can be one of the
17836
18364
  following values:
18365
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18366
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18367
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18368
+ network endpoint is used for health checking. For other backends, the
18369
+ port or named port specified in the Backend Service is used for health
18370
+ checking.
18371
+ If not specified, gRPC health check follows behavior specified in `port` and
18372
+ `portName` fields.
18373
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
17837
18374
  """
17838
18375
  return pulumi.get(self, "port_specification")
17839
18376
 
@@ -18037,6 +18574,15 @@ class RegionHealthCheckHttpHealthCheck(dict):
18037
18574
  port_name are defined, port takes precedence.
18038
18575
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
18039
18576
  following values:
18577
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18578
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18579
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18580
+ network endpoint is used for health checking. For other backends, the
18581
+ port or named port specified in the Backend Service is used for health
18582
+ checking.
18583
+ If not specified, HTTP health check follows behavior specified in `port` and
18584
+ `portName` fields.
18585
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18040
18586
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
18041
18587
  backend.
18042
18588
  Default value is `NONE`.
@@ -18096,6 +18642,15 @@ class RegionHealthCheckHttpHealthCheck(dict):
18096
18642
  """
18097
18643
  Specifies how port is selected for health checking, can be one of the
18098
18644
  following values:
18645
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18646
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18647
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18648
+ network endpoint is used for health checking. For other backends, the
18649
+ port or named port specified in the Backend Service is used for health
18650
+ checking.
18651
+ If not specified, HTTP health check follows behavior specified in `port` and
18652
+ `portName` fields.
18653
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18099
18654
  """
18100
18655
  return pulumi.get(self, "port_specification")
18101
18656
 
@@ -18173,6 +18728,15 @@ class RegionHealthCheckHttpsHealthCheck(dict):
18173
18728
  port_name are defined, port takes precedence.
18174
18729
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
18175
18730
  following values:
18731
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18732
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18733
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18734
+ network endpoint is used for health checking. For other backends, the
18735
+ port or named port specified in the Backend Service is used for health
18736
+ checking.
18737
+ If not specified, HTTPS health check follows behavior specified in `port` and
18738
+ `portName` fields.
18739
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18176
18740
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
18177
18741
  backend.
18178
18742
  Default value is `NONE`.
@@ -18232,6 +18796,15 @@ class RegionHealthCheckHttpsHealthCheck(dict):
18232
18796
  """
18233
18797
  Specifies how port is selected for health checking, can be one of the
18234
18798
  following values:
18799
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18800
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18801
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18802
+ network endpoint is used for health checking. For other backends, the
18803
+ port or named port specified in the Backend Service is used for health
18804
+ checking.
18805
+ If not specified, HTTPS health check follows behavior specified in `port` and
18806
+ `portName` fields.
18807
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18235
18808
  """
18236
18809
  return pulumi.get(self, "port_specification")
18237
18810
 
@@ -18324,6 +18897,15 @@ class RegionHealthCheckSslHealthCheck(dict):
18324
18897
  port_name are defined, port takes precedence.
18325
18898
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
18326
18899
  following values:
18900
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18901
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18902
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18903
+ network endpoint is used for health checking. For other backends, the
18904
+ port or named port specified in the Backend Service is used for health
18905
+ checking.
18906
+ If not specified, HTTP2 health check follows behavior specified in `port` and
18907
+ `portName` fields.
18908
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18327
18909
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
18328
18910
  backend.
18329
18911
  Default value is `NONE`.
@@ -18373,6 +18955,15 @@ class RegionHealthCheckSslHealthCheck(dict):
18373
18955
  """
18374
18956
  Specifies how port is selected for health checking, can be one of the
18375
18957
  following values:
18958
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
18959
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
18960
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
18961
+ network endpoint is used for health checking. For other backends, the
18962
+ port or named port specified in the Backend Service is used for health
18963
+ checking.
18964
+ If not specified, HTTP2 health check follows behavior specified in `port` and
18965
+ `portName` fields.
18966
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18376
18967
  """
18377
18968
  return pulumi.get(self, "port_specification")
18378
18969
 
@@ -18446,6 +19037,15 @@ class RegionHealthCheckTcpHealthCheck(dict):
18446
19037
  port_name are defined, port takes precedence.
18447
19038
  :param str port_specification: Specifies how port is selected for health checking, can be one of the
18448
19039
  following values:
19040
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
19041
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
19042
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
19043
+ network endpoint is used for health checking. For other backends, the
19044
+ port or named port specified in the Backend Service is used for health
19045
+ checking.
19046
+ If not specified, TCP health check follows behavior specified in `port` and
19047
+ `portName` fields.
19048
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18449
19049
  :param str proxy_header: Specifies the type of proxy header to append before sending data to the
18450
19050
  backend.
18451
19051
  Default value is `NONE`.
@@ -18495,6 +19095,15 @@ class RegionHealthCheckTcpHealthCheck(dict):
18495
19095
  """
18496
19096
  Specifies how port is selected for health checking, can be one of the
18497
19097
  following values:
19098
+ * `USE_FIXED_PORT`: The port number in `port` is used for health checking.
19099
+ * `USE_NAMED_PORT`: The `portName` is used for health checking.
19100
+ * `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each
19101
+ network endpoint is used for health checking. For other backends, the
19102
+ port or named port specified in the Backend Service is used for health
19103
+ checking.
19104
+ If not specified, TCP health check follows behavior specified in `port` and
19105
+ `portName` fields.
19106
+ Possible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.
18498
19107
  """
18499
19108
  return pulumi.get(self, "port_specification")
18500
19109
 
@@ -22046,17 +22655,22 @@ class RegionSecurityPolicyRuleMatch(dict):
22046
22655
 
22047
22656
  def __init__(__self__, *,
22048
22657
  config: Optional['outputs.RegionSecurityPolicyRuleMatchConfig'] = None,
22658
+ expr: Optional['outputs.RegionSecurityPolicyRuleMatchExpr'] = None,
22049
22659
  versioned_expr: Optional[str] = None):
22050
22660
  """
22051
22661
  :param 'RegionSecurityPolicyRuleMatchConfigArgs' config: The configuration options available when specifying versionedExpr.
22052
22662
  This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified.
22053
22663
  Structure is documented below.
22664
+ :param 'RegionSecurityPolicyRuleMatchExprArgs' expr: User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.
22665
+ Structure is documented below.
22054
22666
  :param str versioned_expr: Preconfigured versioned expression. If this field is specified, config must also be specified.
22055
22667
  Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.
22056
22668
  Possible values are: `SRC_IPS_V1`.
22057
22669
  """
22058
22670
  if config is not None:
22059
22671
  pulumi.set(__self__, "config", config)
22672
+ if expr is not None:
22673
+ pulumi.set(__self__, "expr", expr)
22060
22674
  if versioned_expr is not None:
22061
22675
  pulumi.set(__self__, "versioned_expr", versioned_expr)
22062
22676
 
@@ -22070,6 +22684,15 @@ class RegionSecurityPolicyRuleMatch(dict):
22070
22684
  """
22071
22685
  return pulumi.get(self, "config")
22072
22686
 
22687
+ @property
22688
+ @pulumi.getter
22689
+ def expr(self) -> Optional['outputs.RegionSecurityPolicyRuleMatchExpr']:
22690
+ """
22691
+ User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.
22692
+ Structure is documented below.
22693
+ """
22694
+ return pulumi.get(self, "expr")
22695
+
22073
22696
  @property
22074
22697
  @pulumi.getter(name="versionedExpr")
22075
22698
  def versioned_expr(self) -> Optional[str]:
@@ -22117,6 +22740,24 @@ class RegionSecurityPolicyRuleMatchConfig(dict):
22117
22740
  return pulumi.get(self, "src_ip_ranges")
22118
22741
 
22119
22742
 
22743
+ @pulumi.output_type
22744
+ class RegionSecurityPolicyRuleMatchExpr(dict):
22745
+ def __init__(__self__, *,
22746
+ expression: str):
22747
+ """
22748
+ :param str expression: Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
22749
+ """
22750
+ pulumi.set(__self__, "expression", expression)
22751
+
22752
+ @property
22753
+ @pulumi.getter
22754
+ def expression(self) -> str:
22755
+ """
22756
+ Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
22757
+ """
22758
+ return pulumi.get(self, "expression")
22759
+
22760
+
22120
22761
  @pulumi.output_type
22121
22762
  class RegionSecurityPolicyRuleNetworkMatch(dict):
22122
22763
  @staticmethod
@@ -22284,6 +22925,680 @@ class RegionSecurityPolicyRuleNetworkMatchUserDefinedField(dict):
22284
22925
  return pulumi.get(self, "values")
22285
22926
 
22286
22927
 
22928
+ @pulumi.output_type
22929
+ class RegionSecurityPolicyRulePreconfiguredWafConfig(dict):
22930
+ def __init__(__self__, *,
22931
+ exclusions: Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusion']] = None):
22932
+ """
22933
+ :param Sequence['RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs'] exclusions: An exclusion to apply during preconfigured WAF evaluation.
22934
+ Structure is documented below.
22935
+ """
22936
+ if exclusions is not None:
22937
+ pulumi.set(__self__, "exclusions", exclusions)
22938
+
22939
+ @property
22940
+ @pulumi.getter
22941
+ def exclusions(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusion']]:
22942
+ """
22943
+ An exclusion to apply during preconfigured WAF evaluation.
22944
+ Structure is documented below.
22945
+ """
22946
+ return pulumi.get(self, "exclusions")
22947
+
22948
+
22949
+ @pulumi.output_type
22950
+ class RegionSecurityPolicyRulePreconfiguredWafConfigExclusion(dict):
22951
+ @staticmethod
22952
+ def __key_warning(key: str):
22953
+ suggest = None
22954
+ if key == "targetRuleSet":
22955
+ suggest = "target_rule_set"
22956
+ elif key == "requestCookies":
22957
+ suggest = "request_cookies"
22958
+ elif key == "requestHeaders":
22959
+ suggest = "request_headers"
22960
+ elif key == "requestQueryParams":
22961
+ suggest = "request_query_params"
22962
+ elif key == "requestUris":
22963
+ suggest = "request_uris"
22964
+ elif key == "targetRuleIds":
22965
+ suggest = "target_rule_ids"
22966
+
22967
+ if suggest:
22968
+ pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRulePreconfiguredWafConfigExclusion. Access the value via the '{suggest}' property getter instead.")
22969
+
22970
+ def __getitem__(self, key: str) -> Any:
22971
+ RegionSecurityPolicyRulePreconfiguredWafConfigExclusion.__key_warning(key)
22972
+ return super().__getitem__(key)
22973
+
22974
+ def get(self, key: str, default = None) -> Any:
22975
+ RegionSecurityPolicyRulePreconfiguredWafConfigExclusion.__key_warning(key)
22976
+ return super().get(key, default)
22977
+
22978
+ def __init__(__self__, *,
22979
+ target_rule_set: str,
22980
+ request_cookies: Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky']] = None,
22981
+ request_headers: Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader']] = None,
22982
+ request_query_params: Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam']] = None,
22983
+ request_uris: Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri']] = None,
22984
+ target_rule_ids: Optional[Sequence[str]] = None):
22985
+ """
22986
+ :param str target_rule_set: Target WAF rule set to apply the preconfigured WAF exclusion.
22987
+ :param Sequence['RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyArgs'] request_cookies: Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.
22988
+ Structure is documented below.
22989
+ :param Sequence['RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderArgs'] request_headers: Request header whose value will be excluded from inspection during preconfigured WAF evaluation.
22990
+ Structure is documented below.
22991
+ :param Sequence['RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs'] request_query_params: Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation.
22992
+ Note that the parameter can be in the query string or in the POST body.
22993
+ Structure is documented below.
22994
+ :param Sequence['RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs'] request_uris: Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation.
22995
+ When specifying this field, the query or fragment part should be excluded.
22996
+ Structure is documented below.
22997
+ :param Sequence[str] target_rule_ids: A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion.
22998
+ If omitted, it refers to all the rule IDs under the WAF rule set.
22999
+ """
23000
+ pulumi.set(__self__, "target_rule_set", target_rule_set)
23001
+ if request_cookies is not None:
23002
+ pulumi.set(__self__, "request_cookies", request_cookies)
23003
+ if request_headers is not None:
23004
+ pulumi.set(__self__, "request_headers", request_headers)
23005
+ if request_query_params is not None:
23006
+ pulumi.set(__self__, "request_query_params", request_query_params)
23007
+ if request_uris is not None:
23008
+ pulumi.set(__self__, "request_uris", request_uris)
23009
+ if target_rule_ids is not None:
23010
+ pulumi.set(__self__, "target_rule_ids", target_rule_ids)
23011
+
23012
+ @property
23013
+ @pulumi.getter(name="targetRuleSet")
23014
+ def target_rule_set(self) -> str:
23015
+ """
23016
+ Target WAF rule set to apply the preconfigured WAF exclusion.
23017
+ """
23018
+ return pulumi.get(self, "target_rule_set")
23019
+
23020
+ @property
23021
+ @pulumi.getter(name="requestCookies")
23022
+ def request_cookies(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky']]:
23023
+ """
23024
+ Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.
23025
+ Structure is documented below.
23026
+ """
23027
+ return pulumi.get(self, "request_cookies")
23028
+
23029
+ @property
23030
+ @pulumi.getter(name="requestHeaders")
23031
+ def request_headers(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader']]:
23032
+ """
23033
+ Request header whose value will be excluded from inspection during preconfigured WAF evaluation.
23034
+ Structure is documented below.
23035
+ """
23036
+ return pulumi.get(self, "request_headers")
23037
+
23038
+ @property
23039
+ @pulumi.getter(name="requestQueryParams")
23040
+ def request_query_params(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam']]:
23041
+ """
23042
+ Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation.
23043
+ Note that the parameter can be in the query string or in the POST body.
23044
+ Structure is documented below.
23045
+ """
23046
+ return pulumi.get(self, "request_query_params")
23047
+
23048
+ @property
23049
+ @pulumi.getter(name="requestUris")
23050
+ def request_uris(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri']]:
23051
+ """
23052
+ Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation.
23053
+ When specifying this field, the query or fragment part should be excluded.
23054
+ Structure is documented below.
23055
+ """
23056
+ return pulumi.get(self, "request_uris")
23057
+
23058
+ @property
23059
+ @pulumi.getter(name="targetRuleIds")
23060
+ def target_rule_ids(self) -> Optional[Sequence[str]]:
23061
+ """
23062
+ A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion.
23063
+ If omitted, it refers to all the rule IDs under the WAF rule set.
23064
+ """
23065
+ return pulumi.get(self, "target_rule_ids")
23066
+
23067
+
23068
+ @pulumi.output_type
23069
+ class RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky(dict):
23070
+ def __init__(__self__, *,
23071
+ operator: str,
23072
+ value: Optional[str] = None):
23073
+ """
23074
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value.
23075
+ Available options:
23076
+ EQUALS: The operator matches if the field value equals the specified value.
23077
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23078
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23079
+ CONTAINS: The operator matches if the field value contains the specified value.
23080
+ EQUALS_ANY: The operator matches if the field value is any value.
23081
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23082
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23083
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23084
+ """
23085
+ pulumi.set(__self__, "operator", operator)
23086
+ if value is not None:
23087
+ pulumi.set(__self__, "value", value)
23088
+
23089
+ @property
23090
+ @pulumi.getter
23091
+ def operator(self) -> str:
23092
+ """
23093
+ You can specify an exact match or a partial match by using a field operator and a field value.
23094
+ Available options:
23095
+ EQUALS: The operator matches if the field value equals the specified value.
23096
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23097
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23098
+ CONTAINS: The operator matches if the field value contains the specified value.
23099
+ EQUALS_ANY: The operator matches if the field value is any value.
23100
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23101
+ """
23102
+ return pulumi.get(self, "operator")
23103
+
23104
+ @property
23105
+ @pulumi.getter
23106
+ def value(self) -> Optional[str]:
23107
+ """
23108
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23109
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23110
+ """
23111
+ return pulumi.get(self, "value")
23112
+
23113
+
23114
+ @pulumi.output_type
23115
+ class RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader(dict):
23116
+ def __init__(__self__, *,
23117
+ operator: str,
23118
+ value: Optional[str] = None):
23119
+ """
23120
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value.
23121
+ Available options:
23122
+ EQUALS: The operator matches if the field value equals the specified value.
23123
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23124
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23125
+ CONTAINS: The operator matches if the field value contains the specified value.
23126
+ EQUALS_ANY: The operator matches if the field value is any value.
23127
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23128
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23129
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23130
+ """
23131
+ pulumi.set(__self__, "operator", operator)
23132
+ if value is not None:
23133
+ pulumi.set(__self__, "value", value)
23134
+
23135
+ @property
23136
+ @pulumi.getter
23137
+ def operator(self) -> str:
23138
+ """
23139
+ You can specify an exact match or a partial match by using a field operator and a field value.
23140
+ Available options:
23141
+ EQUALS: The operator matches if the field value equals the specified value.
23142
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23143
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23144
+ CONTAINS: The operator matches if the field value contains the specified value.
23145
+ EQUALS_ANY: The operator matches if the field value is any value.
23146
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23147
+ """
23148
+ return pulumi.get(self, "operator")
23149
+
23150
+ @property
23151
+ @pulumi.getter
23152
+ def value(self) -> Optional[str]:
23153
+ """
23154
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23155
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23156
+ """
23157
+ return pulumi.get(self, "value")
23158
+
23159
+
23160
+ @pulumi.output_type
23161
+ class RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam(dict):
23162
+ def __init__(__self__, *,
23163
+ operator: str,
23164
+ value: Optional[str] = None):
23165
+ """
23166
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value.
23167
+ Available options:
23168
+ EQUALS: The operator matches if the field value equals the specified value.
23169
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23170
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23171
+ CONTAINS: The operator matches if the field value contains the specified value.
23172
+ EQUALS_ANY: The operator matches if the field value is any value.
23173
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23174
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23175
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23176
+ """
23177
+ pulumi.set(__self__, "operator", operator)
23178
+ if value is not None:
23179
+ pulumi.set(__self__, "value", value)
23180
+
23181
+ @property
23182
+ @pulumi.getter
23183
+ def operator(self) -> str:
23184
+ """
23185
+ You can specify an exact match or a partial match by using a field operator and a field value.
23186
+ Available options:
23187
+ EQUALS: The operator matches if the field value equals the specified value.
23188
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23189
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23190
+ CONTAINS: The operator matches if the field value contains the specified value.
23191
+ EQUALS_ANY: The operator matches if the field value is any value.
23192
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23193
+ """
23194
+ return pulumi.get(self, "operator")
23195
+
23196
+ @property
23197
+ @pulumi.getter
23198
+ def value(self) -> Optional[str]:
23199
+ """
23200
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23201
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23202
+ """
23203
+ return pulumi.get(self, "value")
23204
+
23205
+
23206
+ @pulumi.output_type
23207
+ class RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri(dict):
23208
+ def __init__(__self__, *,
23209
+ operator: str,
23210
+ value: Optional[str] = None):
23211
+ """
23212
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value.
23213
+ Available options:
23214
+ EQUALS: The operator matches if the field value equals the specified value.
23215
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23216
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23217
+ CONTAINS: The operator matches if the field value contains the specified value.
23218
+ EQUALS_ANY: The operator matches if the field value is any value.
23219
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23220
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23221
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23222
+ """
23223
+ pulumi.set(__self__, "operator", operator)
23224
+ if value is not None:
23225
+ pulumi.set(__self__, "value", value)
23226
+
23227
+ @property
23228
+ @pulumi.getter
23229
+ def operator(self) -> str:
23230
+ """
23231
+ You can specify an exact match or a partial match by using a field operator and a field value.
23232
+ Available options:
23233
+ EQUALS: The operator matches if the field value equals the specified value.
23234
+ STARTS_WITH: The operator matches if the field value starts with the specified value.
23235
+ ENDS_WITH: The operator matches if the field value ends with the specified value.
23236
+ CONTAINS: The operator matches if the field value contains the specified value.
23237
+ EQUALS_ANY: The operator matches if the field value is any value.
23238
+ Possible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.
23239
+ """
23240
+ return pulumi.get(self, "operator")
23241
+
23242
+ @property
23243
+ @pulumi.getter
23244
+ def value(self) -> Optional[str]:
23245
+ """
23246
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.
23247
+ The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
23248
+ """
23249
+ return pulumi.get(self, "value")
23250
+
23251
+
23252
+ @pulumi.output_type
23253
+ class RegionSecurityPolicyRuleRateLimitOptions(dict):
23254
+ @staticmethod
23255
+ def __key_warning(key: str):
23256
+ suggest = None
23257
+ if key == "banDurationSec":
23258
+ suggest = "ban_duration_sec"
23259
+ elif key == "banThreshold":
23260
+ suggest = "ban_threshold"
23261
+ elif key == "conformAction":
23262
+ suggest = "conform_action"
23263
+ elif key == "enforceOnKey":
23264
+ suggest = "enforce_on_key"
23265
+ elif key == "enforceOnKeyConfigs":
23266
+ suggest = "enforce_on_key_configs"
23267
+ elif key == "enforceOnKeyName":
23268
+ suggest = "enforce_on_key_name"
23269
+ elif key == "exceedAction":
23270
+ suggest = "exceed_action"
23271
+ elif key == "rateLimitThreshold":
23272
+ suggest = "rate_limit_threshold"
23273
+
23274
+ if suggest:
23275
+ pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleRateLimitOptions. Access the value via the '{suggest}' property getter instead.")
23276
+
23277
+ def __getitem__(self, key: str) -> Any:
23278
+ RegionSecurityPolicyRuleRateLimitOptions.__key_warning(key)
23279
+ return super().__getitem__(key)
23280
+
23281
+ def get(self, key: str, default = None) -> Any:
23282
+ RegionSecurityPolicyRuleRateLimitOptions.__key_warning(key)
23283
+ return super().get(key, default)
23284
+
23285
+ def __init__(__self__, *,
23286
+ ban_duration_sec: Optional[int] = None,
23287
+ ban_threshold: Optional['outputs.RegionSecurityPolicyRuleRateLimitOptionsBanThreshold'] = None,
23288
+ conform_action: Optional[str] = None,
23289
+ enforce_on_key: Optional[str] = None,
23290
+ enforce_on_key_configs: Optional[Sequence['outputs.RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig']] = None,
23291
+ enforce_on_key_name: Optional[str] = None,
23292
+ exceed_action: Optional[str] = None,
23293
+ rate_limit_threshold: Optional['outputs.RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold'] = None):
23294
+ """
23295
+ :param int ban_duration_sec: Can only be specified if the action for the rule is "rate_based_ban".
23296
+ If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
23297
+ :param 'RegionSecurityPolicyRuleRateLimitOptionsBanThresholdArgs' ban_threshold: Can only be specified if the action for the rule is "rate_based_ban".
23298
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
23299
+ Structure is documented below.
23300
+ :param str conform_action: Action to take for requests that are under the configured rate limit threshold.
23301
+ Valid option is "allow" only.
23302
+ :param str enforce_on_key: Determines the key to enforce the rateLimitThreshold on. Possible values are:
23303
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKey" is not configured.
23304
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
23305
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
23306
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
23307
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
23308
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
23309
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
23310
+ * REGION_CODE: The country/region from which the request originates.
23311
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
23312
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
23313
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
23314
+ :param Sequence['RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs'] enforce_on_key_configs: If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.
23315
+ You can specify up to 3 enforceOnKeyConfigs.
23316
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
23317
+ Structure is documented below.
23318
+ :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
23319
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
23320
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
23321
+ :param str exceed_action: Action to take for requests that are above the configured rate limit threshold, to deny with a specified HTTP response code.
23322
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
23323
+ :param 'RegionSecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs' rate_limit_threshold: Threshold at which to begin ratelimiting.
23324
+ Structure is documented below.
23325
+ """
23326
+ if ban_duration_sec is not None:
23327
+ pulumi.set(__self__, "ban_duration_sec", ban_duration_sec)
23328
+ if ban_threshold is not None:
23329
+ pulumi.set(__self__, "ban_threshold", ban_threshold)
23330
+ if conform_action is not None:
23331
+ pulumi.set(__self__, "conform_action", conform_action)
23332
+ if enforce_on_key is not None:
23333
+ pulumi.set(__self__, "enforce_on_key", enforce_on_key)
23334
+ if enforce_on_key_configs is not None:
23335
+ pulumi.set(__self__, "enforce_on_key_configs", enforce_on_key_configs)
23336
+ if enforce_on_key_name is not None:
23337
+ pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
23338
+ if exceed_action is not None:
23339
+ pulumi.set(__self__, "exceed_action", exceed_action)
23340
+ if rate_limit_threshold is not None:
23341
+ pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
23342
+
23343
+ @property
23344
+ @pulumi.getter(name="banDurationSec")
23345
+ def ban_duration_sec(self) -> Optional[int]:
23346
+ """
23347
+ Can only be specified if the action for the rule is "rate_based_ban".
23348
+ If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
23349
+ """
23350
+ return pulumi.get(self, "ban_duration_sec")
23351
+
23352
+ @property
23353
+ @pulumi.getter(name="banThreshold")
23354
+ def ban_threshold(self) -> Optional['outputs.RegionSecurityPolicyRuleRateLimitOptionsBanThreshold']:
23355
+ """
23356
+ Can only be specified if the action for the rule is "rate_based_ban".
23357
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
23358
+ Structure is documented below.
23359
+ """
23360
+ return pulumi.get(self, "ban_threshold")
23361
+
23362
+ @property
23363
+ @pulumi.getter(name="conformAction")
23364
+ def conform_action(self) -> Optional[str]:
23365
+ """
23366
+ Action to take for requests that are under the configured rate limit threshold.
23367
+ Valid option is "allow" only.
23368
+ """
23369
+ return pulumi.get(self, "conform_action")
23370
+
23371
+ @property
23372
+ @pulumi.getter(name="enforceOnKey")
23373
+ def enforce_on_key(self) -> Optional[str]:
23374
+ """
23375
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
23376
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKey" is not configured.
23377
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
23378
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
23379
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
23380
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
23381
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
23382
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
23383
+ * REGION_CODE: The country/region from which the request originates.
23384
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
23385
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
23386
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
23387
+ """
23388
+ return pulumi.get(self, "enforce_on_key")
23389
+
23390
+ @property
23391
+ @pulumi.getter(name="enforceOnKeyConfigs")
23392
+ def enforce_on_key_configs(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig']]:
23393
+ """
23394
+ If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.
23395
+ You can specify up to 3 enforceOnKeyConfigs.
23396
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
23397
+ Structure is documented below.
23398
+ """
23399
+ return pulumi.get(self, "enforce_on_key_configs")
23400
+
23401
+ @property
23402
+ @pulumi.getter(name="enforceOnKeyName")
23403
+ def enforce_on_key_name(self) -> Optional[str]:
23404
+ """
23405
+ Rate limit key name applicable only for the following key types:
23406
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
23407
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
23408
+ """
23409
+ return pulumi.get(self, "enforce_on_key_name")
23410
+
23411
+ @property
23412
+ @pulumi.getter(name="exceedAction")
23413
+ def exceed_action(self) -> Optional[str]:
23414
+ """
23415
+ Action to take for requests that are above the configured rate limit threshold, to deny with a specified HTTP response code.
23416
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
23417
+ """
23418
+ return pulumi.get(self, "exceed_action")
23419
+
23420
+ @property
23421
+ @pulumi.getter(name="rateLimitThreshold")
23422
+ def rate_limit_threshold(self) -> Optional['outputs.RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold']:
23423
+ """
23424
+ Threshold at which to begin ratelimiting.
23425
+ Structure is documented below.
23426
+ """
23427
+ return pulumi.get(self, "rate_limit_threshold")
23428
+
23429
+
23430
+ @pulumi.output_type
23431
+ class RegionSecurityPolicyRuleRateLimitOptionsBanThreshold(dict):
23432
+ @staticmethod
23433
+ def __key_warning(key: str):
23434
+ suggest = None
23435
+ if key == "intervalSec":
23436
+ suggest = "interval_sec"
23437
+
23438
+ if suggest:
23439
+ pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleRateLimitOptionsBanThreshold. Access the value via the '{suggest}' property getter instead.")
23440
+
23441
+ def __getitem__(self, key: str) -> Any:
23442
+ RegionSecurityPolicyRuleRateLimitOptionsBanThreshold.__key_warning(key)
23443
+ return super().__getitem__(key)
23444
+
23445
+ def get(self, key: str, default = None) -> Any:
23446
+ RegionSecurityPolicyRuleRateLimitOptionsBanThreshold.__key_warning(key)
23447
+ return super().get(key, default)
23448
+
23449
+ def __init__(__self__, *,
23450
+ count: Optional[int] = None,
23451
+ interval_sec: Optional[int] = None):
23452
+ """
23453
+ :param int count: Number of HTTP(S) requests for calculating the threshold.
23454
+ :param int interval_sec: Interval over which the threshold is computed.
23455
+ """
23456
+ if count is not None:
23457
+ pulumi.set(__self__, "count", count)
23458
+ if interval_sec is not None:
23459
+ pulumi.set(__self__, "interval_sec", interval_sec)
23460
+
23461
+ @property
23462
+ @pulumi.getter
23463
+ def count(self) -> Optional[int]:
23464
+ """
23465
+ Number of HTTP(S) requests for calculating the threshold.
23466
+ """
23467
+ return pulumi.get(self, "count")
23468
+
23469
+ @property
23470
+ @pulumi.getter(name="intervalSec")
23471
+ def interval_sec(self) -> Optional[int]:
23472
+ """
23473
+ Interval over which the threshold is computed.
23474
+ """
23475
+ return pulumi.get(self, "interval_sec")
23476
+
23477
+
23478
+ @pulumi.output_type
23479
+ class RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
23480
+ @staticmethod
23481
+ def __key_warning(key: str):
23482
+ suggest = None
23483
+ if key == "enforceOnKeyName":
23484
+ suggest = "enforce_on_key_name"
23485
+ elif key == "enforceOnKeyType":
23486
+ suggest = "enforce_on_key_type"
23487
+
23488
+ if suggest:
23489
+ pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig. Access the value via the '{suggest}' property getter instead.")
23490
+
23491
+ def __getitem__(self, key: str) -> Any:
23492
+ RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig.__key_warning(key)
23493
+ return super().__getitem__(key)
23494
+
23495
+ def get(self, key: str, default = None) -> Any:
23496
+ RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig.__key_warning(key)
23497
+ return super().get(key, default)
23498
+
23499
+ def __init__(__self__, *,
23500
+ enforce_on_key_name: Optional[str] = None,
23501
+ enforce_on_key_type: Optional[str] = None):
23502
+ """
23503
+ :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
23504
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
23505
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
23506
+ :param str enforce_on_key_type: Determines the key to enforce the rateLimitThreshold on. Possible values are:
23507
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKeyConfigs" is not configured.
23508
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
23509
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
23510
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
23511
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
23512
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
23513
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
23514
+ * REGION_CODE: The country/region from which the request originates.
23515
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
23516
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
23517
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
23518
+ """
23519
+ if enforce_on_key_name is not None:
23520
+ pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
23521
+ if enforce_on_key_type is not None:
23522
+ pulumi.set(__self__, "enforce_on_key_type", enforce_on_key_type)
23523
+
23524
+ @property
23525
+ @pulumi.getter(name="enforceOnKeyName")
23526
+ def enforce_on_key_name(self) -> Optional[str]:
23527
+ """
23528
+ Rate limit key name applicable only for the following key types:
23529
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
23530
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
23531
+ """
23532
+ return pulumi.get(self, "enforce_on_key_name")
23533
+
23534
+ @property
23535
+ @pulumi.getter(name="enforceOnKeyType")
23536
+ def enforce_on_key_type(self) -> Optional[str]:
23537
+ """
23538
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
23539
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKeyConfigs" is not configured.
23540
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
23541
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
23542
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
23543
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
23544
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
23545
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
23546
+ * REGION_CODE: The country/region from which the request originates.
23547
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
23548
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
23549
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
23550
+ """
23551
+ return pulumi.get(self, "enforce_on_key_type")
23552
+
23553
+
23554
+ @pulumi.output_type
23555
+ class RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold(dict):
23556
+ @staticmethod
23557
+ def __key_warning(key: str):
23558
+ suggest = None
23559
+ if key == "intervalSec":
23560
+ suggest = "interval_sec"
23561
+
23562
+ if suggest:
23563
+ pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold. Access the value via the '{suggest}' property getter instead.")
23564
+
23565
+ def __getitem__(self, key: str) -> Any:
23566
+ RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold.__key_warning(key)
23567
+ return super().__getitem__(key)
23568
+
23569
+ def get(self, key: str, default = None) -> Any:
23570
+ RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold.__key_warning(key)
23571
+ return super().get(key, default)
23572
+
23573
+ def __init__(__self__, *,
23574
+ count: Optional[int] = None,
23575
+ interval_sec: Optional[int] = None):
23576
+ """
23577
+ :param int count: Number of HTTP(S) requests for calculating the threshold.
23578
+ :param int interval_sec: Interval over which the threshold is computed.
23579
+ """
23580
+ if count is not None:
23581
+ pulumi.set(__self__, "count", count)
23582
+ if interval_sec is not None:
23583
+ pulumi.set(__self__, "interval_sec", interval_sec)
23584
+
23585
+ @property
23586
+ @pulumi.getter
23587
+ def count(self) -> Optional[int]:
23588
+ """
23589
+ Number of HTTP(S) requests for calculating the threshold.
23590
+ """
23591
+ return pulumi.get(self, "count")
23592
+
23593
+ @property
23594
+ @pulumi.getter(name="intervalSec")
23595
+ def interval_sec(self) -> Optional[int]:
23596
+ """
23597
+ Interval over which the threshold is computed.
23598
+ """
23599
+ return pulumi.get(self, "interval_sec")
23600
+
23601
+
22287
23602
  @pulumi.output_type
22288
23603
  class RegionSecurityPolicyUserDefinedField(dict):
22289
23604
  def __init__(__self__, *,
@@ -29816,7 +31131,11 @@ class SecurityPolicyAdvancedOptionsConfig(dict):
29816
31131
  :param 'SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs' json_custom_config: Custom configuration to apply the JSON parsing. Only applicable when
29817
31132
  `json_parsing` is set to `STANDARD`. Structure is documented below.
29818
31133
  :param str json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
31134
+ * `DISABLED` - Don't parse JSON payloads in POST bodies.
31135
+ * `STANDARD` - Parse JSON payloads in POST bodies.
29819
31136
  :param str log_level: Log level to use. Defaults to `NORMAL`.
31137
+ * `NORMAL` - Normal log level.
31138
+ * `VERBOSE` - Verbose log level.
29820
31139
  :param Sequence[str] user_ip_request_headers: An optional list of case-insensitive request header names to use for resolving the callers client IP address.
29821
31140
  """
29822
31141
  if json_custom_config is not None:
@@ -29842,6 +31161,8 @@ class SecurityPolicyAdvancedOptionsConfig(dict):
29842
31161
  def json_parsing(self) -> Optional[str]:
29843
31162
  """
29844
31163
  Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
31164
+ * `DISABLED` - Don't parse JSON payloads in POST bodies.
31165
+ * `STANDARD` - Parse JSON payloads in POST bodies.
29845
31166
  """
29846
31167
  return pulumi.get(self, "json_parsing")
29847
31168
 
@@ -29850,6 +31171,8 @@ class SecurityPolicyAdvancedOptionsConfig(dict):
29850
31171
  def log_level(self) -> Optional[str]:
29851
31172
  """
29852
31173
  Log level to use. Defaults to `NORMAL`.
31174
+ * `NORMAL` - Normal log level.
31175
+ * `VERBOSE` - Verbose log level.
29853
31176
  """
29854
31177
  return pulumi.get(self, "log_level")
29855
31178
 
@@ -30659,10 +31982,22 @@ class SecurityPolicyRuleRateLimitOptions(dict):
30659
31982
  If specified, the key will be banned for the configured `ban_duration_sec` when the number of requests that exceed the `rate_limit_threshold` also
30660
31983
  exceed this `ban_threshold`. Structure is documented below.
30661
31984
  :param str enforce_on_key: Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
31985
+
31986
+ * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31987
+ * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31988
+ * `HTTP_HEADER`: The value of the HTTP header whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
31989
+ * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under `X-Forwarded-For` HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
31990
+ * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
31991
+ * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31992
+ * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
31993
+ * `REGION_CODE`: The country/region from which the request originates.
30662
31994
  :param Sequence['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs'] enforce_on_key_configs: If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which rate limit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If `enforce_on_key_configs` is specified, `enforce_on_key` must be set to an empty string. Structure is documented below.
30663
31995
 
30664
31996
  **Note:** To avoid the conflict between `enforce_on_key` and `enforce_on_key_configs`, the field `enforce_on_key` needs to be set to an empty string.
30665
31997
  :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
31998
+
31999
+ * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32000
+ * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30666
32001
  :param 'SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs' exceed_redirect_options: Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
30667
32002
  """
30668
32003
  pulumi.set(__self__, "conform_action", conform_action)
@@ -30730,6 +32065,15 @@ class SecurityPolicyRuleRateLimitOptions(dict):
30730
32065
  def enforce_on_key(self) -> Optional[str]:
30731
32066
  """
30732
32067
  Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
32068
+
32069
+ * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32070
+ * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32071
+ * `HTTP_HEADER`: The value of the HTTP header whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
32072
+ * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under `X-Forwarded-For` HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
32073
+ * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
32074
+ * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32075
+ * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
32076
+ * `REGION_CODE`: The country/region from which the request originates.
30733
32077
  """
30734
32078
  return pulumi.get(self, "enforce_on_key")
30735
32079
 
@@ -30748,6 +32092,9 @@ class SecurityPolicyRuleRateLimitOptions(dict):
30748
32092
  def enforce_on_key_name(self) -> Optional[str]:
30749
32093
  """
30750
32094
  Rate limit key name applicable only for the following key types:
32095
+
32096
+ * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32097
+ * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30751
32098
  """
30752
32099
  return pulumi.get(self, "enforce_on_key_name")
30753
32100
 
@@ -30832,7 +32179,19 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
30832
32179
  enforce_on_key_type: Optional[str] = None):
30833
32180
  """
30834
32181
  :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
32182
+
32183
+ * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32184
+ * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30835
32185
  :param str enforce_on_key_type: Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
32186
+
32187
+ * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32188
+ * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32189
+ * `HTTP_HEADER`: The value of the HTTP header whose name is configured on `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
32190
+ * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
32191
+ * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
32192
+ * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32193
+ * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
32194
+ * `REGION_CODE`: The country/region from which the request originates.
30836
32195
  """
30837
32196
  if enforce_on_key_name is not None:
30838
32197
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
@@ -30844,6 +32203,9 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
30844
32203
  def enforce_on_key_name(self) -> Optional[str]:
30845
32204
  """
30846
32205
  Rate limit key name applicable only for the following key types:
32206
+
32207
+ * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32208
+ * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30847
32209
  """
30848
32210
  return pulumi.get(self, "enforce_on_key_name")
30849
32211
 
@@ -30852,6 +32214,15 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
30852
32214
  def enforce_on_key_type(self) -> Optional[str]:
30853
32215
  """
30854
32216
  Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
32217
+
32218
+ * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32219
+ * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32220
+ * `HTTP_HEADER`: The value of the HTTP header whose name is configured on `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
32221
+ * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
32222
+ * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
32223
+ * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32224
+ * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
32225
+ * `REGION_CODE`: The country/region from which the request originates.
30855
32226
  """
30856
32227
  return pulumi.get(self, "enforce_on_key_type")
30857
32228
 
@@ -30939,6 +32310,9 @@ class SecurityPolicyRuleRedirectOptions(dict):
30939
32310
  target: Optional[str] = None):
30940
32311
  """
30941
32312
  :param str type: Type of redirect action.
32313
+
32314
+ * `EXTERNAL_302`: Redirect to an external address, configured in `target`.
32315
+ * `GOOGLE_RECAPTCHA`: Redirect to Google reCAPTCHA.
30942
32316
  :param str target: External redirection target when `EXTERNAL_302` is set in `type`.
30943
32317
  """
30944
32318
  pulumi.set(__self__, "type", type)
@@ -30950,6 +32324,9 @@ class SecurityPolicyRuleRedirectOptions(dict):
30950
32324
  def type(self) -> str:
30951
32325
  """
30952
32326
  Type of redirect action.
32327
+
32328
+ * `EXTERNAL_302`: Redirect to an external address, configured in `target`.
32329
+ * `GOOGLE_RECAPTCHA`: Redirect to Google reCAPTCHA.
30953
32330
  """
30954
32331
  return pulumi.get(self, "type")
30955
32332
 
@@ -40369,6 +41746,8 @@ class GetForwardingRulesRuleResult(dict):
40369
41746
  For internal forwarding rules within the same VPC network, two or more
40370
41747
  forwarding rules cannot use the same '[IPAddress, IPProtocol]' pair, and
40371
41748
  cannot have overlapping 'portRange's.
41749
+
41750
+ @pattern: \\d+(?:-\\d+)?
40372
41751
  :param Sequence[str] ports: The 'ports', 'portRange', and 'allPorts' fields are mutually exclusive.
40373
41752
  Only packets addressed to ports in the specified range will be forwarded
40374
41753
  to the backends configured with this forwarding rule.
@@ -40389,6 +41768,8 @@ class GetForwardingRulesRuleResult(dict):
40389
41768
  For internal forwarding rules within the same VPC network, two or more
40390
41769
  forwarding rules cannot use the same '[IPAddress, IPProtocol]' pair if
40391
41770
  they share at least one port number.
41771
+
41772
+ @pattern: \\d+(?:-\\d+)?
40392
41773
  :param str project: The name of the project.
40393
41774
  :param str psc_connection_id: The PSC connection id of the PSC Forwarding Rule.
40394
41775
  :param str psc_connection_status: The PSC connection status of the PSC Forwarding Rule. Possible values: 'STATUS_UNSPECIFIED', 'PENDING', 'ACCEPTED', 'REJECTED', 'CLOSED'
@@ -40774,6 +42155,8 @@ class GetForwardingRulesRuleResult(dict):
40774
42155
  For internal forwarding rules within the same VPC network, two or more
40775
42156
  forwarding rules cannot use the same '[IPAddress, IPProtocol]' pair, and
40776
42157
  cannot have overlapping 'portRange's.
42158
+
42159
+ @pattern: \\d+(?:-\\d+)?
40777
42160
  """
40778
42161
  return pulumi.get(self, "port_range")
40779
42162
 
@@ -40801,6 +42184,8 @@ class GetForwardingRulesRuleResult(dict):
40801
42184
  For internal forwarding rules within the same VPC network, two or more
40802
42185
  forwarding rules cannot use the same '[IPAddress, IPProtocol]' pair if
40803
42186
  they share at least one port number.
42187
+
42188
+ @pattern: \\d+(?:-\\d+)?
40804
42189
  """
40805
42190
  return pulumi.get(self, "ports")
40806
42191