add additional parameters
This commit is contained in:
@@ -114,7 +114,7 @@ module "bucket" {
|
||||
| name | description | type | required | default |
|
||||
|---|---|:---:|:---:|:---:|
|
||||
| [name](variables.tf#L116) | Bucket name suffix. | <code>string</code> | ✓ | |
|
||||
| [project_id](variables.tf#L155) | Bucket project id. | <code>string</code> | ✓ | |
|
||||
| [project_id](variables.tf#L179) | Bucket project id. | <code>string</code> | ✓ | |
|
||||
| [cors](variables.tf#L17) | CORS configuration for the bucket. Defaults to null. | <code title="object({ origin = optional(list(string)) method = optional(list(string)) response_header = optional(list(string)) max_age_seconds = optional(number) })">object({…})</code> | | <code>null</code> |
|
||||
| [encryption_key](variables.tf#L28) | KMS key that will be used for encryption. | <code>string</code> | | <code>null</code> |
|
||||
| [force_destroy](variables.tf#L34) | Optional map to set force destroy keyed by name, defaults to false. | <code>bool</code> | | <code>false</code> |
|
||||
@@ -124,13 +124,13 @@ module "bucket" {
|
||||
| [location](variables.tf#L101) | Bucket location. | <code>string</code> | | <code>"EU"</code> |
|
||||
| [logging_config](variables.tf#L107) | Bucket logging configuration. | <code title="object({ log_bucket = string log_object_prefix = optional(string) })">object({…})</code> | | <code>null</code> |
|
||||
| [notification_config](variables.tf#L121) | GCS Notification configuration. | <code title="object({ enabled = bool payload_format = string topic_name = string sa_email = string event_types = optional(list(string)) custom_attributes = optional(map(string)) object_name_prefix = optional(string) })">object({…})</code> | | <code>null</code> |
|
||||
| [objects_to_upload](variables.tf#L135) | Objects to be uploaded to bucket | <code title="map(object({ name = string source = string content_type = string }))">map(object({…}))</code> | | <code>{}</code> |
|
||||
| [prefix](variables.tf#L145) | Optional prefix used to generate the bucket name. | <code>string</code> | | <code>null</code> |
|
||||
| [retention_policy](variables.tf#L160) | Bucket retention policy. | <code title="object({ retention_period = number is_locked = optional(bool) })">object({…})</code> | | <code>null</code> |
|
||||
| [storage_class](variables.tf#L169) | Bucket storage class. | <code>string</code> | | <code>"MULTI_REGIONAL"</code> |
|
||||
| [uniform_bucket_level_access](variables.tf#L179) | Allow using object ACLs (false) or not (true, this is the recommended behavior) , defaults to true (which is the recommended practice, but not the behavior of storage API). | <code>bool</code> | | <code>true</code> |
|
||||
| [versioning](variables.tf#L185) | Enable versioning, defaults to false. | <code>bool</code> | | <code>false</code> |
|
||||
| [website](variables.tf#L191) | Bucket website. | <code title="object({ main_page_suffix = optional(string) not_found_page = optional(string) })">object({…})</code> | | <code>null</code> |
|
||||
| [objects_to_upload](variables.tf#L135) | Objects to be uploaded to bucket. | <code title="map(object({ name = string metadata = optional(map(string)) content = optional(string) source = optional(string) cache_control = optional(string) content_disposition = optional(string) content_encoding = optional(string) content_language = optional(string) content_type = optional(string) event_based_hold = optional(bool) temporary_hold = optional(bool) detect_md5hash = optional(string) storage_class = optional(string) kms_key_name = optional(string) customer_encryption = optional(object({ encryption_algorithm = optional(string) encryption_key = string })) }))">map(object({…}))</code> | | <code>{}</code> |
|
||||
| [prefix](variables.tf#L169) | Optional prefix used to generate the bucket name. | <code>string</code> | | <code>null</code> |
|
||||
| [retention_policy](variables.tf#L184) | Bucket retention policy. | <code title="object({ retention_period = number is_locked = optional(bool) })">object({…})</code> | | <code>null</code> |
|
||||
| [storage_class](variables.tf#L193) | Bucket storage class. | <code>string</code> | | <code>"MULTI_REGIONAL"</code> |
|
||||
| [uniform_bucket_level_access](variables.tf#L203) | Allow using object ACLs (false) or not (true, this is the recommended behavior) , defaults to true (which is the recommended practice, but not the behavior of storage API). | <code>bool</code> | | <code>true</code> |
|
||||
| [versioning](variables.tf#L209) | Enable versioning, defaults to false. | <code>bool</code> | | <code>false</code> |
|
||||
| [website](variables.tf#L215) | Bucket website. | <code title="object({ main_page_suffix = optional(string) not_found_page = optional(string) })">object({…})</code> | | <code>null</code> |
|
||||
|
||||
## Outputs
|
||||
|
||||
|
||||
@@ -102,10 +102,30 @@ resource "google_storage_bucket" "bucket" {
|
||||
resource "google_storage_bucket_object" "objects" {
|
||||
for_each = var.objects_to_upload
|
||||
|
||||
bucket = google_storage_bucket.bucket.id
|
||||
name = each.value.name
|
||||
source = each.value.source
|
||||
content_type = each.value.content_type
|
||||
bucket = google_storage_bucket.bucket.id
|
||||
name = each.value.name
|
||||
metadata = each.value.metadata
|
||||
content = each.value.content
|
||||
source = each.value.source
|
||||
cache_control = each.value.cache_control
|
||||
content_disposition = each.value.content_disposition
|
||||
content_encoding = each.value.content_encoding
|
||||
content_language = each.value.content_language
|
||||
content_type = each.value.content_type
|
||||
event_based_hold = each.value.event_based_hold
|
||||
temporary_hold = each.value.temporary_hold
|
||||
detect_md5hash = each.value.detect_md5hash
|
||||
storage_class = each.value.storage_class
|
||||
kms_key_name = each.value.kms_key_name
|
||||
|
||||
dynamic "customer_encryption" {
|
||||
for_each = each.value.customer_encryption == null ? [] : [""]
|
||||
|
||||
content {
|
||||
encryption_algorithm = each.value.customer_encryption.encryption_algorithm
|
||||
encryption_key = each.value.customer_encryption.encryption_key
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "google_storage_bucket_iam_binding" "bindings" {
|
||||
|
||||
@@ -135,10 +135,34 @@ variable "notification_config" {
|
||||
variable "objects_to_upload" {
|
||||
description = "Objects to be uploaded to bucket."
|
||||
type = map(object({
|
||||
name = string
|
||||
source = string
|
||||
content_type = string
|
||||
name = string
|
||||
metadata = optional(map(string))
|
||||
content = optional(string)
|
||||
source = optional(string)
|
||||
cache_control = optional(string)
|
||||
content_disposition = optional(string)
|
||||
content_encoding = optional(string)
|
||||
content_language = optional(string)
|
||||
content_type = optional(string)
|
||||
event_based_hold = optional(bool)
|
||||
temporary_hold = optional(bool)
|
||||
detect_md5hash = optional(string)
|
||||
storage_class = optional(string)
|
||||
kms_key_name = optional(string)
|
||||
customer_encryption = optional(object({
|
||||
encryption_algorithm = optional(string)
|
||||
encryption_key = string
|
||||
}))
|
||||
}))
|
||||
validation {
|
||||
condition = alltrue([
|
||||
for k, v in var.objects_to_upload :
|
||||
v.content != null
|
||||
||
|
||||
v.source != null
|
||||
])
|
||||
error_message = "Object must have either content or source defined."
|
||||
}
|
||||
default = {}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user