Configurez des règles de décompression pour extraire automatiquement les packages ZIP téléchargés dans un répertoire OSS spécifié. Function Compute décompresse les packages et enregistre les objets extraits dans le répertoire de destination.
Prérequis
Function Compute est activé. Pour l'activer, accédez à la page Function Compute.
Scénarios
Téléchargement par lots : compressez de nombreux petits objets dans un seul package ZIP afin de réduire le temps de téléchargement.
Intégrité des ressources : regroupez les fichiers connexes dans un seul package ZIP pour garantir que tous les composants sont téléchargés ensemble.
Préservation de la structure des répertoires : empaquetez une arborescence de répertoires locale dans un fichier ZIP et téléchargez-le sur OSS. La règle de décompression recrée la structure de dossiers d'origine dans le bucket.
Distribution de contenu : compressez les objets dans un package ZIP et téléchargez-le sur OSS. Le package est décompressé vers les répertoires spécifiés, ce qui réduit le temps de transmission et l'utilisation de la bande passante.
Fonctionnement
OSS utilise Function Compute pour décompresser les packages ZIP téléchargés. Le schéma suivant illustre le processus.
Un package ZIP est téléchargé dans le répertoire spécifié par le paramètre Prefix dans une règle de décompression.
-
Le déclencheur Function Compute est invoqué.
Lorsque vous configurez une règle de décompression, autorisez le déclencheur afin qu'OSS puisse utiliser le rôle AliyunOSSEventNotificationRole pour accéder à Function Compute.
-
Function Compute décompresse le package ZIP et enregistre les objets extraits dans le répertoire OSS spécifié.
Lorsque vous configurez une règle de décompression, autorisez Function Compute à lire et à écrire dans le bucket OSS.
Facturation
La décompression de packages ZIP engendre des frais à la fois pour OSS et pour Function Compute. Les transferts de données entre OSS et Function Compute via des endpoints internes sont gratuits.
Côté OSS, vous êtes facturé pour les appels d'API et le stockage des objets. Pour plus d'informations, consultez la rubrique Présentation de la facturation.
-
Côté Function Compute, vous êtes facturé pour l'utilisation du vCPU, de la mémoire et du disque en fonction de la durée d'exécution. Pour plus d'informations, consultez la rubrique Présentation de la facturation.
Par exemple, si une tâche de décompression de package ZIP utilise une instance Function Compute disposant de 3 Go de mémoire et d'un vCPU à 2 cœurs, prend 5 minutes pour terminer la décompression, et que la taille par défaut du disque alloué pour les fichiers de stockage créés temporairement est de 10 Go, le montant des frais facturés par Function Compute est calculé selon la formule suivante :
|
Élément d'utilisation des ressources |
Unité |
Formule |
Exemple de facturation |
|
Utilisation du vCPU |
**vCPU-seconds** |
Utilisation active du vCPU = capacité du vCPU × durée d'exécution (secondes) |
Si la fonction est configurée avec 2 vCPU et s'exécute pendant 300 secondes, l'utilisation du vCPU pour une seule exécution est calculée à l'aide de la formule suivante : 2 × 300 = 600 **vCPU-seconds**. |
|
Utilisation de la mémoire |
GB-seconds |
Utilisation de la mémoire = capacité de la mémoire (Go) × durée d'exécution (secondes) |
Si la fonction est configurée avec une taille de mémoire de 3 Go et s'exécute pendant 300 secondes, l'utilisation de la mémoire pour une seule exécution est calculée à l'aide de la formule suivante : 3 × 300 = 900 GB-seconds |
|
Utilisation du disque |
GB-seconds |
Utilisation du disque = capacité du disque (Go) × durée d'exécution (secondes) Remarque : l'utilisation du disque jusqu'à 512 Mo est gratuite. |
Si la fonction est configurée avec une taille de disque temporaire de 10 Go et s'exécute pendant 300 secondes, l'utilisation du disque pour une seule exécution est calculée à l'aide de la formule suivante : (10-512/1024) × 300 = 2850 GB-seconds. |
Limites
Classes de stockage : un objet Cold Archive doit être restauré avant de pouvoir être décompressé. Un objet Archive dans un bucket pour lequel l'accès en temps réel aux objets Archive n'est pas activé doit également être restauré avant sa décompression.
Nommage des objets et des répertoires : encodez les noms des objets et des répertoires en UTF-8 ou GB 2312. D'autres encodages peuvent entraîner des échecs de décompression ou des noms illisibles.
Taille des objets et durée de décompression : chaque objet dans un package ZIP ne peut pas dépasser 1 Go. Vous pouvez augmenter la durée de décompression si nécessaire. Pour plus d'informations, consultez la rubrique Que faire si la décompression d'un package ZIP échoue en raison d'un délai d'expiration ?
Configurer une règle de décompression de package ZIP
Connectez-vous à la console OSS.
Dans le volet de navigation de gauche, cliquez sur Buckets. Sur la page qui s'affiche, cliquez sur le nom du bucket cible.
Dans l'arborescence de navigation de gauche, choisissez .
-
Cliquez sur Decompress ZIP Package. Dans le panneau Decompress ZIP Package, configurez les paramètres décrits dans le tableau suivant.
Paramètres
Paramètre
Obligatoire
Description
Service Authorization
Oui
Autorisez Function Compute à lire et à écrire dans OSS et à exécuter des fonctions.
Cliquez sur Authorize. Finalisez l'autorisation sur la page qui s'affiche.
Authorize Trigger
Oui
Autorisez OSS à accéder à Function Compute.
Cliquez sur Authorize. Finalisez l'autorisation sur la page qui s'affiche. Si OSS est autorisé à accéder à Function Compute, le paramètre Trigger Role s'affiche à la place du paramètre Authorize Trigger.
Prefix
Non
Le préfixe que les noms de packages ZIP doivent correspondre pour déclencher la décompression. Si vous téléchargez un package ZIP dont le nom contient ce préfixe ou si vous le téléchargez dans le répertoire spécifié par le préfixe, Function Compute le décompresse. Si non spécifié, tous les packages ZIP téléchargés dans le bucket sont décompressés.
ImportantSi vous ne spécifiez pas ce paramètre, les tâches de décompression peuvent être exécutées de manière répétée. Par conséquent, nous vous recommandons de spécifier un préfixe pour chaque règle de décompression. Pour plus d'informations, consultez la rubrique Comment éviter les boucles de déclenchement ?
Destination Directory
Non
Le répertoire où les objets extraits sont stockés. Si non spécifié, les objets sont décompressés dans le répertoire racine du bucket.
Pour stocker les objets extraits dans un sous-répertoire portant le nom du package ZIP, sélectionnez Add the compressed object name to the destination directory.
Pour stocker les objets extraits directement dans le répertoire de destination sans sous-répertoire, sélectionnez Decompress to the destination directory. Le tableau suivant présente des exemples de configuration.
AvertissementPour éviter toute interruption de service, contamination ou perte de données lors de la configuration des règles de décompression de packages ZIP sur un bucket avec OSS-HDFS activé, ne définissez pas le Destination Directory sur
.dlsdata/.Exemples de configuration de décompression
Scénario
Méthode de configuration
Structure de stockage après décompression
Décompressez tous les packages ZIP téléchargés dans le répertoire zipfolder vers le répertoire destfolder, sans créer de sous-répertoires portant les mêmes noms que les packages ZIP.
Définissez Prefix sur zipfolder/.
Définissez Destination Directory sur destfolder.
Sélectionnez Decompress to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...Décompressez tous les packages ZIP téléchargés dans le répertoire zipfolder vers les sous-répertoires portant les mêmes noms que les packages dans le répertoire racine du bucket.
Configurez les paramètres suivants :
Définissez Prefix sur zipfolder/.
Laissez Destination Directory vide.
Sélectionnez Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...Décompressez tous les packages ZIP téléchargés dans le répertoire zipfolder vers les sous-répertoires portant les mêmes noms que les packages dans le répertoire destfolder.
Configurez les paramètres suivants :
Définissez Prefix sur zipfolder/.
Définissez Destination Directory sur destfolder.
Sélectionnez Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ... Sélectionnez I have read the terms of service and agreed to activate Function Compute and process compressed files by using Function Compute. Only file or folder names encoded in UTF-8 or GB 2312 can be processed. et cliquez sur OK.
Modifier une règle de décompression de package ZIP
Modifiez une règle de décompression pour mettre à jour le préfixe du déclencheur ou les configurations de la fonction.
Modifier le paramètre Prefix
Sur la page Decompress ZIP Package de la console OSS, recherchez le déclencheur que vous souhaitez modifier et cliquez sur Edit dans la colonne Actions.
Sur l'onglet Triggers de la page des détails de la fonction, recherchez le déclencheur et cliquez sur Modify dans la colonne Actions.
Dans le panneau Modify Trigger, modifiez le paramètre Object Prefix et conservez les paramètres par défaut pour les autres options.
Cliquez sur OK.
Modifier les configurations de la fonction
Sur l'onglet Configurations de la page des détails de la fonction, cliquez sur Modify dans la section Basic Settings ou Environment Information.
-
Modifiez les configurations de la fonction, telles que Memory et Execution Timeout Period.
Pour plus d'informations, consultez la rubrique Gérer les fonctions.
Supprimer un déclencheur
Les déclencheurs supprimés ne peuvent pas être restaurés. La suppression d'un déclencheur n'interrompt pas les tâches de décompression en cours.
Sur l'onglet Triggers de la page des détails de la fonction, recherchez le déclencheur que vous souhaitez supprimer et cliquez sur Delete dans la colonne Actions.
Dans le message qui s'affiche, cliquez sur Delete.
Obtenir les résultats de la décompression
Une fois l'exécution de la fonction de décompression terminée, OSS ne renvoie pas proactivement le résultat de la décompression. Vous pouvez utiliser les méthodes suivantes pour obtenir le résultat de la décompression et le transmettre à votre service backend.
Méthode 1 : Interroger le statut de décompression en mode tâche
Après avoir activé le mode tâche, chaque exécution de la fonction de décompression génère un enregistrement de tâche asynchrone. Vous pouvez afficher le statut de la tâche dans la liste des tâches ou l'interroger en appelant une opération API.
Dans la console Function Compute, accédez à la page des détails de la fonction de décompression et cliquez sur l'onglet Task.
Dans la zone de configuration du mode tâche, cliquez sur Edit et activez Task Mode. Le mode tâche est désactivé par défaut. Dans la même zone, vous pouvez également configurer Maximum Retry Attempts (par défaut : 3), Message Time to Live (par défaut : 1 jour) et Invocation Destination (par défaut : non configuré).
Une fois le mode tâche activé, chaque exécution de la fonction de décompression génère un enregistrement de tâche asynchrone. La liste des tâches affiche l'ID de la tâche, le statut de la tâche, l'heure de début et de fin, la durée d'exécution, le nombre de tentatives, l'ID de la requête et l'ID de l'instance.
Vous pouvez également appeler l'opération
GetAsyncTaskde Function Compute pour interroger le statut de la tâche. Un statut de tâche retourné Succeeded indique que la tâche de décompression a été terminée avec succès.
Méthode 2 : Configurer une destination d'invocation asynchrone pour les notifications automatiques
Dans la zone de configuration du mode tâche, activez Invoke Another Service on Success ou Invoke Another Service on Failure pour notifier automatiquement un service de destination spécifié après la fin de la tâche de décompression. Les types de services de destination suivants sont pris en charge :
Function Compute (FC)
ApsaraMQ for RocketMQ
Simple Message Queue (anciennement MNS)
EventBridge
Méthode 3 : Envoyer des notifications à votre service backend via un rappel HTTP personnalisé
Les destinations d'invocation asynchrone intégrées ne prennent pas en charge les rappels HTTP personnalisés. Si vous devez notifier un service backend géré en interne, tel qu'un service déployé dans un cluster ACK, du résultat de la décompression, utilisez l'approche suivante :
Créez une fonction Function Compute qui envoie une requête de notification HTTP au point de terminaison de votre service backend.
Configurez cette fonction comme destination d'invocation asynchrone de la fonction de décompression en suivant les étapes de la méthode 2.
Une fois la tâche de décompression terminée, Function Compute invoque cette fonction, qui envoie ensuite la notification HTTP à votre service backend.
Référence
Empaqueter et télécharger des objets sous forme de fichier ZIP
