Fonction de génération de travaux de flux de travail de médias
Découvrez comment utiliser la fonction prédéfinie Générateur de tâches de flux de travail de médias dans le service des fonctions pour OCI pour déclencher une tâche de flux de travail de médias lorsque du contenu vidéo est chargé dans un seau de stockage d'objets.
Scénarios d'utilisation communs
Les méthodes courantes d'utilisation de la fonction Spawner de travail de flux de travail de média sont les suivantes :
- Encoder un fichier vidéo dans différentes résolutions après avoir chargé un fichier vidéo dans un seau.
- Encoder un fichier audio à différents débits binaires après avoir chargé un fichier audio dans un seau.
Les services liés à la fonction Media Workflow Job Spawner comprennent :
Portée
La portée de cette fonction comprend les éléments suivants :
- La fonction prédéfinie honore uniquement le type d'événement "Objet - Créer". La fonction prédéfinie déclenche la tâche de flux de travail de média uniquement si un nouvel objet est créé dans le seau source.
- La fonction prédéfinie n'attend pas la fin de la tâche de flux de travail de média. La fonction déclenche simplement le travail.
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.
- Assurez-vous que 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.
Configuration de la fonction de génération de travaux de flux de travail
Pour configurer une fonction Spawner de travail de flux de travail de médias, 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 |
---|---|---|
MEDIA_WORKFLOW_ID |
ID du flux de travail de média créé pour la tâche. La valeur par défaut est null . |
Oui |
DESTINATION_BUCKET |
Nom du seau de stockage d'objets dans lequel vous voulez enregistrer la sortie de la tâche. La valeur par défaut est le seau spécifié ici. | Non |
DESTINATION_COMPARTMENT_ID |
ID du compartiment dans lequel le seau de destination est présent. La valeur par défaut est le compartiment dans lequel le flux de travail de média est créé. | Non |
PBF_LOG_LEVEL |
Niveau de journalisation, les options sont DEBUG , INFO , WARN et ERROR . La valeur par défaut est INFO . |
Non |
Autorisations
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 use media-workflow in compartment <dynamic-group-name> Allow dynamic-group <dynamic-group-name> to manage media-workflow-job in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage object-family in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage media-asset in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage functions-family 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
Créez deux conditions dans la règle d'événement :
- Condition "Event Type", nom de service "Object Storage" et type d'événement "Object - Create".
- Conditionnez la valeur "Attribut", Nom d'attribut comme "bucketName", et indiquez le nom de votre seau source dans "Valeurs d'attribut".
L'appel de la fonction prédéfinie suit les étapes suivantes :
- L'insertion d'un fichier vidéo dans le magasin d'objets déclenche un événement.
- Une règle correspond à l'événement et appelle la fonction prédéfinie.
- La fonction prédéfinie soumet un travail qui convertit le fichier vidéo et place le fichier dans le seau de destination.
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.
Exemple
L'exemple suivant présente les données de retour JSON :
{
"startTime": "2023-02-22T05:03:13.029Z",
"endTime": "2023-02-22T05:03:24.436Z",
"runTime": "PT11.407S",
"code": 200,
"status": "Success",
"data": {
"additionalInformation": {
"MediaWorkFlowJobId": "ocid1.mediaworkflowjob.oc1.us-ashburn-1.amaaaa...."
}
}
}
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 la fonction prédéfinie du générateur de tâches de flux de travail de médias
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 | Les données utiles de la fonction ont un type d'événement incorrect | Vérifiez si le type d'événement est "Object - Create". |
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"