---
name: azion-criar-um-bucket
description: >-
  Crie um bucket do Object Storage pelo Azion Console, pela API da Azion ou pela Azion CLI, depois liste, atualize e exclua os seus buckets.
---

# Criar um bucket

Você cria um bucket no [Object Storage](/pt-br/documentacao/plataforma/object-storage/) pelo Azion Console, pela API da Azion ou pela Azion CLI. As mesmas três interfaces listam os seus buckets, alteram o nível de acesso de um bucket e excluem um bucket.

Um bucket novo carrega o nome e o nível de acesso que você definiu e aparece na lista de buckets da sua conta. Para os objetos que vão dentro dele, consulte [Upload e download de objetos](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/upload-e-download-de-objetos-do-bucket/).

---

## Pré-requisitos

- Um nome de bucket de 6 a 63 caracteres, formado por letras, números e hífen. O nome não pode começar com `azion` e é único em todas as contas Azion. Um nome que declara a finalidade, como `media-assets-prod`, mantém uma lista longa legível.
- Acesso ao Azion Console, para o procedimento pelo Console. Consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Um [personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/), para os procedimentos pela API.
- A [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada, para os procedimentos pela CLI.

---

## Crie um bucket pelo Azion Console

O formulário de criação pede dois valores, um em **General** e outro em **Settings**. Para criar o bucket:

1. **Abra a lista de buckets**

   Acesse [Azion Console](https://console.azion.com/) > **Object Storage** e inicie um novo bucket a partir da lista de **Buckets**.

2. **Nomeie o bucket**

   Em **General**, insira um **Name** que identifique o que o bucket guarda.

3. **Defina o nível de acesso**

   Em **Settings**, defina **Workloads Access** com o nível de que a plataforma precisa. O campo tem *Read Only* como padrão:

   - *Read Only*: a plataforma lê os objetos e não os modifica. Use esse nível para servir conteúdo estático por meio de uma aplicação.
   - *Read & Write*: a plataforma lê e escreve objetos, então uma function pode armazenar dados no bucket.
   - *Restricted*: a plataforma não lê nem escreve e o bucket não pode servir de base para uma aplicação. A API e o protocolo S3 continuam alcançando o bucket.

4. **Selecione Create Bucket**

O bucket aparece na lista de **Buckets** com o nome que você definiu.

---

## Crie um bucket pela API

Envie uma requisição `POST` para o endpoint de buckets. Tanto `name` quanto `workloads_access` são obrigatórios e o schema de criação não armazena nenhum outro campo. Para criar o bucket:

1. **Envie a requisição de criação**

   ```bash
   curl --location --request POST 'https://api.azion.com/v4/workspace/storage/buckets' \
   --header 'Accept: application/json' \
   --header 'Content-Type: application/json' \
   --header 'Authorization: Token [TOKEN VALUE]' \
   --data '{"name":"my-bucket-ro","workloads_access":"read_only"}'
   ```

2. **Leia a resposta**

   A API responde com HTTP `201`, ou `202` quando processa a requisição de forma assíncrona, e retorna o bucket que armazenou:

   ```json
   {
     "state": "executed",
     "data": {
       "name": "my-bucket-ro",
       "workloads_access": "read_only",
       "last_editor": "user@example.com",
       "last_modified": "2026-01-01T12:00:00.000000+00:00",
       "product_version": "1.0"
     }
   }
   ```

O bucket é armazenado sob o nome em `data.name` e `last_editor`, `last_modified` e `product_version` são somente leitura.

---

## Crie um bucket pela Azion CLI

O substantivo é `storage` e o nível de acesso vai em `--workloads-access`. Para criar o bucket:

```bash
azion create storage bucket --name my-bucket-ro --workloads-access read_only
```

O comando imprime uma linha:

```text
Bucket created successfully
```

Execute o comando sem flags e a Azion CLI pergunta cada valor. `azion create storage bucket -h` lista todas as flags que ele aceita.

---

## Liste os seus buckets

Toda interface retorna os buckets da conta com a qual você está autenticado.

### Azion Console

A [página de Object Storage](https://console.azion.com/object-storage) do Azion Console lista todos os buckets criados na sua conta, sob o breadcrumb **Object Storage** > **Buckets**. Cada linha carrega **Name**, **Size**, **Last Editor** e **Last Modified**.

### A API

Envie uma requisição `GET` para o endpoint de buckets:

```bash
curl --location 'https://api.azion.com/v4/workspace/storage/buckets' \
--header 'Accept: application/json' \
--header 'Authorization: Token [TOKEN VALUE]'
```

A resposta carrega os buckets em `results`, com a página a que eles pertencem:

```json
{
  "count": 1,
  "total_pages": 1,
  "page": 1,
  "page_size": 100,
  "results": [
    {
      "name": "my-bucket-ro",
      "workloads_access": "read_only",
      "last_editor": "user@example.com",
      "last_modified": "2026-01-01T12:00:00.000000+00:00",
      "product_version": "1.0"
    }
  ]
}
```

O envelope também carrega `next` e `previous`. Percorra uma lista mais longa com `page` e `page_size`, em que `page_size` para em 100. Para encontrar um bucket, `search` corresponde parcialmente a um nome e `name` corresponde a ele exatamente.

### A Azion CLI

Envie o comando de listagem, com o tamanho de página que você quer:

```bash
azion list storage bucket --page-size 10
```

O comando imprime uma tabela com uma coluna `NAME` e uma coluna `WORKLOADS ACCESS` e `--page` avança para a página seguinte.

---

## Altere o nível de acesso de um bucket

`workloads_access` decide o que a Azion Platform pode fazer com o bucket. Não restringe a API nem o protocolo S3: uma credencial que carrega `writeFiles` escreve em um bucket `read_only`.

| Valor        | Label no Console | A Azion Platform pode                                                     | A API e o protocolo S3 podem          |
| ------------ | ---------------- | ------------------------------------------------------------------------- | ------------------------------------- |
| `read_only`  | *Read Only*      | Ler objetos                                                               | Ler e escrever, conforme a credencial |
| `read_write` | *Read & Write*   | Ler e escrever objetos                                                    | Ler e escrever, conforme a credencial |
| `restricted` | *Restricted*     | Não ler nem escrever; o bucket não pode servir de base para uma aplicação | Ler e escrever, conforme a credencial |

> **Atenção**
>
> Um bucket definido como `read_write` e servido por uma aplicação pode ser modificado por qualquer pessoa que o alcance, por uma requisição `PUT` que sobrescreve um objeto. Uma function na frente do bucket move essa decisão para um código que você controla, então a function concede ou recusa cada escrita. Defina o nível de que cada caso de uso precisa e combine-o com as permissões de conta descritas em [Como gerenciar permissões de times](/pt-br/documentacao/fundamentos/teams-permissions/).

### Azion Console

Para alterar o nível:

1. **Abra o bucket**

   Acesse [Azion Console](https://console.azion.com/) > **Object Storage** e selecione o bucket na lista de **Buckets**. A página **Bucket settings** é aberta.

2. **Defina o novo nível**

   Em **Settings**, defina **Workloads Access** com o valor que você quer.

3. **Selecione Save**

O bucket carrega o novo nível de acesso.

### A API

Envie uma requisição `PATCH` para o bucket, com `workloads_access` como único campo:

```bash
curl --location --request PATCH 'https://api.azion.com/v4/workspace/storage/buckets/my-bucket-ro' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{"workloads_access":"read_write"}'
```

A API responde com HTTP `200`, ou `202` quando processa a requisição de forma assíncrona, e retorna o bucket com o novo nível:

```json
{
  "state": "executed",
  "data": {
    "name": "my-bucket-ro",
    "workloads_access": "read_write",
    "last_editor": "user@example.com",
    "last_modified": "2026-01-01T12:00:00.000000+00:00",
    "product_version": "1.0"
  }
}
```

> **nota**
>
> Um bucket não pode ser renomeado. Um campo `name` no corpo de um `PATCH` retorna HTTP `400` com o erro `17004`, `Name Cannot Be Changed`. Para usar um nome diferente, crie um segundo bucket e mova os objetos para ele.

### A Azion CLI

Nomeie o bucket com `--name` e o novo nível com `--workloads-access`:

```bash
azion update storage bucket --name my-bucket-ro --workloads-access read_write
```

O comando imprime uma linha:

```text
Bucket updated successfully
```

`azion update storage bucket -h` lista todas as flags que ele aceita.

---

## Exclua um bucket

Um bucket só é excluído enquanto está vazio.

> **Atenção**
>
> A Azion recusa excluir um bucket que guarda objetos e recusa por 24 horas depois que o seu último objeto foi removido, porque um objeto excluído é removido permanentemente após um período de carência de 24 horas. Qualquer uma das duas requisições retorna HTTP `400` com o erro `17006`, `Cannot Delete Non Empty Bucket`. Um bucket que nunca guardou um objeto é excluído imediatamente.

### Azion Console

Para excluir o bucket:

1. **Abra o bucket**

   Acesse [Azion Console](https://console.azion.com/) > **Object Storage** e selecione o bucket na lista de **Buckets**. A página **Bucket settings** é aberta.

2. **Selecione Delete Bucket**

   O controle fica em **Danger Zone**, que avisa que a ação remove permanentemente o bucket e todos os dados associados a ele da Azion Platform e não pode ser desfeita.

O bucket sai da lista de **Buckets**.

### A API

Envie uma requisição `DELETE` para o bucket:

```bash
curl --location --request DELETE 'https://api.azion.com/v4/workspace/storage/buckets/my-bucket-ro' \
--header 'Accept: application/json' \
--header 'Authorization: Token [TOKEN VALUE]'
```

A API responde com `state` definido como `executed`:

```json
{"state": "executed"}
```

### A Azion CLI

Nomeie o bucket com `--name`:

```bash
azion delete storage bucket --name my-bucket-ro
```

O comando nomeia o bucket que removeu:

```text
Bucket my-bucket-ro was deleted successfully
```

Um bucket excluído não responde mais a nenhuma requisição e a API retorna o erro `17005`, `Bucket Does Not Exist`, para ele.

---

## Próximos passos

- [Upload e download de objetos](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/upload-e-download-de-objetos-do-bucket.md): Coloque objetos no bucket que você criou, leia-os de volta e remova-os.
- [Usar um bucket como origem de uma aplicação](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/bucket-como-connector.md): Sirva os objetos ao público por meio de um connector e de uma regra do Rules Engine.
- [Buckets e objetos](/pt-br/documentacao/plataforma/object-storage/buckets-e-objetos.md): Todos os campos, operações e padrões dos endpoints de bucket e de objeto.
- [Usar ferramentas compatíveis com S3](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/protocolo-s3-para-object-storage.md): Alcance o bucket com uma credencial S3 a partir das ferramentas que você já usa.
