» google_compute_url_map
UrlMaps are used to route requests to a backend service based on rules that you define for the host and path of an incoming URL.
» Example Usage - Url Map Basic
resource "google_compute_url_map" "urlmap" {
name = "urlmap"
description = "a description"
default_service = "${google_compute_backend_service.home.self_link}"
host_rule {
hosts = ["mysite.com"]
path_matcher = "allpaths"
}
path_matcher {
name = "allpaths"
default_service = "${google_compute_backend_service.home.self_link}"
path_rule {
paths = ["/home"]
service = "${google_compute_backend_service.home.self_link}"
}
path_rule {
paths = ["/login"]
service = "${google_compute_backend_service.login.self_link}"
}
path_rule {
paths = ["/static"]
service = "${google_compute_backend_bucket.static.self_link}"
}
}
test {
service = "${google_compute_backend_service.home.self_link}"
host = "hi.com"
path = "/home"
}
}
resource "google_compute_backend_service" "login" {
name = "login"
port_name = "http"
protocol = "HTTP"
timeout_sec = 10
health_checks = ["${google_compute_http_health_check.default.self_link}"]
}
resource "google_compute_backend_service" "home" {
name = "home"
port_name = "http"
protocol = "HTTP"
timeout_sec = 10
health_checks = ["${google_compute_http_health_check.default.self_link}"]
}
resource "google_compute_http_health_check" "default" {
name = "health-check"
request_path = "/"
check_interval_sec = 1
timeout_sec = 1
}
resource "google_compute_backend_bucket" "static" {
name = "static-asset-backend-bucket"
bucket_name = "${google_storage_bucket.static.name}"
enable_cdn = true
}
resource "google_storage_bucket" "static" {
name = "static-asset-bucket"
location = "US"
}
» Argument Reference
The following arguments are supported:
-
default_service
- (Required) The backend service or backend bucket to use when none of the given rules match. -
name
- (Required) Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression[a-z]([-a-z0-9]*[a-z0-9])?
which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-
description
- (Optional) An optional description of this resource. Provide this property when you create the resource. -
host_rule
- (Optional) The list of HostRules to use against the URL. Structure is documented below. -
path_matcher
- (Optional) The list of named PathMatchers to use against the URL. Structure is documented below. -
test
- (Optional) The list of expected URL mappings. Requests to update this UrlMap will succeed only if all of the test cases pass. Structure is documented below. -
project
- (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
The host_rule
block supports:
-
description
- (Optional) An optional description of this HostRule. Provide this property when you create the resource. -
hosts
- (Required) The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or .. -
path_matcher
- (Required) The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion.
The path_matcher
block supports:
-
default_service
- (Required) The backend service or backend bucket to use when none of the given paths match. -
description
- (Optional) An optional description of this resource. -
name
- (Required) The name to which this PathMatcher is referred by the HostRule. -
path_rule
- (Optional) The list of path rules. Structure is documented below.
The path_rule
block supports:
-
paths
- (Required) The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here. -
service
- (Required) The backend service or backend bucket to use if any of the given paths match.
The test
block supports:
-
description
- (Optional) Description of this test case. -
host
- (Required) Host portion of the URL. -
path
- (Required) Path portion of the URL. -
service
- (Required) The backend service or backend bucket link that should be matched by this test.
» Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
-
creation_timestamp
- Creation timestamp in RFC3339 text format. -
map_id
- The unique identifier for the resource. -
fingerprint
- Fingerprint of this resource. This field is used internally during updates of this resource. -
self_link
- The URI of the created resource.
» Timeouts
This resource provides the following Timeouts configuration options:
» Import
UrlMap can be imported using any of these accepted formats:
$ terraform import google_compute_url_map.default projects/{{project}}/global/urlMaps/{{name}}
$ terraform import google_compute_url_map.default {{project}}/{{name}}
$ terraform import google_compute_url_map.default {{name}}
If you're importing a resource with beta features, make sure to include -provider=google-beta
as an argument so that Terraform uses the correct provider to import your resource.