Storage
Storage is Zenifra's object storage. It keeps images, videos, documents, backups and any other file your applications use, with access from the console or from the tools and SDKs you already use. You pay for the space used and for requests, with no minimum plan.
Storage is in beta and, for now, open to invited organizations. If your organization does not have access yet, open Storage in the console, tell us how you plan to use it and click Join the beta. When the organization is in, the owner and whoever asked receive an email.
How it works
- Create your Storage. Each organization has one Storage, created from the Storage menu in the console. It is permanent: it cannot be removed, only the buckets inside it.
- Create buckets. A bucket groups files, such as
photos,documentsorbackups. - Upload files or connect an application. Use the console to upload and download files, or create an access key and connect your application. See Connect applications.
| Setting | Value |
|---|---|
| Endpoint | https://armazem.zenifra.com |
| Region | br-sp1 |
| Addressing | path style (https://armazem.zenifra.com/<bucket>/<file>) |
Buckets
A bucket name is unique across Storage and follows these rules:
- 3 to 63 characters;
- lowercase letters, numbers, dots and hyphens only;
- starts and ends with a letter or number, with no two dots in a row;
- cannot look like an IP address;
adminis reserved.
Each organization can have up to 10 buckets. See Limits and billing to ask for more.
Delete a bucket
An empty bucket is deleted right away. A bucket with files is only deleted after a confirmation from someone signed in to the console:
- accounts with two-step verification enter the code from their authenticator app;
- other accounts receive a 6-digit code by email, valid for 15 minutes.
After the confirmation, the bucket and all its files are deleted in the background. Deleted files cannot be recovered. Access keys and API Keys cannot delete buckets that have files.
Files in the console
When you open a bucket, you browse its folders and can:
- Upload files to the current folder, up to 20 GB per file, and cancel the upload while it runs;
- Create folders with New folder, including several at once, such as
documents/2026; - Delete an empty folder;
- Download a file straight from Storage;
- Copy link to a file, valid for 7 days for anyone who has it;
- See details by clicking the name: path, size, type, upload date, ETag and metadata;
- Edit the metadata of a file from its details;
- Delete a file.
Files go straight from your browser to Storage, without passing through other servers.
Folders and names
Folders organize files inside a bucket: documents/2026/contract.pdf is the file contract.pdf inside the folder 2026, which is inside documents. For uploads through the console and Zenifra upload links:
| Rule | Limit |
|---|---|
| Each folder name | up to 64 characters |
| Folder levels | up to 20 |
| File name | up to 255 characters |
| Not accepted | folders without a name (//), a leading slash and . or .. names |
A folder created in the console keeps showing even when empty. To delete it, delete the files inside it first.
Metadata
Metadata are name and value pairs kept with the file, such as invoice: 123 or source: orders-app. They come back on every read of the file and help identify and organize content. In the console, open the file details and click Edit metadata. Through the API, send metadata with the file as x-amz-meta-<name> headers, which SDKs fill from the Metadata field.
| Rule | Limit |
|---|---|
| Name | lowercase letters, numbers and hyphens, up to 64 characters, starting and ending with a letter or number |
| Value | characters without accents, no line breaks |
| Total | up to 30 items and 2 KB per file |
Saving new metadata replaces all previous metadata and keeps the content, type and other file information. If the file changes while you edit, the console tells you to open the details again.
Access keys
Applications connect to Storage with an access key (ID and secret):
- create one key per application, with a name that tells who uses it;
- the secret is shown only once, when the key is created; keep it in an environment variable;
- choose the key's buckets (all or up to 10) and access level: Read only (list and download), Read and upload (also upload files) or Full (everything, including deleting; with all buckets, also creating and deleting buckets). Storage itself refuses anything outside the scope;
- limit the key to the application's networks: up to 20 IPv4 or IPv6 addresses, with or without CIDR. Requests from other networks are refused;
- revoke the key when it is no longer used.
Each organization can have up to 10 keys. You can only give a key the access you have yourself on the same buckets.
Privacy
Nothing in Storage is public. Buckets and files cannot be made public, and every access needs a valid signature, either from an access key or from an expiring link. To share a file, use Copy link in the console or create a signed link in your application.
Permissions
Storage permissions can be given for the whole Storage or bucket by bucket. To cover every bucket, including those created later, choose All buckets.
| Permission | Scope | Allows |
|---|---|---|
| List, download and view files | bucket | see files and folders, download, see details and copy links |
| Upload files and edit metadata | bucket | upload files, create folders and edit metadata |
| Delete files and folders | bucket | delete files and empty folders |
| Delete the bucket | bucket | delete the bucket and everything in it |
managed_service.read | Storage | see Storage and read files of every bucket |
managed_service.lifecycle.update | Storage | create buckets and upload, delete and remove in every bucket |
managed_service.credentials.rotate | Storage | create, edit and revoke access keys |
project.billing.read | Storage | see the cost |
managed_service.create | organization | create Storage |
Anyone with a permission on a bucket can see Storage, and the list shows only the buckets the person can act on. The console hides the buttons of actions the person cannot take. owner has full access; assistant, member and API Keys need the permissions. See Organizations.
Policy templates
When creating a policy on the members page, pick a Storage template and the buckets (all or some). The template fills in the permissions, and you can still adjust them before saving.
| Template | Permissions |
|---|---|
| Storage — read | list, download and view files in the chosen buckets |
| Storage — upload and read | the above plus uploading files and editing metadata |
| Storage — manage files | the above plus deleting files and folders |
| Storage — administrator | everything in every bucket, creating buckets, managing keys and seeing the cost |
FAQ
Can I have more than one Storage?
No. Each organization has one Storage and organizes files in buckets.
Can I rename a bucket?
No. Create another bucket, copy the files and delete the old one.
Does Storage work with applications outside Zenifra?
Yes. Any application with an access key, from an allowed network, connects through the public endpoint.
Next steps
Last updated on