---
title: Object Storage (S3, Ceph RGW)
description: Venda armazenamento S3 pré-pago no seu cluster Ceph: requisitos do RGW, usuário admin e cotas, e como conectar o backend a uma zona no NexCMP.
url: https://nexcmp.com/pt/docs/infrastructure/s3/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Object Storage (S3, Ceph RGW) {#object-storage-s3-ceph-rgw}

> **Onde encontrar no admin:** Infrastructure › Cloud provider › Ceph S3 (RGW) (`/infra/s3`). Contas: Services › Object Storage › S3 accounts (`/s3`). Preços: Services › Object Storage › PAYG pricing (`/s3/policy`). Ative o módulo em System › Admin › License & updates.

## O que faz {#what-it-does}

Os clientes criam contas S3 no portal e obtêm chaves de acesso. O NexCMP cria e exclui os usuários correspondentes no **seu Ceph RADOS Gateway (RGW)** por meio da API Admin Ops do RGW, lê o uso para faturamento e cobra conforme o uso: armazenamento acima de uma franquia gratuita por GB por mês (cobrado por hora) e tráfego de download por GB. Os uploads são gratuitos.

Use-o quando você opera um cluster Ceph com RGW e deseja revender armazenamento de objetos.

## Requisitos {#requirements}

| Item | Requisito |
|---|---|
| Ceph | Um cluster com pelo menos um daemon RGW, com a **Admin Ops API** ativada (a padrão `rgw_enable_apis` inclui `admin`). |
| Usuário admin | Um usuário RGW para o NexCMP com as permissões listadas abaixo. Não use um usuário que possua dados de clientes. |
| Endpoints | O endpoint S3 que os clientes usam e o endpoint Admin Ops. Ambos são gravados como `https://host` **sem caminho, porta 443 apenas**, e devem resolver para um endereço **público**: endereços de loopback, link-local, multicast, privados e unique-local são recusados. |
| Certificado | Um certificado válido para o host do endpoint. |
| Log de uso | O log de uso do RGW ativado (`rgw_enable_usage_log = true`), para que a API de uso possa relatar o tráfego. |
| Zone | Uma master zone com o serviço **Object Storage (S3)** marcado. Veja [Zones](https://nexcmp.com/pt/docs/infrastructure/zones/). |
| Armazenamento | Capacidade no Ceph para as cotas que você vende. |
| Depende de | O módulo **Object Storage**. O tráfego de download também conta para [Bandwidth](https://nexcmp.com/pt/docs/catalog/bandwidth/). |

## Preparar a infraestrutura {#prepare-the-infrastructure}

Em um nó de administração do Ceph:

1. Crie o usuário administrador e dê a ele as capacidades Admin Ops necessárias:

   ```bash
   radosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin"
   radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read"
   radosgw-admin user info --uid=nexcmp-admin
   ```

   Copie `access_key` e `secret_key` da saída. Eles são a **Admin access key** e a **Admin secret key** no NexCMP.

2. Ative o log de uso e reinicie os gateways:

   ```bash
   ceph config set client.rgw rgw_enable_usage_log true
   ```

3. Coloque os gateways atrás de HTTPS na porta 443 (um proxy reverso ou o TLS próprio do RGW), publique o nome DNS e teste a partir do servidor do painel:

   ```bash
   curl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/
   ```

   Você deve receber uma resposta XML do S3 (HTTP 200 ou 403), e não um timeout.


## Conectar no NexCMP {#connect-in-nexcmp}

1. **Atribua o serviço S3 a uma zone.** Abra **Infrastructure › Datacenter › Zone**, edite a zone e marque **Object Storage (S3)**. Apenas master zones com o serviço S3 aparecem no formulário do backend.


2. Abra **Infrastructure › Cloud provider › Ceph S3 (RGW)** e clique em **Add backend**:

   | Campo | Valor de exemplo |
   |---|---|
   | Backend name | `Ceph RGW 1` |
   | Zone | a zone da etapa 1 |
   | RGW Admin Ops endpoint | `https://s3.example.com` |
   | Endpoint S3 do cliente | `https://s3.example.com` |
   | Região de assinatura do S3 | `default` |
   | Chave de acesso do admin | `XXXX` |
   | Chave secreta do admin | `XXXX` |
   | Active | on |
   | Habilitar vendas (exige teste de conexão prévio) | **off** por enquanto |
   | Motivo da alteração | `initial setup` |

      ![Diálogo de S3 do backend com exemplos de endpoints, região e chaves mascaradas](https://nexcmp.com/pt/docs/images/infrastructure/s3-02-backend-dialog.webp)

3. Clique em **OK** (salvar) e depois em **Check** na linha. O NexCMP chama a API Admin Ops com a chave de admin. **Ceph connection successful** e a tag **Verified** indicam que está funcionando.


4. Clique em **Edit**, ative **Enable sales** e salve. O NexCMP recusa-se a abrir as vendas até que uma verificação seja bem-sucedida.
5. Abra **Services › Object Storage › PAYG pricing** e defina os preços:

   | Campo | Significado |
   |---|---|
   | Armazenamento além da camada gratuita (VND/GB/mês) | Preço de armazenamento; cobrado por hora como o preço mensal dividido por 730. |
   | Download (VND/GB) | Preço para tráfego de saída. |
   | Upload (VND/GB) | Sempre 0. |
   | Camada gratuita com VM em execução (GB) | Fixo em 100 GB por conta enquanto o cliente tiver pelo menos uma VM em execução, compartilhado entre suas contas de S3 por tamanho. |
   | Limite de dívida (VND) | Quanto de uso não pago é permitido. |
   | Limite de faturamento (VND) | O uso é consolidado em uma fatura assim que ultrapassa este valor. |
   | Saldo mín. para criar S3 (VND) | Saldo necessário na carteira para criar uma conta. |
   | Máx. de contas S3 por cliente, cota técnica padrão (GB) | Limites para novas contas. |

      ![Formulário de preços PAYG do S3](https://nexcmp.com/pt/docs/images/infrastructure/s3-04-pricing.webp)

   Os preços do S3 são inseridos em VND. Eles são convertidos para exibição e cobrança na carteira à taxa de câmbio vigente; consulte [Currency and exchange rates](https://nexcmp.com/pt/docs/catalog/currency-and-exchange-rates/).

## Verificar {#verify}

1. **Check** retorna "Ceph connection successful".
2. Como cliente (ou com uma conta de teste), crie uma conta S3. No Ceph, `radosgw-admin user list` exibe um novo usuário, e **S3 accounts** o lista.
3. Crie um bucket com qualquer cliente S3 usando as chaves do cliente contra o endpoint do cliente. Faça o upload de um arquivo.
4. Após o próximo ciclo de faturamento da hora, **S3 accounts** exibe o uso.

## Limites e observações {#limits-and-notes}

- Um backend que já possui contas vinculadas mantém sua **zona, endpoint e região**; para alterá-los, crie um novo backend.
- Uma zona pode ter seu próprio backend; contas e backends ficam permanentemente vinculados a uma zona.
- A camada gratuita e a gratuidade de uploads são regras fixas, não opções.
- As chaves são armazenadas criptografadas; o console exibe apenas um campo para "deixar em branco para manter a chave atual". Um par de chaves é sempre inserido em conjunto.
- As chaves secretas dos clientes são exibidas uma vez na criação e nunca mais. Uma chave perdida é substituída por rotação.

## Resolução de problemas {#troubleshooting}

| Sintoma | Causa | Correção |
|---|---|---|
| "Endpoint requires HTTPS" | O endpoint usa HTTP simples | Publique HTTPS na porta 443. |
| "Porta do endpoint não permitida" | Uma porta diferente de 443 | Use a porta HTTPS padrão. |
| "Endereço do endpoint não permitido" | O nome resolve para um endereço privado, de loopback, link-local ou unique-local | Use um endereço público. |
| "O endpoint deve conter apenas protocolo e host" | A URL possui um caminho, consulta ou informações de usuário | Use apenas `https://host`. |
| "Falha ao resolver o endpoint" | O DNS não resolve a partir do servidor do painel | Corrija o DNS. |
| "Failed to connect to Ceph" | Erro de firewall ou TLS | Teste com `curl` a partir do servidor do painel. |
| "Ceph returned HTTP 403 AccessDenied" | Chaves incorretas ou permissões ausentes | Verifique as chaves e execute `radosgw-admin caps add` novamente. |
| "Invalid Ceph response" | O endpoint não é uma RGW Admin Ops API | Aponte para o RGW e não para uma página web. |
| "O teste de conexão deve ser bem-sucedido antes de habilitar as vendas" | Você ativou as vendas antes de um **Check** bem-sucedido | Execute **Check** e, em seguida, ative as vendas. |
| "Todas as novas chaves para o endpoint são obrigatórias" | Endpoint alterado sem ambas as chaves | Insira a chave de acesso e a chave secreta juntas. |
| "O backend já possui recursos vinculados; crie um novo backend para alterar a zona ou o endpoint" | Existem contas neste backend | Crie um novo backend. |
| "Selecione a zona master com serviço S3" | A zona não é uma zona mestre ou não possui o serviço S3 | Marque **Object Storage (S3)** na zona. |
| "Invalid region" | A região contém caracteres diferentes de letras, dígitos, `-` e `_` | Use `default` ou o nome do seu zonegroup do RGW. |
| "Resumo de uso do Ceph ausente; não faturado" | Log de uso desativado | Ative `rgw_enable_usage_log`. |
