nubes_s3 — S3 Object Storage¶
Объектное хранилище S3 (Ceph) с квотами на пользователя. Сервис создаёт корневого пользователя хранилища и отдаёт адрес подключения и учётные данные.
Инструкция по сервису Отдельная страница: руководство по сервису.
Специфика Nubes:
destroy≠ удалениеterraform destroyпо умолчанию усыпляет инстанс (suspend), а не удаляет. Подробности — в разделе «Жизненный цикл» и в общем руководстве «Как работает провайдер».
Пример использования¶
resource "nubes_s3" "storage" {
resource_name = "my-s3"
display_name = "my_s3_storage" # без дефисов
# resource_realm = "s3.msk-1.ngcloud.ru" # дефолт (фиксирован)
}
resource "nubes_s3_sub_user" "app" {
s3_id = nubes_s3.storage.id
sub_user_name = "app-user"
sub_user_access = "readwrite" # read | write | readwrite | full
}
Обратите внимание:
display_nameпроверяется паттерном^[a-zA-Z0-9_]{1,61}[a-zA-Z0-9]$— без дефисов, первый и последний символ должны быть буквой или цифрой.
Argument Reference¶
| Имя | Тип | Обязательный | По умолчанию | Описание | Ограничения |
|---|---|---|---|---|---|
resource_name |
string | да | — | Имя инстанса | — |
display_name |
string | да | — | Человеко-читаемое имя (обычно имя клиента) | ^[a-zA-Z0-9_]{1,61}[a-zA-Z0-9]$ |
resource_realm |
string | нет | s3.msk-1.ngcloud.ru |
«Платформа» — S3-кластер Ceph | s3.msk-1.ngcloud.ru |
max_buckets_per_user |
integer | нет | 25* |
Количество бакетов пользователя | — |
max_objects_per_bucket |
integer | нет | 10000000* |
Количество объектов в бакете | — |
max_size_gb_per_user |
integer | нет | 1024* |
Объём на пользователя (GB) | — |
* Значения по умолчанию наблюдались в state_params живого инстанса.
Общие атрибуты (есть у всех ресурсов):
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
operation_timeout |
string | нет | — | Максимальное время ожидания операции |
log_level |
string | нет | none |
Логирование стадий: none, info, debug |
suspend_on_destroy |
bool | нет | true |
При destroy — усыпить вместо удаления |
keep_on_destroy |
bool | нет | false |
При destroy — ничего не делать в облаке (state_only) |
adopt_existing_on_create |
bool | нет | false |
Авто-подхват существующего инстанса при apply |
Attribute Reference¶
| Имя | Тип | Описание |
|---|---|---|
id |
string | UUID инстанса |
state_out.urlConnect |
string | Адрес подключения: https://s3.msk-1.ngcloud.ru |
state_out.instanceUid |
string | UUID инстанса |
state_out.isTrial |
string | Признак триала ("true"), срок — dtEndTrial (14 дней) |
state_out_flat["monitoring.s3ceph.url"] |
string | Ссылка на мониторинг (Grafana) |
state_params.userName |
string | Имя пользователя хранилища |
state_params.resourceRealm |
string | s3.msk-1.ngcloud.ru |
state_params.maxBucketsPerUser / maxObjectsPerBucket / maxSizeGbPerUser |
integer | Фактические квоты |
vault_secrets |
map (sensitive) | Учётные данные (users) |
vault_fields |
list | ["users"] |
vault_url / vault_user_path |
string | Адрес/путь Vault |
output "s3_url" { value = nubes_s3.storage.state_out_flat["urlConnect"] }
Жизненный цикл ¶
| Флаг | Дефолт | Поведение при destroy |
|---|---|---|
suspend_on_destroy |
true |
Инстанс переводится в suspend (не удаляется) |
suspend_on_destroy |
false |
Выполняется операция delete — инстанс удаляется в облаке |
keep_on_destroy |
false |
Если true — ресурс вообще не трогается в облаке (state_only) |
Возврат из suspend: повторный terraform apply с adopt_existing_on_create = true
— провайдер найдёт инстанс по имени и выполнит resume (тот же id).
Зачем нужно усыпление
suspend— временная остановка: ресурсы высвобождаются, а инстанс можно вернуть в работу в любой момент повторнымapply.Удаление усыплённого инстанса Удалить усыплённый инстанс можно, когда он пробыл в
suspend14 дней.⚠️ Из Terraform это невозможно — операция
deleteдля усыплённого инстанса недоступна. Удаляйте его вручную в Личном кабинете (ЛК).Триальный режим Сервис создаётся в триальном режиме:
isTrial = "true", срок — 14 дней (dtEndTrial).
- Инстанс в статусе «not created» (после упавшего create) блокирует имя и не удаляется через API — чистится вручную в Личном кабинете.
reconcileзапускается из Terraform ресурсомnubes_service_operation(operation = "reconcile", уникальныйrun_id).
Подресурсы¶
nubes_s3_sub_user¶
| Имя | Тип | Обязательный | По умолчанию | Описание | Ограничения |
|---|---|---|---|---|---|
s3_id |
string (uuid) | да | — | UUID хранилища S3 | — |
sub_user_name |
string | да | — | Имя суб-пользователя | — |
sub_user_access |
string | да | — | Уровень доступа | read, write, readwrite, full |
Общие атрибуты подресурсов
adopt_existing_on_create,keep_on_destroy,skip_missing_on_delete,operation_timeout,log_level. Идентификатор:<uid>:sub_user:<hash>.
Operations¶
| Операция | Доступно из Terraform | Комментарий |
|---|---|---|
create |
✅ apply |
Создание хранилища |
modify |
✅ apply |
Меняются квоты max_buckets_per_user, max_objects_per_bucket, max_size_gb_per_user |
suspend |
✅ destroy (при suspend_on_destroy=true) |
Усыпление |
resume |
✅ apply (при adopt_existing_on_create=true) |
Пробуждение |
delete |
✅ destroy (suspend_on_destroy=false) |
Удаление инстанса в облаке. Только для работающего (running); усыплённый — вручную в ЛК |
create_sub_user / delete_sub_user |
✅ через nubes_s3_sub_user |
Управление суб-пользователями |
reconcile |
✅ через nubes_service_operation |
Синхронизация состояния (универсальная операция) |