daml/infra/modules/gcp_cdn_bucket/google_storage.tf

57 lines
1.5 KiB
Terraform
Raw Normal View History

# Copyright (c) 2021 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2019-04-04 11:33:38 +03:00
# SPDX-License-Identifier: Apache-2.0
data "google_project" "current" {
project_id = var.project
2019-04-04 11:33:38 +03:00
}
locals {
default_role_entities = [
"OWNER:project-owners-${data.google_project.current.number}",
"OWNER:project-editors-${data.google_project.current.number}",
"READER:project-viewers-${data.google_project.current.number}",
# all the objects are publicly readable!
"READER:allUsers",
]
}
resource "google_storage_bucket" "default" {
project = var.project
name = var.name
labels = var.labels
2019-04-04 11:33:38 +03:00
# SLA is enough for a cache and is cheaper than MULTI_REGIONAL
# see https://cloud.google.com/storage/docs/storage-classes
storage_class = "REGIONAL"
# Use a normal region since the storage_class is regional
location = var.region
2019-04-04 11:33:38 +03:00
# cleanup the cache after ${var.cache_retention_days} days
2019-04-04 11:33:38 +03:00
lifecycle_rule {
action {
type = "Delete"
}
condition {
age = var.cache_retention_days # days
2019-04-04 11:33:38 +03:00
}
}
website {
# This doesn't exist, but the property has to have a value, otherwise GCP
# sets a default one and Terraform never thinks the config applies cleanly.
# I miss AWS.
main_page_suffix = "index.html"
}
2019-04-04 11:33:38 +03:00
force_destroy = true
}
resource "google_storage_bucket_acl" "default" {
bucket = google_storage_bucket.default.name
2019-04-04 11:33:38 +03:00
default_acl = "publicread"
role_entity = local.default_role_entities
2019-04-04 11:33:38 +03:00
}