2-environments/modules/env_baseline/ml_logging.tf (71 lines of code) (raw):

/** * Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ data "google_storage_project_service_account" "gcs_logging_account" { project = module.env_logs.project_id } /****************************************** Project for Environment Logging *****************************************/ module "env_logs" { source = "terraform-google-modules/project-factory/google" version = "~> 15.0" random_project_id = true random_project_id_length = 4 default_service_account = "deprivilege" name = "${local.project_prefix}-${var.environment_code}-logging" org_id = local.org_id billing_account = local.billing_account folder_id = google_folder.env.id activate_apis = ["logging.googleapis.com", "billingbudgets.googleapis.com", "storage.googleapis.com"] labels = { environment = var.env application_name = "env-logging" billing_code = "1234" primary_contact = "example1" secondary_contact = "example2" business_code = "abcd" env_code = var.environment_code } budget_alert_pubsub_topic = var.project_budget.logging_alert_pubsub_topic budget_alert_spent_percents = var.project_budget.logging_alert_spent_percents budget_amount = var.project_budget.logging_budget_amount budget_alert_spend_basis = var.project_budget.logging_budget_alert_spend_basis } // Create Bucket for this project resource "google_storage_bucket" "log_bucket" { name = "${var.gcs_bucket_prefix}-${module.env_logs.project_id}" location = var.gcs_logging_bucket_location project = module.env_logs.project_id uniform_bucket_level_access = true dynamic "retention_policy" { for_each = var.gcs_logging_retention_period != null ? [var.gcs_logging_retention_period] : [] content { is_locked = var.gcs_logging_retention_period.is_locked retention_period = var.gcs_logging_retention_period.retention_period_days * 24 * 60 * 60 } } encryption { default_kms_key_name = google_kms_crypto_key_iam_member.gcs_logging_key.crypto_key_id #module.kms_keyring.keys_by_region[var.gcs_logging_bucket_location][local.logging_key_name] } } /****************************************** Logging Bucket - IAM *****************************************/ # resource "google_storage_bucket_iam_member" "bucket_logging" { # bucket = google_storage_bucket.log_bucket.name # role = "roles/storage.objectCreator" # member = "group:cloud-storage-analytics@google.com" # } resource "google_kms_crypto_key_iam_member" "gcs_logging_key" { crypto_key_id = module.kms_keyring.keys_by_region[var.gcs_logging_bucket_location][local.logging_key_name] role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:${data.google_storage_project_service_account.gcs_logging_account.email_address}" }