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
- Crie um bucket no menu Armazém do console.
- Crie uma chave de acesso para a aplicação e guarde o ID e o segredo. O segredo aparece uma única vez.
- Se limitou a chave a algumas redes, confirme que a aplicação sai por uma delas.
| Dado | Valor |
|---|---|
| Endereço | https://armazem.zenifra.com |
| Região | br-sp1 |
| Acesso | por 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.pngJavaScript e TypeScript
npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presignerimport { 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 boto3import 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)Links assinados
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
| Erro | Causa provável |
|---|---|
403 AccessDenied | chave revogada, rede fora da lista da chave, Armazém somente leitura ou operação não permitida, como tornar um arquivo público |
403 SignatureDoesNotMatch | segredo errado, relógio da máquina fora de hora ou link assinado alterado |
404 NoSuchBucket | bucket inexistente ou nome digitado errado |
503 SlowDown | limite de tráfego da chave; tente de novo com espera |
Próximos passos
Última atualização em
Armazém: armazenamento de objetos
Guarde imagens, vídeos, backups e outros arquivos no Armazém da Zenifra, com buckets privados, chaves por aplicação e links que expiram.
Limites e cobrança do Armazém
Limites de buckets, armazenamento, tamanho de arquivo e tráfego por chave do Armazém, como pedir mais, preços e como o consumo é medido.