terraform-contour-mirror/modules/yc-s3/main.tf

50 lines
1.9 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Универсальный модуль для создания 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)
}
}
}