> ## Documentation Index
> Fetch the complete documentation index at: https://biznetgio.creations.ren/llms.txt
> Use this file to discover all available pages before exploring further.

# Object Storage (Terraform)

> Terraform resources and data sources for NEO Object Storage

NEO Object Storage is Biznet GIO's S3-compatible storage (`/object-storages` API group). The provider manages the subscription itself, buckets, S3 credentials, and individual objects through the control-plane API.

<Info>
  Every create/upgrade places a **real paid order**. Quota upgrades are grow-only and bill the increment.
</Info>

## `biznetgio_object_storage`

The subscribed Object Storage instance (S3 tenant). Quota is grow-only; updates send the increment.

```hcl theme={null}
resource "biznetgio_object_storage" "example" {
  product_id           = 8
  cycle                = "m"
  label                = "data-archive"
  quota                = 10
  pay_with_credit_card = true
}
```

| Name | Type | Mode | Notes |
| - | - | - | - |
| `id` | string | computed | equals numeric `account_id` |
| `product_id` | int64 | required | create-only |
| `cycle` | string | required | `m a q s b t p4 p5`; create-only |
| `label` | string | required | 6-16 chars, `[a-zA-Z0-9\-_]`; create-only |
| `quota` | int64 | optional | default `10` GB, minimum 10, grow-only |
| `promocode` | string | optional | create-only |
| `pay_with_credit_card` | bool | optional | default `true` |
| `order_id` | string | computed | |
| `status` | string | computed | `Active` / `Pending` / `Suspended` / `Terminated` |
| `raw` | string | computed, sensitive | |
| `timeouts` | block | optional | create/update/delete |

Import with the numeric account id.

<Note>
  `product_id` and `cycle` are correctly create-only here: a change destroys and recreates the whole instance, deleting every bucket, credential, and object inside it. This is the opposite of the [Pulumi provider](/pulumi/resources/object-storage#biznetgio:index:ObjectStorage)'s behavior for the same fields, which silently ignores a `productId`/`cycle` change instead of replacing the resource - if you use both providers, do not assume they behave the same way here.
</Note>

## `biznetgio_object_storage_bucket`

A bucket inside an instance. Only the ACL is mutable.

```hcl theme={null}
resource "biznetgio_object_storage_bucket" "assets" {
  account_id = biznetgio_object_storage.example.id
  name       = "my-assets"
  acl        = "private"
}
```

| Name | Type | Mode | Notes |
| - | - | - | - |
| `id` | string | computed | composite `<account_id>:<bucket_name>` |
| `account_id` | string | required | instance account id |
| `name` | string | required | min 3 chars, `[a-zA-Z0-9\-_]`; immutable |
| `acl` | string | optional | default `""`; one of `private`, `public-read`, `public-read-write`, `authenticated-read`, `log-delivery-write` |
| `raw` | string | computed, sensitive | |

**Import ID format:** `<account_id>:<bucket_name>`, e.g. `terraform import biznetgio_object_storage_bucket.assets 12345:my-assets`.

## `biznetgio_object_storage_credential`

An S3 access/secret key pair. The secret key is shown only once at creation and can never be re-fetched.

```hcl theme={null}
resource "biznetgio_object_storage_credential" "main" {
  account_id = biznetgio_object_storage.example.id
  active     = true   # set false to disable without deleting
}
```

| Name | Type | Mode | Notes |
| - | - | - | - |
| `id` | string | computed | `<account_id>:<16-hex sha256 prefix of access_key>` - the plaintext access key is never stored in the id |
| `account_id` | string | required | |
| `access_key` | string | computed, sensitive | returned once at create |
| `secret_key` | string | computed, sensitive | shown only once; preserved from state on refresh |
| `active` | bool | optional | default `true`; update toggles enable/disable |
| `raw` | string | computed, sensitive | |

**Import ID format:** `<account_id>:<access_key>` - the access key may be given literally or in its 16-hex hashed form.

## `biznetgio_object_storage_object`

Convenience wrapper that uploads a single object through the control-plane API. Exactly one of `source` or `content` must be set.

```hcl theme={null}
resource "biznetgio_object_storage_object" "index" {
  account_id = biznetgio_object_storage.example.id
  bucket     = biznetgio_object_storage_bucket.assets.name
  key        = "site/index.html"
  source     = "./index.html"
  acl        = "public-read"
}
```

| Name | Type | Mode | Notes |
| - | - | - | - |
| `id` | string | computed | composite `<account_id>:<bucket>:<key>` |
| `account_id` | string | required | |
| `bucket` | string | required | |
| `key` | string | required | object path |
| `source` | string | optional | local file path; one-of with `content` |
| `content` | string | optional, sensitive | inline content; one-of with `source` |
| `acl` | string | optional | default `""`; same canned values as bucket ACL |
| `raw` | string | computed, sensitive | |

Content changes replace the object; only `acl` updates in place.

<Note>
  This resource is **not** suited to large objects or bulk sync. For real workloads, use S3-compatible tooling (AWS CLI, rclone, SDKs) with the credential from `biznetgio_object_storage_credential` - Biznet GIO publishes per-region S3 endpoints of the form `nos.<region>.neo.id`.
</Note>

**Import ID format:** `<account_id>:<bucket>:<key>`, e.g. `terraform import biznetgio_object_storage_object.index 12345:my-assets:site/index.html`.

## Data sources

<Note>
  For real pricing and how to pick a specific package instead of trusting `[0]`, see the [Product Catalog](/products/object-storage) page.
</Note>

### `biznetgio_object_storage_instances`

```hcl theme={null}
data "biznetgio_object_storage_instances" "all" {
  status = "Active"   # optional filter: Active | Pending | Suspended | Terminated
}
```

`instances` items: `id`, `label`, `status`, `product_id`, `quota`, `raw`.

### `biznetgio_object_storage_buckets`

Buckets inside an instance (`account_id` argument required). Items: `name`, `acl`, `raw`.

### `biznetgio_object_storage_credentials`

Credentials of an instance (`account_id` argument required). Items: `access_key` (sensitive), `active`. Secret keys are never returned.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.