Fonction de compression de fichier du stockage d'objets
Découvrez comment utiliser la fonction prédéfinie de zip de fichier de stockage d'objets dans le service des fonctions pour OCI pour compresser les fichiers stockés dans un seau de stockage d'objets pour OCI et enregistrer le fichier zip dans le seau cible spécifié.
Scénarios d'utilisation communs
Les méthodes courantes d'utilisation de la fonction de zip de fichier de stockage d'objets sont les suivantes :
- Placez des fichiers dans le stockage d'objets et utilisez le service d'intégration de données pour compresser les fichiers et stocker le fichier zip résultant dans le stockage d'objets.
- Placez des fichiers dans le stockage d'objets et appelez directement une fonction pour compresser les fichiers et stocker le fichier zip résultant dans le stockage d'objets.
Les services liés à la fonction de compression de fichiers du service de stockage d'objets comprennent ce qui suit :
Portée
La portée de cette fonction comprend les éléments suivants :
- La fonction prédéfinie fonctionne mieux si la temporisation par défaut est réglée à 300 secondes.
- Le temps d'exécution de la fonction varie en fonction du nombre de fichiers d'entrée.
- Les noms de fichier et de répertoire doivent être uniques. Si un fichier et un répertoire partagent le même nom, la fonction ne peut pas garantir l'exactitude du résultat.
Préalables et recommandations
Voici les meilleures pratiques à suivre pour utiliser cette fonction prédéfinie :
- Réglez la temporisation de la fonction prédéfinie à 300 secondes.
- Le VCN lié à l'application facilite l'accès à d'autres services OCI à l'aide d'une passerelle de service, d'une passerelle Internet ou d'une passerelle NAT.
- Réglez la taille de mémoire par défaut à la mémoire maximale autorisée pour une fonction.
- Évitez d'inclure un dossier et un fichier portant le même nom au même niveau dans le seau source.
Configuration de la fonction de compression de fichier du stockage d'objets
Pour configurer une fonction de zip de fichier de stockage d'objets, procédez comme suit :
La boîte de dialogue de déploiement affiche les tâches de déploiement de la fonction (voir Fin du déploiement de fonction prédéfinie).
Options de configuration
Paramètres de configuration
Le nom | Description | Obligatoire |
---|---|---|
PBF_LOG_LEVEL |
Niveau de journalisation, les options sont DEBUG , INFO , WARN et ERROR . La valeur par défaut est INFO. |
Non |
Permissions
L'exécution d'une fonction nécessite certaines politiques IAM. Si vous avez sélectionné l'option Ne pas créer de groupe dynamique et de politique IAM lors de la création de la fonction, vous devez définir vous-même le groupe dynamique et la politique IAM.
Pour définir les politiques appropriées :
- Créez un groupe dynamique avec la règle :
ALL {resource.id = '<function_ocid>', resource.compartment.id = '<compartment_ocid>'}
- Configurez une politique IAM à l'aide du groupe dynamique :
Allow dynamic-group <dynamic-group-name> to read objectstorage-namespaces in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage objects in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage buckets in compartment <compartment-name>
Remplacez
<function-ocid>
par l'OCID de la fonction que vous avez créée lors des étapes précédentes. Remplacez
<dynamic-group-name>
par le nom du groupe dynamique que vous avez créé à l'aide de l'OCID de la fonction.Remplacez
<compartment_ocid>
par l'OCID du compartiment qui contient la fonction.Appel de cette fonction
Vous pouvez appeler la fonction comme suit :
- Appelez la fonction directement comme documenté dans Appel de fonctions en créant un corps de demande comme illustré dans l'exemple JSON suivant.
- Appelez la fonction au moyen du service d'intégration de données. Tirer parti de la tâche d'API REST pour configurer le point d'extrémité d'appel avec le corps de la demande ainsi que les paramètres pour déclencher la fonction. Le corps REST adhère aux valeurs JSON suivantes.
Valeurs JSON de demande HTTP
Le nom | Description | Obligatoire |
---|---|---|
COMPARTMENT_ID | OCID du compartiment du seau source. | Oui |
RÉGION | Région dans laquelle les seaux existent. La valeur par défaut correspond à la région dans laquelle la fonction est créée. | Non |
SOURCE_BUCKET | Nom du seau source qui contient les fichiers et les répertoires à compresser. | Oui |
SOURCE_FILES |
Exemples :
|
Oui |
TARGET_BUCKET | Nom complet du fichier zip de sortie. Si le seau cible portant le nom indiqué n'existe pas, il est créé par la fonction. Si seul le nom du seau est fourni, la fonction génère automatiquement le nom du fichier zip. Exemple : PBF_ZIP_di_pbf_zip_destination_new_2023-02-22T05:27 :53.654Z.zip |
Oui |
ALLOW_OVERWRITE | Accepte true ou false . Si l'attribut n'est pas indiqué, la valeur par défaut est false . La valeur true signifie que si un fichier zip portant le même nom existe déjà dans le seau de destination, le fichier est remplacé. Une valeur de false signifie qu'une tentative de remplacement du fichier zip par le même nom échoue à l'exécution de la fonction. |
Non |
Exemple d'entrée JSON :
{
"COMPARTMENT_ID": "ocid1.compartment.oc1...",
"REGION": "us-ashburn-1",
"SOURCE_BUCKET": "origin-storage",
"SOURCE_FILES": "folder_1/test_file_1.txt,test_file_2.txt,folder_2/",
"TARGET_BUCKET": "target-storage/my_zip_file.zip",
"ALLOW_OVERWRITE": "false"
}
Corps de la réponse
- Horodatages : Utilisation d'UTC pour éviter les problèmes de fuseau horaire.
- Code : La fonction retourne un code 200 si la tâche se termine avec succès.
- Statut : La fonction retourne "Réussite" comme statut si la tâche s'est terminée avec succès.
- données : Corps de message JSON qui inclut des informations de réponse spécifiques pour la tâche. Les informations supplémentaires fournissent un message de confirmation de l'opération de décompression réussie.
Exemple
L'exemple suivant présente les données de retour JSON :
{
"startTime": "2023-02-22T05:27:53.505Z",
"endTime": "2023-02-22T05:28:13.908Z",
"runTime": "PT20.403S",
"code": 200,
"status": "Success",
"data": {
"additionalInformation": {
"Message": "Zip File: PBF_ZIP_di_pbf_zip_destination_new_2023-02-22T05:27:53.654Z.zip, uploaded to Bucket: target_storage"
}
}
}
Dépannage
Codes de statut communs du service des fonctions pour OCI
Le tableau suivant résume les erreurs courantes du service des fonctions pour OCI que vous pourriez rencontrer lorsque vous utilisez des fonctions prédéfinies :
Code d'erreur | Message d'erreur | Action |
---|---|---|
200 | Succès | Aucune |
404 | NotAuthorizedOrNotFound | Vérifiez que les politiques requises sont configurées (voir L'exécution des commandes de l'interface de ligne de commande Fn Project retourne une erreur de type 404). |
444 | Temporisation |
La connexion entre le client et le service des fonctions pour OCI a été interrompue lors de l'exécution de la fonction (voir L'appel d'une fonction entraîne une temporisation du client et une erreur 444 est affichée dans les journaux de la fonction). Une nouvelle tentative peut résoudre le problème. Notez que la plupart des clients ont une temporisation interne de 60 secondes. Même lorsque la temporisation de la fonction prédéfinie est réglée à 300 secondes, les éléments suivants peuvent être requis :
Pour plus d'informations, voir Appel de fonctions. |
502 504 | (divers) | La plupart des problèmes retournent un code de statut 502 (voir L'appel d'une fonction retourne un message d'échec de fonction et une erreur 502). Une erreur 502 avec le message "error receive function response" peut être résolue en augmentant l'allocation de mémoire. Un 502 peut se produire occasionnellement lorsque la fonction est dans un état transitoire. Une nouvelle tentative peut résoudre le problème. |
Pour en identifier la cause, activez les fonctions de journalisation pour la fonction prédéfinie (voir Stockage et consultation des journaux de fonction). Pour des informations détaillées sur le dépannage d'une fonction, voir Dépannage du service des fonctions pour OCI.
Codes de statut de fonction prédéfinie zip du fichier de stockage d'objets
Le tableau suivant résume les erreurs que vous pourriez rencontrer lors de l'utilisation de cette fonction prédéfinie :
Code d'erreur | Message d'erreur | Action |
---|---|---|
400 | Valeur de configuration obligatoire manquante | Le message d'erreur indique le nom du champ obligatoire. Vérifiez que le champ correct est indiqué dans le corps de la demande. |
400 | Le nom du fichier zip de sortie fourni n'a pas d'extension .zip |
Vérifiez que le nom du fichier fourni pour le champ TARGET_BUCKET a l'extension .zip . |
409 | Le seau de destination contient déjà un fichier compressé portant le même nom | Si ALLOW_OVERWRITE est réglé à false , vérifiez que le seau de destination n'a pas déjà de fichier zip portant le même nom. |
Pour en identifier la cause, activez les fonctions de journalisation pour la fonction prédéfinie (voir Stockage et consultation des journaux de fonction).
Conseils sur l'analyse des journaux
Toutes les fonctions prédéfinies fournissent une option permettant de spécifier le niveau de journalisation en tant que paramètre de configuration. Vous pouvez régler le niveau de journalisation à DEBUG
pour obtenir plus d'informations.
Étant donné qu'une application comporte plusieurs fonctions, les entrées du journal des fonctions prédéfinies sont identifiées par le préfixe "PBF | <PBF NAME>".
Par exemple, une entrée de journal pour la fonction prédéfinie Générateur de tâches de flux de travail de médias ressemble à ce qui suit :
"PBF | Media Workflow Job Spawner | INFO | 2023-02-07T18:06:50.809Z | Fetching details from Events JSON"