|
14 | 14 | * limitations under the License. |
15 | 15 | */ |
16 | 16 |
|
| 17 | +locals { |
| 18 | + is_backend_bucket = var.backend_bucket_name != null && var.backend_bucket_name != "" |
| 19 | +} |
| 20 | + |
17 | 21 | resource "google_compute_backend_service" "default" { |
18 | 22 | provider = google-beta |
| 23 | + count = !local.is_backend_bucket ? 1 : 0 |
19 | 24 |
|
20 | 25 | project = var.project_id |
21 | 26 | name = var.name |
@@ -310,3 +315,52 @@ resource "google_compute_firewall" "allow_proxy" { |
310 | 315 | protocol = "tcp" |
311 | 316 | } |
312 | 317 | } |
| 318 | + |
| 319 | +resource "google_compute_backend_bucket" "default" { |
| 320 | + provider = google-beta |
| 321 | + count = local.is_backend_bucket ? 1 : 0 |
| 322 | + |
| 323 | + project = var.project_id |
| 324 | + name = var.name |
| 325 | + bucket_name = var.backend_bucket_name |
| 326 | + enable_cdn = var.enable_cdn |
| 327 | + |
| 328 | + description = var.description |
| 329 | + |
| 330 | + # CDN policy configuration, if CDN is enabled |
| 331 | + dynamic "cdn_policy" { |
| 332 | + for_each = var.enable_cdn ? [1] : [] |
| 333 | + content { |
| 334 | + cache_mode = var.cdn_policy.cache_mode |
| 335 | + signed_url_cache_max_age_sec = var.cdn_policy.signed_url_cache_max_age_sec |
| 336 | + default_ttl = var.cdn_policy.default_ttl |
| 337 | + max_ttl = var.cdn_policy.max_ttl |
| 338 | + client_ttl = var.cdn_policy.client_ttl |
| 339 | + negative_caching = var.cdn_policy.negative_caching |
| 340 | + serve_while_stale = var.cdn_policy.serve_while_stale |
| 341 | + |
| 342 | + dynamic "negative_caching_policy" { |
| 343 | + for_each = var.cdn_policy.negative_caching_policy != null ? [1] : [] |
| 344 | + content { |
| 345 | + code = var.cdn_policy.negative_caching_policy.code |
| 346 | + ttl = var.cdn_policy.negative_caching_policy.ttl |
| 347 | + } |
| 348 | + } |
| 349 | + |
| 350 | + dynamic "cache_key_policy" { |
| 351 | + for_each = var.cdn_policy.cache_key_policy != null ? [1] : [] |
| 352 | + content { |
| 353 | + query_string_whitelist = var.cdn_policy.cache_key_policy.query_string_whitelist |
| 354 | + include_http_headers = var.cdn_policy.cache_key_policy.include_http_headers |
| 355 | + } |
| 356 | + } |
| 357 | + |
| 358 | + dynamic "bypass_cache_on_request_headers" { |
| 359 | + for_each = var.cdn_policy.bypass_cache_on_request_headers != null && try(length(var.cdn_policy.bypass_cache_on_request_headers), 0) > 0 ? toset(var.cdn_policy.bypass_cache_on_request_headers) : [] |
| 360 | + content { |
| 361 | + header_name = bypass_cache_on_request_headers.value |
| 362 | + } |
| 363 | + } |
| 364 | + } |
| 365 | + } |
| 366 | +} |
0 commit comments