Hi @JulienBreux,
If you will always have exactly one website
block then you can just write it out directly with individual references to your object:
resource "google_storage_bucket" "default" {
website {
main_page_suffix = var.bucket_website.main_page_suffix
not_found_page = var.bucket_website.not_found_page
}
}
A dynamic
block would only be necessary here if the decision about whether or not to include the website
block must be made dynamically. For example, you might allow var.bucket_website
to be null
in order to disable the website functionality altogether:
variable "bucket_website" {
description = "Bucket website configuration"
type = object({
main_page_suffix = string
not_found_page = string
})
default = null
}
resource "google_storage_bucket" "default" {
dynamic "website" {
for_each = var.bucket_website[*]
content {
main_page_suffix = website.value.main_page_suffix
not_found_page = website.value.not_found_page
}
}
}
The var.bucket_website[*]
syntax is a special mode of the splat operator [*]
when applied to a non-list value: if var.bucket_website
is null
then it will produce an empty list, and otherwise it will produce a single-element list containing the value. We can use that to concisely adapt a variable that is either null or not into what the dynamic
block expects: a list with zero or more elements.