Armazém

Conectar aplicações

O Armazém funciona com as ferramentas de linha de comando e os SDKs de armazenamento de objetos mais usados. Para conectar, você precisa de três coisas: o endereço, a região e uma chave de acesso criada no console.

Antes de começar

  1. Crie um bucket no menu Armazém do console.
  2. Crie uma chave de acesso para a aplicação e guarde o ID e o segredo. O segredo aparece uma única vez.
  3. Se limitou a chave a algumas redes, confirme que a aplicação sai por uma delas.
DadoValor
Endereçohttps://armazem.zenifra.com
Regiãobr-sp1
Acessopor caminho (path style)

Guarde a chave em variáveis de ambiente, nunca no código. Em projetos da Zenifra, use as variáveis de ambiente do projeto.

ACCESS_KEY_ID=...
SECRET_ACCESS_KEY=...

AWS CLI

aws configure set aws_access_key_id "$ACCESS_KEY_ID" --profile zenifra
aws configure set aws_secret_access_key "$SECRET_ACCESS_KEY" --profile zenifra
aws configure set default.s3.addressing_style path

aws --profile zenifra --endpoint-url https://armazem.zenifra.com --region br-sp1 s3 ls
aws --profile zenifra --endpoint-url https://armazem.zenifra.com --region br-sp1 s3 cp ./foto.png s3://fotos/2026/foto.png

JavaScript e TypeScript

npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner
import { GetObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'
import { getSignedUrl } from '@aws-sdk/s3-request-presigner'

const client = new S3Client({
  endpoint: 'https://armazem.zenifra.com',
  region: 'br-sp1',
  forcePathStyle: true,
  credentials: { accessKeyId: process.env.ACCESS_KEY_ID!, secretAccessKey: process.env.SECRET_ACCESS_KEY! },
})

await client.send(new PutObjectCommand({ Bucket: 'fotos', Key: '2026/foto.png', Body: arquivo, ContentType: 'image/png' }))

const link = await getSignedUrl(client, new GetObjectCommand({ Bucket: 'fotos', Key: '2026/foto.png' }), { expiresIn: 3600 })

Python

pip install boto3
import os
import boto3
from botocore.config import Config

client = boto3.client(
    's3',
    endpoint_url='https://armazem.zenifra.com',
    region_name='br-sp1',
    aws_access_key_id=os.environ['ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ['SECRET_ACCESS_KEY'],
    config=Config(s3={'addressing_style': 'path'}),
)

client.upload_file('backup.tar.gz', 'backups', '2026/backup.tar.gz')
link = client.generate_presigned_url('get_object', Params={'Bucket': 'backups', 'Key': '2026/backup.tar.gz'}, ExpiresIn=3600)

Um link assinado dá acesso a um único arquivo por um tempo limitado, sem expor a chave. Use links para:

  • entregar um arquivo a um usuário final;
  • receber um envio direto do navegador do usuário, sem passar pelo seu servidor;
  • compartilhar um arquivo por e-mail ou chat.

Para receber envios direto do navegador, configure no bucket uma regra de CORS que libere o domínio do seu site (por exemplo, com PutBucketCors no SDK). Um link vale no máximo 7 dias. No console, Copiar link gera um link de download de 7 dias.

Boas práticas

  • Uma chave por aplicação. Assim você revoga uma sem afetar as outras.
  • Limite as redes. Uma chave restrita às redes da aplicação não funciona se vazar.
  • Trate limites com nova tentativa. Acima do limite de tráfego da chave, o Armazém recusa a requisição com SlowDown (HTTP 503). Os SDKs já tentam de novo com espera; mantenha esse comportamento ligado.
  • Envie arquivos grandes em partes. Os SDKs dividem envios grandes automaticamente. O limite é de 20 GB por arquivo.

Erros comuns

ErroCausa provável
403 AccessDeniedchave revogada, rede fora da lista da chave, Armazém somente leitura ou operação não permitida, como tornar um arquivo público
403 SignatureDoesNotMatchsegredo errado, relógio da máquina fora de hora ou link assinado alterado
404 NoSuchBucketbucket inexistente ou nome digitado errado
503 SlowDownlimite de tráfego da chave; tente de novo com espera

Próximos passos

Última atualização em

Nessa página