provider "nubes" { api_token = var.api_token api_endpoint = var.api_endpoint } # Бакет-источник — сюда пишем объект resource "nubes_s3bucket" "source" { resource_name = "${var.bucket_name}-src" s3_user_uid = var.s3_uid bucket_name = "${var.bucket_name}-src" adopt_existing_on_create = true # бакет уже создан предыдущим apply max_size = -1 read_all = false list_all = false cors_all = false placement = "HOT" } # Бакет-назначение — сюда копирует «функция» по событию resource "nubes_s3bucket" "dest" { resource_name = "${var.bucket_name}-dst" s3_user_uid = var.s3_uid bucket_name = "${var.bucket_name}-dst" max_size = -1 read_all = false list_all = false cors_all = false placement = "HOT" } locals { src_bucket = try(nubes_s3bucket.source.state_params["bucketName"], "${var.bucket_name}-src") dst_bucket = try(nubes_s3bucket.dest.state_params["bucketName"], "${var.bucket_name}-dst") } # «Функция»: mc watch ловит событие в source → копирует объект в dest resource "terraform_data" "event_delivery_check" { depends_on = [nubes_s3bucket.source, nubes_s3bucket.dest] triggers_replace = { src = local.src_bucket dst = local.dst_bucket s3cfg_path = var.s3cfg_path } provisioner "local-exec" { command = "bash ${path.module}/scripts/copy_on_event.sh \"${var.s3cfg_path}\" \"${local.src_bucket}\" \"${local.dst_bucket}\" \"${var.demo_timeout_sec}\"" } }