# Универсальный модуль для создания S3 бакета # Не знает про конкретные сущности # Создание сервисного аккаунта для S3 resource "yandex_iam_service_account" "sa" { name = "${var.bucket_name}-sa" description = "Service account for ${var.bucket_name} bucket" } # Назначение роли storage.editor сервисному аккаунту resource "yandex_resourcemanager_folder_iam_member" "storage_editor" { folder_id = var.folder_id role = "storage.editor" member = "serviceAccount:${yandex_iam_service_account.sa.id}" } # Создание статического ключа доступа resource "yandex_iam_service_account_static_access_key" "sa_key" { service_account_id = yandex_iam_service_account.sa.id description = "Static access key for ${var.bucket_name} bucket" } # Создание S3 бакета # Bucket создается от имени текущего пользователя (YC_TOKEN), не сервисного аккаунта # Ключи сервисного аккаунта используются только для доступа к bucket после создания resource "yandex_storage_bucket" "this" { bucket = var.bucket_name acl = var.acl # Версионирование объектов dynamic "versioning" { for_each = var.versioning_enabled ? [1] : [] content { enabled = true } } # Настройка CORS dynamic "cors_rule" { for_each = var.cors_enabled ? [1] : [] content { allowed_headers = var.cors_config.allowed_headers allowed_methods = var.cors_config.allowed_methods allowed_origins = var.cors_config.allowed_origins expose_headers = try(var.cors_config.expose_headers, []) max_age_seconds = try(var.cors_config.max_age_seconds, 3600) } } }