Migrar do Cloudinary para a Transloadit
O Cloudinary organiza o processamento de mídia em torno de predefinições de upload, URLs de transformação e da sua biblioteca de ativos. A Transloadit organiza o processamento em torno de Assembly Instructions: fluxos de trabalho explícitos que executam Robots para fazer upload, importar, transformar, otimizar, armazenar e servir arquivos.
Este guia mostra como converter padrões comuns do Cloudinary em Templates da Transloadit.
Mapa de migração
| Conceito do Cloudinary | Equivalente na Transloadit |
|---|---|
| Predefinição de upload | Template salvo, referenciado por template_id |
| URL de transformação | Uma requisição de Assembly, ou o Smart CDN com Robots compatíveis e um Step final /file/serve |
| Transformação antecipada | Executar os Steps do Template no momento do upload, em vez de sob demanda |
| Redimensionamento/corte de imagem | 🤖/image/resize |
| Otimização de imagem | 🤖/image/optimize |
| Transcodificação de vídeo | 🤖/video/encode |
| Vídeo adaptativo | 🤖/video/adaptive ou 🤖/video/ondemand |
| Armazenamento de ativos | 🤖/s3/store ou outro Robot de exportação |
| URLs de entrega | As URLs do seu armazenamento/CDN, ou o Smart CDN com um Step final 🤖/file/serve |
| Webhooks | Assembly Notifications |
Comece pelo fluxo de trabalho, não pela URL
As URLs do Cloudinary costumam codificar a transformação diretamente nelas. Na Transloadit, coloque essa transformação em um Template e chame-o a partir da sua aplicação. Assim, as regras de processamento ficam em um único lugar, no lado do servidor. Mantenha as definições de Template no seu próprio controle de versão, junto com o código da sua aplicação.
Por exemplo, uma URL de imagem do Cloudinary que corta, redimensiona, converte e otimiza pode se tornar este Template:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"hero": {
"use": ":original",
"robot": "/image/resize",
"width": 1600,
"height": 900,
"resize_strategy": "fillcrop",
"format": "webp"
},
"optimized": {
"use": "hero",
"robot": "/image/optimize",
"result": true
},
"exported": {
"use": "optimized",
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "media/${unique_prefix}/${file.url_name}",
"url_prefix": "https://cdn.example.com/",
"acl": "bucket-default"
}
}
}
Substitua YOUR_AWS_CREDENTIALS por uma Credencial de terceiros salva.
Este exemplo pressupõe que o seu CDN serve a raiz do bucket e tem permissão para ler os objetos dele;
url_prefix altera apenas as URLs retornadas, não a configuração do CDN nem as permissões de acesso.
acl: "bucket-default" não envia nenhuma ACL de objeto; configure o acesso pela
política do seu bucket e pelo acesso à origem do CDN.
O seu backend cria uma requisição de Assembly assinada com o template_id salvo e com notify_url para
Assembly Notifications. Verifique a assinatura da notificação e exija
ASSEMBLY_COMPLETED antes de atualizar os registros da aplicação. Neste exemplo, leia os arquivos exportados
em results.optimized: o Step de armazenamento atualiza as URLs do Step que gerou os arquivos. Persista apenas
resultados com is_temp_url: false; as URLs temporárias da Transloadit expiram após 24 horas e não são URLs
de entrega. Consulte como salvar resultados de conversão.
Substitua URLs dinâmicas de imagem
Se a sua aplicação depende de URLs de transformação dinâmicas, há dois caminhos de migração comuns:
- Use um Template por família de transformações e dispare uma Assembly quando o ativo for criado ou alterado.
- Use o Smart CDN com URLs assinadas para transformações sob demanda que devem ficar em cache na borda.
Para páginas com muito tráfego, prefira gerar e armazenar antecipadamente as variantes canônicas. Para bibliotecas de ativos muito grandes, com padrões de acesso de cauda longa, o Smart CDN pode reduzir o trabalho de pré-processamento.
O Smart CDN precisa de um Template separado, composto apenas por Robots compatíveis, com um ramo de
resposta que termine em /file/serve. Por exemplo: importar uma imagem, redimensioná-la e servir esse
resultado. /video/encode e /video/adaptive não são compatíveis com o Smart CDN; gere as URLs
assinadas do Smart CDN no seu backend.
Importe os ativos existentes do Cloudinary
Se a mídia existente estiver disponível por URLs HTTPS, use o Robot 🤖/http/import em vez de enviá-la por upload novamente:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "${fields.cloudinary_url}"
},
"thumbnail": {
"use": "imported",
"robot": "/image/resize",
"width": 400,
"height": 400,
"resize_strategy": "fillcrop",
"result": true
},
"exported": {
"use": ["imported", "thumbnail"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "cloudinary-import/${unique_prefix}/${file.url_name}",
"acl": "bucket-default"
}
}
}
Passe uma URL de origem autorizada como o campo cloudinary_url da Assembly, selecionada pelo seu backend a
partir do seu inventário de ativos. Uma URL transformada do Cloudinary importa essa versão renderizada,
e não automaticamente o original. Mantenha o ID e a URL antigos do ativo até que a exportação
concluída esteja acessível pelo caminho de entrega pretendido e que as dimensões e a qualidade dela
atendam aos seus requisitos. Este Template de importação retorna os arquivos exportados em
results.imported e results.thumbnail. Um objeto privado no S3 ainda precisa de um download autorizado
ou do CDN que você configurou.
Lista de verificação
- Liste as transformações do Cloudinary que a sua aplicação realmente usa.
- Agrupe transformações semelhantes em Templates da Transloadit.
- Crie Credenciais de terceiros para o seu provedor de armazenamento de destino.
- Adicione Assembly Notifications para que a sua aplicação possa armazenar as URLs de armazenamento exportadas.
- Importe retroativamente os ativos existentes com
/http/importem lotes de tamanho limitado; o parâmetrourldesse Robot também aceita um array. - Atualize o código de entrega para ler do seu armazenamento/CDN ou do Smart CDN.