Importer des fichiers depuis Amazon S3
🤖/s3/import importe des répertoires entiers de fichiers depuis votre bucket S3.

Si vous découvrez Amazon S3, consultez notre tutoriel sur l’utilisation de votre propre bucket S3.
Limiter l’accès
Enregistrez des informations d’identification AWS dédiées dans votre ensemble d’informations d’identification de Template et n’accordez à cette identité IAM l’accès qu’au bucket et aux objets dont elle a besoin. L’exemple suivant est une stratégie IAM basée sur l’identité permettant de lire les objets actuels d’un bucket S3 à usage général. Attachez-la à l’utilisateur ou au rôle IAM dont vous fournissez les informations d’identification à Transloadit, et non au bucket. Une stratégie basée sur l’identité ne comporte pas d’élément Principal : elle s’applique à l’identité à laquelle elle est attachée.
Remplacez {BUCKET_NAME} dans les deux valeurs Resource par le nom de votre bucket. L’instruction au niveau du bucket autorise le listage des objets et la découverte de la région du bucket ; l’instruction au niveau des objets autorise leur téléchargement. Consultez les autorisations des opérations S3 d’AWS et la comparaison entre stratégies basées sur l’identité et stratégies basées sur les ressources.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadBucketMetadata",
"Effect": "Allow",
"Action": ["s3:GetBucketLocation", "s3:ListBucket"],
"Resource": "arn:aws:s3:::{BUCKET_NAME}"
},
{
"Sid": "ReadBucketObjects",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{BUCKET_NAME}/*"
}
]
}
Les valeurs Sid sont des libellés permettant de reconnaître les instructions. Renseigner la bonne valeur du paramètre bucket_region évite la découverte automatique de la région et l’autorisation s3:GetBucketLocation qu’elle nécessite. L’exemple accorde tout de même le listage et la lecture sur l’ensemble du bucket : restreignez ses ressources d’objets et ses conditions de listage lorsque votre flux de travail ne nécessite qu’un préfixe spécifique.
Cet exemple ne garantit pas l’accès. Les refus explicites, les stratégies d’organisation, les limites d’autorisations, les stratégies de bucket intercomptes et la propriété des objets peuvent influer sur le résultat. Pour l’accès intercomptes, consultez les recommandations d’AWS sur l’évaluation des stratégies.
Pour les objets chiffrés avec SSE-KMS, configurez également l’identité IAM et la stratégie de clé KMS avec les autorisations de clé requises par la documentation GetObject d’AWS, limitées à la clé prévue. Les actions KMS relèvent des stratégies d’identité IAM et des stratégies de clé KMS, pas des stratégies de bucket S3. N’accordez pas d’autorisations sts:* ou kms:* étendues pour contourner le problème.
Exemple d’utilisation
Importer les fichiers du répertoire path/to/files et de ses sous-répertoires :
{
"steps": {
"imported": {
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "path/to/files/",
"recursive": true,
"robot": "/s3/import"
}
}
}Paramètres
interpolateboolean | Record<string, boolean>Détermine si les Assembly Variables sont interpolées pour chaque champ d’instruction.
Par défaut, la plupart des champs d’instruction des Robots interpolent les Assembly Variables. Définissez ce paramètre sur
falsepour traiter tous les champs d’instruction comme du texte littéral, ou définissez le chemin d’un champ individuel surfalsepour traiter uniquement ce champ comme du texte littéral. Pour les champs propres à un Robot qui sont littéraux par défaut, définissez ce paramètre surtrueou définissez le chemin de ce champ surtruepour réactiver l’interpolation.Utilisez des noms de champs tels que
path, ou des chemins avec points tels queffmpeg.vfpour les objets imbriqués.output_metaRecord<string, boolean> | boolean | Array<string>Permet de spécifier un ensemble de métadonnées dont le calcul est plus coûteux en puissance CPU et qui sont donc désactivées par défaut afin que le traitement de vos Assemblies reste rapide.
Pour les images, vous pouvez ajouter
"has_transparency": truedans cet objet pour déterminer si l’image contient des parties transparentes, et"dominant_colors": truepour extraire de l’image un tableau de codes couleur hexadécimaux.Pour les images, vous pouvez également ajouter
"blurhash": truepour extraire une chaîne BlurHash — une représentation compacte d’un espace réservé pour l’image, utile pour afficher un aperçu flou pendant le chargement de l’image complète.Pour les images,
"thumbhash": trueextrait plutôt un ThumbHash encodé en base64 dansmeta.thumbhash, accompagné demeta.has_alpha(qui indique si un canal alpha existe, même lorsque l’image est entièrement opaque). Il décrit les pixels orientés selon les données EXIF et utilise la première image des images animées. L’extraction est effectuée au mieux : les images de plus de 40 mégapixels, les formats non pris en charge ou un décodage échoué ou limité ne produisent aucun espace réservé. Une extraction réussie ajoute des frais de métadonnées équivalents à 20 % des octets de ce fichier. Aucun supplément ThumbHash ne s’applique lorsque l’option est désactivée ou lorsqu’aucun hash n’est produit.Définissez cette option sur le Step qui produit l’image, par exemple
/upload/handlepour les originaux téléversés ou/image/resizepour les sorties traitées. La définir uniquement sur/transloadit/storene déclenche pas l’extraction : le stockage conserve les métadonnées du Step producteur. Transloadit Storage conserve un hash généré avec sa version immuable et le renvoie dans les résultats stockés et lors des lectures natives de ressources. Les téléversements directs vers S3 ne génèrent pas d’espaces réservés. Un espace réservé contient des informations sur l’image : protégez-le donc avec les mêmes contrôles d’accès que l’image complète.Pour les vidéos, vous pouvez ajouter le paramètre
"colorspace": truepour extraire l’espace colorimétrique de la vidéo de sortie.Pour les vidéos, vous pouvez également ajouter
"interlaced": truepour détecter si la vidéo est entrelacée. Cette option combine l’indicateur ffprobe peu coûteuxfield_orderavec une passe d’échantillonnageidetlimitée sur les premières images de la source, et exposeinterlaced,field_orderainsi qu’un objet de diagnosticinterlace_detectionsousfile.meta. Cette opération est coûteuse en calcul et facturée en conséquence.Pour l’audio, vous pouvez ajouter
"mean_volume": truepour obtenir une valeur unique représentant le volume moyen du fichier audio.Vous pouvez également définir cette option sur
falsepour ignorer l’extraction des métadonnées et accélérer le transcodage.user_metaRecord<string, any>(par défaut :{})Ajoute des métadonnées JSON personnalisées à chaque fichier émis sans modifier son contenu. Les objets et tableaux imbriqués sont pris en charge.
L’héritage dépend du Robot. Les valeurs sont fusionnées avec la valeur
user_metaexistante du fichier de sortie ; le Step actuel remplace les clés de premier niveau correspondantes. Attribuez explicitement les clés requises lorsqu’un Robot crée de nouvelles sorties.Dans les Steps de traitement,
${file.*}désigne la première entrée et${result.*}le fichier émis. Les valeurs sont évaluées pour chaque sortie après l’exécution du Robot, avant l’extraction ultérieure des métadonnées et le stockage temporaire. Sur:original, les valeurs sont évaluées pour chaque téléversement avant l’extraction des métadonnées.Les Steps en aval lisent
${file.user_meta.key}. Consultez Métadonnées personnalisées pour un exemple complet et les règles d’héritage.resultboolean(par défaut :false)Indique si les résultats de ce Step doivent figurer dans l’Assembly Status JSON
queuebatchDéfinir la file d’attente sur « batch » abaisse manuellement la priorité des Jobs de ce Step afin d’éviter de consommer des emplacements prioritaires de Jobs pour des Jobs qui n’ont pas besoin d’un temps d’attente nul dans la file
force_acceptboolean(par défaut :false)Forcer un Robot à accepter un type de fichier qu’il aurait ignoré.
Par défaut, les Robots ignorent les fichiers qu’ils ne connaissent pas. Le Robot 🤖/video/encode, par exemple, ignorera volontiers les images en entrée.
Avec le paramètre
force_acceptdéfini surtrue, vous pouvez forcer les Robots à accepter tous les fichiers qui leur sont envoyés. Cela entraîne généralement des erreurs et ne doit être utilisé que pour le débogage ou pour traiter des cas limites.ignore_errorsboolean | Array<meta | import | execute>(par défaut :[])Ignore les erreurs pendant certaines phases du traitement.
Si vous définissez cette valeur sur
["meta"], le Robot ignorera les erreurs lors de l’extraction des métadonnées.Si vous définissez cette valeur sur
["execute"], le Robot ignorera les erreurs lors de la phase d’exécution principale.Si vous définissez cette valeur sur
["import"], le Robot ignorera les erreurs lors de l’importation du fichier source. La phase"import"n’est disponible que pour les Robots d’importation.Définir cette valeur sur
trueéquivaut à["meta", "import", "execute"]: les erreurs seront alors ignorées dans les trois phases.force_namestring | Array<string> | null(par défaut :null)Nom personnalisé du ou des fichiers importés. Par défaut, les noms de fichiers sont dérivés de la source.
import_on_errorsArray<meta>(par défaut :[])Avec la valeur
["meta"], le fichier est tout de même importé en cas d’erreurs lors de l’extraction des métadonnées. Le paramètreignore_errorsest similaire : il ignore également l’erreur et garantit que le Robot ne s’arrête pas, mais le fichier n’est pas importé.credentialsstringVeuillez créer l’ensemble d’informations d’identification de Template associé dans votre compte Transloadit et utiliser le nom de cet ensemble d’informations d’identification de Template comme valeur de ce paramètre. Cet ensemble contiendra les valeurs S3 suivantes :
bucket,key,secretetbucket_region.Bien que nous recommandions d’utiliser systématiquement des informations d’identification de Template, certains cas d’usage exigent des identifiants dynamiques, pour lesquels l’utilisation d’informations d’identification de Template est trop contraignante en raison de leur nature statique. Si c’est votre cas, vous pouvez utiliser à la place les paramètres suivants :
"bucket","bucket_region"(par exemple :"us-east-1"ou"eu-west-2"),"key","secret".path— obligatoirestring | Array<string>Le chemin vers le fichier ou le répertoire concerné dans votre bucket. Si le chemin pointe vers un fichier, seul ce fichier sera importé. Par exemple :
images/avatar.jpg.S’il pointe vers un répertoire, ce qui est indiqué par une barre oblique finale (
/), tous les fichiers directement contenus dans ce répertoire seront importés. Par exemple :images/.Les répertoires ne sont pas importés récursivement. Si vous souhaitez importer des fichiers de sous-répertoires et de sous-sous-répertoires, activez le paramètre
recursive.Utilisez
/pour importer les fichiers depuis la racine du bucket. Les clés d’objet n’ont pas besoin de barre oblique initiale. Activezrecursivepour inclure les fichiers situés sous des préfixes imbriqués.Vous pouvez aussi utiliser ici un tableau de chaînes de chemins pour importer plusieurs chemins dans le même Step de Robot.
recursiveboolean(par défaut :false)Définir ce paramètre sur
trueactive l’importation des fichiers des sous-répertoires et sous-sous-répertoires (etc.) du chemin donné.Veuillez utiliser ici les paramètres de pagination
page_numberetfiles_per_pageà bon escient.page_numberstring | number(par défaut :1)Le numéro de page pour la pagination. Pour le moment, afin de préserver la rétrocompatibilité des importations non récursives, ce paramètre ne fonctionne que lorsque recursive est défini sur
true.Lors d’importations volumineuses, assurez-vous qu’aucun fichier n’est ajouté ou supprimé par d’autres scripts dans le chemin concerné, sinon la pagination pourrait produire des résultats inattendus.
files_per_pagestring | number(par défaut :1000)Le nombre d’éléments par page. Pour le moment, ce paramètre ne fonctionne que lorsque recursive vaut
true, afin de préserver la rétrocompatibilité des importations non récursives.return_file_stubsboolean(par défaut :false)Si ce paramètre est défini sur
true, le Robot n’importe pas encore les fichiers réels, mais renvoie à la place un stub de fichier vide qui inclut une URL à partir de laquelle les Robots suivants peuvent importer le fichier. C’est utile lorsque les Steps suivants ont besoin de davantage de contrôle sur le processus d’importation, par exemple avec le Robot 🤖/video/ondemand. Ce paramètre ne doit être défini que si tous les Steps suivants utilisent des Robots qui prennent en charge les stubs de fichier.rangestring | Array<string>Vous permet de spécifier une ou plusieurs plages d’octets à importer depuis le fichier. S3 doit prendre en charge les requêtes de plage pour que cela fonctionne.
Plage unique : utilisez une chaîne comme
"0-99"pour importer les octets 0-99 (les 100 premiers octets).Plages multiples : utilisez un tableau comme
["0-99", "200-299"]pour importer plusieurs plages distinctes. Le fichier obtenu contiendra toutes les plages demandées concaténées, avec des octets nuls (\0) pour combler les intervalles entre les plages non contiguës.Formats des plages :
"0-99": octets 0 à 99 (inclus)"100-199": octets 100 à 199 (inclus)"-100": les 100 derniers octets du fichier
Notes importantes :
- S3 prend en charge les requêtes de plage par défaut
- Les plages qui se chevauchent sont autorisées et seront incluses telles que demandées
- La taille du fichier obtenu correspondra à la position d’octet la plus élevée demandée, les intervalles étant remplis d’octets nuls
- Chaque plage est récupérée dans une requête distincte pour garantir la compatibilité avec S3
Démonstrations
Articles de blog associés
- Nouveau Robot /s3/import pour faciliter les importations S3
- Nouveau modèle tarifaire pour les futurs clients de Transloadit
- Présentation des importations récursives pour S3 dans Transloadit
- Building an alt-text to speech generator with Transloadit (English)
- Comment configurer un bucket S3 pour l’utiliser avec Transloadit