52 lines
1.6 KiB
Terraform
52 lines
1.6 KiB
Terraform
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}\""
|
|
}
|
|
}
|