Apresentando importações recursivas do S3 na Transloadit
Temos o prazer de mostrar uma novidade no nosso Robot /s3/import. Até agora, não oferecíamos uma forma de importar arquivos recursivamente dos seus buckets do Amazon S3 para usar na Transloadit. Normalmente, era preciso especificar cada pasta em um Assembly Step, e isso pode dar muito trabalho.
Na Transloadit, estamos sempre em busca de melhorias que possam facilitar o seu trabalho. Com as importações recursivas para o S3, ficará muito mais prático importar pastas profundamente aninhadas, ou até mesmo um bucket inteiro do S3 de uma só vez!

Como funciona?
Você pode fornecer um parâmetro path ao Robot, assim como antes. Com recursive: false
(definido como false por padrão, para não quebrar a compatibilidade com versões anteriores),
apenas os arquivos que estão diretamente na pasta representada por esse caminho serão importados.
Nenhum outro arquivo contido em subpastas desse caminho será incluído. Com
recursive: true, esses arquivos também seriam importados.
E se você fornecer path: '/', 'recursive': true, agora é possível importar um bucket inteiro do
S3. Incrível, não é?
Por padrão, o Robot importa mil arquivos por invocação. No entanto, há suporte a paginação com os parâmetros
page_numberefiles_per_page. Se você estiver importando um grande volume de arquivos e usar o Robot com paginação, garanta que nenhum arquivo seja adicionado ao caminho importado nesse meio-tempo. Caso contrário, alguns arquivos podem ser omitidos pela paginação.
O Template
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "s3_cred",
"path": "/",
"recursive": true
},
"resized": {
"use": ["imported"],
"robot": "/image/resize",
"result": true,
"height": 130,
"imagemagick_stack": "v2.0.3",
"width": 130,
"zoom": false
},
"exported": {
"use": ["imported", "resized"],
"robot": "/s3/store",
"credentials": "s3_cred",
"path": "${file.original_path}-resized@130/${file.basename}.${file.ext}"
}
}
}
As Assembly Instructions acima mostram uma instrução típica para importar arquivos e redimensioná-los usando o Robot /s3/import. Observe as mudanças em dois parâmetros-chave que diferenciam estas Instructions para uma importação recursiva das Instructions para uma importação normal:
- A presença de
"recursive": true. - O parâmetro
pathinformado é a raiz do bucket do S3.
Ao final, todos os arquivos importados aparecerão no JSON de resultado da Assembly.
Suporte a paginação
Como dissemos, o Robot /s3/import processa mil arquivos de uma vez. Mas e se você não precisar importar esses primeiros mil arquivos, ou talvez o décimo lote de mil arquivos? Para ajudar nisso, criamos o suporte a paginação. Agora você também pode indicar ao Robot a página exata a partir da qual ele deve começar a importar. Dê uma olhada nas Assembly Instructions abaixo:
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "s3_cred",
"path": "/",
"recursive": true,
"page_number": 10,
"files_per_page": 500
},
"resized": {
"use": ["imported"],
"robot": "/image/resize",
"result": true,
"height": 130,
"imagemagick_stack": "v2.0.3",
"width": 130,
"zoom": false
},
"exported": {
"use": ["imported", "resized"],
"robot": "/s3/store",
"credentials": "s3_cred",
"path": "${file.original_path}-resized@130/${file.basename}.${file.ext}"
}
}
}
Como você pode ver, dissemos ao Robot para começar a partir da décima página e importar recursivamente quinhentos arquivos por página.
Há algumas coisas que merecem atenção especial aqui:
- se você fornecer um número de página fora do índice, o Robot não retornará resultados.
- se você fornecer um parâmetro
files_per_pagemaior que 1000, será gerado um erro de validação. - se você usar importações recursivas, todos os arquivos serão importados em ordem alfabética.
Por enquanto é isso. Boas importações! E se você tiver dúvidas, comentários ou preocupações, fale com a gente.
