Présentation des importations récursives pour S3 dans Transloadit
Nous sommes ravis de vous présenter une nouveauté de notre Robot /s3/import (English). Jusqu’à présent, nous ne proposions aucun moyen d’importer de manière récursive des fichiers depuis vos buckets Amazon S3 pour les utiliser dans Transloadit. En général, il fallait indiquer chaque dossier dans un Assembly Step, ce qui peut représenter beaucoup de travail.
Chez Transloadit, nous sommes toujours à l’affût d’améliorations susceptibles de vous faciliter le travail. Grâce aux importations récursives pour S3, il sera bien plus pratique d’importer des dossiers profondément imbriqués, voire un bucket S3 entier en une seule fois !

Comment cela fonctionne-t-il ?
Vous pouvez fournir un paramètre path au Robot, comme auparavant. Avec recursive: false
(défini sur false par défaut, pour ne pas rompre la rétrocompatibilité), seuls les fichiers situés
directement dans le dossier représenté par ce chemin seront importés. Les autres fichiers contenus
dans les sous-dossiers de ce chemin ne seront pas inclus. Avec recursive: true, ces
fichiers seraient eux aussi importés.
Et si vous indiquez path: '/', 'recursive': true, vous pouvez désormais importer un bucket S3 entier.
Formidable, non ?
Par défaut, le Robot importe mille fichiers par invocation. La pagination est toutefois prise en charge avec les paramètres
page_numberetfiles_per_page. Si vous importez un grand nombre de fichiers et utilisez le Robot avec la pagination, vous devriez vous assurer qu’aucun fichier n’est ajouté au chemin importé entre-temps. Sinon, certains fichiers peuvent être omis par la pagination.
Le 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}"
}
}
}
Les Assembly Instructions ci-dessus montrent une instruction typique pour importer des fichiers et les redimensionner à l’aide du Robot /s3/import (English). Notez les modifications apportées à deux paramètres clés qui distinguent ces Instructions d’importation récursive des Instructions d’importation normale :
- La présence de
"recursive": true. - Le paramètre
pathtransmis correspond à la racine du bucket S3.
Une fois l’opération terminée, tous les fichiers importés apparaîtront dans le JSON de résultat de l’Assembly.
Prise en charge de la pagination
Comme indiqué, le Robot /s3/import (English) traitera mille fichiers à la fois. Mais que faire si vous n’avez pas besoin d’importer ces mille premiers fichiers, ou peut-être le dixième lot de mille fichiers ? Pour cela, nous avons mis en place la prise en charge de la pagination. Vous pouvez désormais aussi indiquer au Robot la page exacte à partir de laquelle il doit commencer l’importation. Jetez un œil aux Assembly Instructions ci-dessous :
{
"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}"
}
}
}
Comme vous pouvez le voir, nous avons demandé au Robot de commencer à la dixième page et d’importer de manière récursive cinq cents fichiers par page.
Quelques points méritent une attention particulière :
- Si vous indiquez un numéro de page hors limites, le Robot ne renverra aucun résultat.
- Si vous indiquez un paramètre
files_per_pagesupérieur à 1000, une erreur de validation sera générée. - Si vous utilisez les importations récursives, tous les fichiers seront importés par ordre alphabétique.
C’est tout pour cette fois. Bonnes importations ! Et si vous avez des questions, des commentaires ou des préoccupations, n’hésitez pas à nous le faire savoir.
