Skip to content

Adicionar um canal S3

Melhor uso

Use o canal S3 quando:

  • Você quiser conectar qualquer serviço de armazenamento de objetos compatível com S3, como Cloudflare R2, Backblaze B2, MinIO, AWS S3 ou outro provedor compatível.
  • Você preferir o modelo padrão de configuração S3: Endpoint, Access Key e Secret Key.
  • Você não quiser usar o canal nativo de binding Cloudflare R2, ou seu provedor de armazenamento não for Cloudflare R2.

O que você precisa antes de começar

RequisitoFinalidade
S3 EndpointEndpoint da API S3 do serviço de armazenamento de objetos.
Bucket nameBucket em que os arquivos serão armazenados.
RegionRegião de armazenamento. Para Cloudflare R2, normalmente é auto.
Access Key IDID da access key S3.
Secret Access KeySecret access key S3.
CDN domainDomínio personalizado opcional para acesso aos arquivos.

Exemplo para Cloudflare R2 pela API S3:

text
Endpoint: https://your-account-id.r2.cloudflarestorage.com
Bucket: your-r2-bucket-name
Region: auto
Access Key ID: copied from the Cloudflare R2 API token
Secret Access Key: copied from the Cloudflare R2 API token

Onde adicionar

  1. Abra Configurações do sistema.
  2. Acesse Configurações de upload.
  3. Clique em Adicionar canal no canto superior direito.
  4. Selecione S3.

Referência de campos

CampoO que fazObrigatório
Nome do canalUm nome amigável para este canal S3, como s3test ou R2-S3.Sim
Habilitar canalControla se este canal participa da seleção de upload.Recomendado
EndpointEndpoint completo do serviço S3, incluindo https://.Sim
Custom CDN domainOpcional. Quando definido, os links de arquivo gerados preferem este domínio.Não
Bucket nameNome do bucket, como s3test ou img-r2.Sim
Bucket regionRegião. Para Cloudflare R2, normalmente é auto.Sim
Access Key IDID da access key S3.Sim
Secret Access KeySecret access key S3.Sim
Path-style accessChave de compatibilidade. Desativado por padrão. Alguns serviços MinIO, OpenList ou S3 self-hosted podem exigir isso.Não
Limite de cotaControla se este canal S3 participa da seleção de upload com base na capacidade.Não
Limite de capacidadeObrigatório depois que o limite de cota é habilitado, por exemplo 10 GB.Obrigatório quando o limite de cota está habilitado
LimiarInterrompe gravações quando o uso atinge esta porcentagem, por exemplo 90%.Obrigatório quando o limite de cota está habilitado
ObservaçãoNotas para sua própria manutenção.Não

Criar chaves de API S3 do Cloudflare R2

  1. Abra o Cloudflare Dashboard.
  2. Acesse R2 Object Storage.
  3. Encontre Manage R2 API Tokens ou a entrada de gerenciamento de token de API.

Entrada do token de API R2

  1. Crie um token de API R2 que possa acessar o bucket de destino.

Criar um token de API da conta

  1. Copie o Access Key ID e o Secret Access Key gerados.

Copiar os valores do token

  1. Volte para a página do bucket R2 e confirme o nome do bucket.
  2. Registre o endpoint da API S3 da conta. Ele normalmente tem esta aparência:
text
https://your-account-id.r2.cloudflarestorage.com

Etapas de configuração

  1. Abra Configurações de upload.
  2. Clique em Adicionar canal.
  3. Selecione S3.
  4. Informe um nome de canal que você reconheça, por exemplo s3test.
  5. Informe o endpoint da API S3 em Endpoint.
  6. Se você usar uma CDN personalizada, informe-a em Custom CDN domain; caso contrário, deixe em branco.
  7. Informe o nome do bucket.
  8. Informe a região. Para o exemplo do Cloudflare R2, use auto.
  9. Informe Access Key ID e Secret Access Key.
  10. Deixe path-style access desativado, a menos que seu provedor exija isso explicitamente.
  11. Se quiser controle de capacidade, habilite o limite de cota e informe o limite de capacidade e o limiar.
  12. Clique em Salvar.

Adicionar configuração S3

Como verificar

VerificaçãoComo verificar
O cartão do canal apareceDepois de salvar, a página Configurações de upload deve mostrar um cartão de canal S3.
O canal está habilitadoO switch no canto superior direito do cartão deve permanecer ligado.
Os campos principais foram salvosA visualização de detalhes deve mostrar Endpoint, Bucket, Region, path-style access e campos relacionados.
O upload funcionaEnvie uma imagem de teste e confirme que o objeto aparece no bucket de destino.
O link abreO link da imagem retornado após o upload deve abrir normalmente.
A exibição de capacidade funcionaSe o limite de cota estiver habilitado, o cartão deve mostrar a capacidade usada e o limite configurado.

As estatísticas de capacidade do S3 são calculadas a partir dos registros locais de arquivos do ImgHost, não por consulta em tempo real ao bucket do provedor. Depois de salvar uma configuração S3, o sistema recalcula o ledger de cota a partir dos registros D1 atuais.

Consulta de cota bem-sucedida

FAQ

Devo habilitar path-style access?

Normalmente, não.

Habilite somente quando seu provedor compatível com S3 não oferecer suporte a URLs virtual-hosted-style, ou quando a documentação do provedor exigir explicitamente path-style access. Alguns endpoints MinIO, S3 self-hosted e compatíveis com OpenList podem precisar disso.

Para que serve o CDN domain?

Se você colocar uma CDN ou um domínio de acesso personalizado na frente do bucket, informe-o aqui.

Depois de configurado, os links de arquivo gerados preferem esse domínio. Se você não usa CDN, deixe em branco.

Por que o upload falha?

Verifique estes itens primeiro:

  1. O Endpoint inclui a URL completa com https://.
  2. O nome do bucket está correto.
  3. A Region corresponde ao requisito do provedor.
  4. Access Key ID e Secret Access Key foram copiados por completo.
  5. A chave tem permissão de gravação no bucket de destino.
  6. O provedor não exige path-style access, ou path-style access foi habilitado se necessário.

Lista de verificação rápida

text
Prepare S3 Endpoint, Bucket, Region, Access Key, and Secret Key
-> Open Upload Settings
-> Add Channel
-> Select S3
-> Enter Endpoint / Bucket / Region / Access Key / Secret Key
-> Enter a CDN domain if needed
-> Leave path-style access off by default
-> Enable quota limit if needed
-> Save
-> Upload a test image and check the result

Released as user documentation for ImgHost.