L'intégration d'OSS avec Function Compute permet d'utiliser les événements OSS pour déclencher des fonctions assurant le traitement personnalisé des données. Cette rubrique décrit les limitations, les types d'événements et les règles de déclenchement applicables aux déclencheurs OSS dans Function Compute.
Informations générales
OSS et Function Compute s'intègrent parfaitement grâce à un déclencheur OSS. Vous pouvez écrire des fonctions pour traiter les événements OSS. Lorsqu'un événement du type spécifié se produit dans OSS, la fonction correspondante se déclenche automatiquement. Par exemple, configurez une fonction pour gérer les événements PutObject. Lors de l'appel à l'opération d'API OSS PutObject pour télécharger une image vers un bucket OSS, la fonction se déclenche automatiquement pour traiter cette image.
Une fois OSS intégré à Function Compute, vous pouvez invoquer diverses fonctions pour traiter des données audio ou vidéo, puis écrire les résultats dans plusieurs services de stockage. Cette architecture vous permet de vous concentrer sur la logique de vos fonctions, tandis que le système gère des volumes massifs de données en temps réel, avec une fiabilité élevée et un parallélisme à grande échelle.
Limitations
Seul un déclencheur OSS basé sur EventBridge prend en charge la configuration de plusieurs préfixes et suffixes d'objet.
Les expressions régulières ne sont pas prises en charge dans le préfixe et le suffixe d'objet d'un déclencheur OSS natif ou d'un déclencheur OSS basé sur EventBridge.
-
Un déclencheur OSS basé sur EventBridge est nécessaire pour associer plus de 10 déclencheurs OSS à un seul bucket.
Il est recommandé de ne pas associer plus de 10 déclencheurs à un même bucket. Si des déclencheurs supplémentaires sont nécessaires, créez un nouveau bucket et configurez-les sur celui-ci.
Définitions des événements
Lorsqu'OSS capture un événement pertinent, il encode les informations de l'événement dans une chaîne JSON et les transmet à la fonction de gestion d'événements. Pour plus d'informations sur le format de notification d'événement OSS, consultez la documentation associée.
Le tableau suivant répertorie les définitions d'événements OSS prises en charge. Chaque type d'événement correspond à une opération d'API ObjectCreated, ObjectRemoved ou ObjectModified. Un appel réussi à l'une de ces opérations d'API déclenche la fonction une seule fois.
Type d'événement | Nom de l'événement | Description |
ObjectCreated | oss:ObjectCreated:PutObject | Déclenché par l'appel à l'API PutObject pour télécharger un objet. Pour plus d'informations, voir PutObject. |
oss:ObjectCreated:PutSymlink | Déclenché par l'appel à l'API PutSymlink pour créer un lien symbolique vers un objet cible dans OSS. Ce lien symbolique permet d'accéder à l'objet cible. Pour plus d'informations, voir PutSymlink. | |
oss:ObjectCreated:PostObject | Déclenché par l'appel à l'API PostObject pour télécharger un objet vers un bucket via un formulaire HTML. Pour plus d'informations, voir PostObject. | |
oss:ObjectCreated:CopyObject | Déclenché par l'appel à l'API CopyObject pour copier un objet dans OSS. Pour plus d'informations, voir CopyObject. | |
oss:ObjectCreated:InitiateMultipartUpload | Pour transférer des données à l'aide de la fonctionnalité MultipartUpload, appelez d'abord l'API InitiateMultipartUpload afin d'initialiser un téléchargement multipartite. Pour plus d'informations, voir InitiateMultipartUpload. | |
oss:ObjectCreated:UploadPart | Après l'initiation d'un téléchargement multipartite, téléchargez les données par parties en fonction du nom d'objet et de l'ID de téléchargement spécifiés. Pour plus d'informations, voir UploadPart. | |
oss:ObjectCreated:UploadPartCopy | L'opération d'API UploadPartCopy télécharge une partie en copiant des données depuis un objet existant. Pour plus d'informations, voir UploadPartCopy. | |
oss:ObjectCreated:CompleteMultipartUpload | Une fois toutes les parties de données téléchargées, appelez l'API CompleteMultipartUpload pour finaliser le téléchargement multipartite. Pour plus d'informations, voir CompleteMultipartUpload. | |
oss:ObjectCreated:AppendObject | L'opération d'API AppendObject permet de télécharger un objet par ajout de données. Pour plus d'informations, voir AppendObject. | |
oss:ObjectCreated:* | Déclenché par un appel réussi à l'une des opérations d'API ObjectCreated précédentes. | |
ObjectRemoved | oss:ObjectRemoved:DeleteObject | Déclenché par l'appel à l'API DeleteObject pour supprimer un objet. Pour plus d'informations, voir DeleteObject. |
oss:ObjectRemoved:DeleteObjects | Déclenché par l'appel à l'API DeleteMultipleObjects pour supprimer plusieurs objets en une seule requête. Pour plus d'informations, voir DeleteMultipleObjects. | |
oss:ObjectRemoved:AbortMultipartUpload | Déclenché par l'appel à l'API AbortMultipartUpload pour annuler un téléchargement multipartite. Pour plus d'informations, voir AbortMultipartUpload. | |
ObjectModified | oss:ObjectModified:UpdateObjectMeta | Déclenché par l'appel à l'API UpdateObjectMeta pour modifier les métadonnées d'un objet. Remarque Cet événement est actuellement pris en charge dans les régions suivantes : Chine (Hangzhou), Chine (Shanghai), Chine (Qingdao), Chine (Pékin), Chine (Zhangjiakou), Chine (Hohhot), Chine (Shenzhen) et Chine (Chengdu). |
ObjectReplication | oss:ObjectReplication:ObjectCreated | Opération d'écriture survenant lors de la réplication des données. |
oss:ObjectReplication:ObjectModified | Opération d'écrasement survenant lors de la réplication des données. | |
oss:ObjectReplication:ObjectRemoved | Opération de suppression survenant lors de la réplication des données. |
Règles de déclenchement
Éviter les boucles de déclenchement
Lors de l'utilisation d'un déclencheur OSS, veillez à éviter les boucles de déclenchement. Un scénario fréquent consiste à déclencher une fonction lors du téléchargement d'un objet vers un bucket OSS. La fonction traite ensuite l'objet et écrit un ou plusieurs nouveaux objets dans le même bucket, ce qui déclenche à nouveau la fonction et crée ainsi une boucle d'exécution.
Pour éviter les coûts inutiles liés aux boucles de déclenchement, configurez un préfixe ou un suffixe d'objet. Par exemple, définissez le préfixe d'objet pour les objets source sur src et le préfixe d'objet pour les objets traités sur dst. Cela garantit que les objets traités ne déclenchent pas à nouveau la fonction. En l'absence de préfixe ou de suffixe d'objet, le déclencheur correspond aux objets quel que soit leur préfixe ou suffixe. Pour plus d'informations, voir Étape 1 : Créer un déclencheur OSS.
Règles des déclencheurs OSS natifs
Afin d'empêcher qu'un seul événement n'active plusieurs déclencheurs dans le même bucket, Function Compute applique les règles de configuration suivantes pour un bucket :
La combinaison de l'événement de déclenchement, du préfixe d'objet et du suffixe d'objet doit être unique.
Créez un nouveau déclencheur uniquement si sa combinaison
événement de déclenchement + préfixe d'objet + suffixe d'objetn'entre pas en conflit avec des déclencheurs existants.
Les exemples suivants illustrent les règles de configuration d'un déclencheur OSS natif.
Déclencheur existant | Nouveau déclencheur | État de création | Description | ||||
Trigger Event | Object Prefix | Object Suffix | Trigger Event | Object Prefix | Object Suffix | ||
oss:ObjectCreated:PutObject | source | zip | oss:ObjectCreated:* | source | zip | Échec | Échec. L'événement générique du nouveau déclencheur ( |
source1 | zip1 | Succès | Le nouveau déclencheur et le déclencheur existant ont des types d'événements conflictuels, mais leurs valeurs Object Prefix et Object Suffix ne correspondent pas. | ||||
oss:ObjectCreated:PutObject | source | zip | Échec | Le nouveau déclencheur et un déclencheur existant partagent le même type d'événement, ainsi que les mêmes valeurs Object Prefix et Object Suffix. | |||
source | 1zip | Échec | |||||
source1 | zip | Échec | |||||
source | None | Échec | Si le type d'événement et la valeur Object Prefix d'un nouveau déclencheur correspondent à ceux d'un déclencheur existant, et qu'aucune valeur Object Suffix n'est spécifiée, le nouveau déclencheur correspond aux objets avec n'importe quel suffixe, tels que les objets .zip. Dans ce cas, la valeur Object Suffix est également considérée comme correspondante. | ||||
None | zip | Échec | Le type d'événement et la valeur Object Suffix du nouveau déclencheur correspondent à ceux d'un déclencheur existant. Si la valeur Object Prefix n'est pas définie, le déclencheur inclut les objets portant le préfixe « source », ce qui signifie que la valeur Object Prefix correspond également. | ||||
source1 | zip1 | Succès | Le type d'événement et la valeur Object Prefix du nouveau déclencheur correspondent à ceux d'un déclencheur existant, mais la valeur Object Suffix ne correspond pas. | ||||
1source | 1zip | Succès | Le type d'événement et la valeur Object Suffix du nouveau déclencheur correspondent à ceux d'un déclencheur existant, mais la valeur Object Prefix ne correspond pas. | ||||
oss:ObjectCreated:PostObject | source | zip | Succès | Succès. Les types d'événements n'entrant pas en conflit, le déclencheur peut être créé indépendamment du filtre de chemin. | |||
Le préfixe d'objet est mis en correspondance depuis le début du nom de l'objet, tandis que le suffixe d'objet est mis en correspondance depuis la fin du nom de l'objet.
Un nouveau déclencheur ne peut pas être créé si ses paramètres entrent en conflit avec un déclencheur existant. Un conflit survient uniquement lorsque le type d'événement du nouveau déclencheur et son filtre de chemin (préfixe et suffixe) chevauchent tous deux les paramètres d'un déclencheur existant.
Conflits de types d'événements
Type d'événement existant | Nouveau type d'événement | Description du conflit |
|
|
|
|
|
Conflits de correspondance de chemin
|
Chemin existant |
Nouveau chemin |
Description du conflit |
|
|
|
Le préfixe ne correspond pas, mais le suffixe correspond. Les chemins ne sont pas en conflit. |
|
|
|
Le préfixe correspond, mais le suffixe ne correspond pas. Les chemins ne sont pas en conflit. |
|
|
|
Le préfixe correspond et le suffixe correspond. Les chemins sont en conflit. |
Pour qu'un seul type d'événement OSS déclenche différentes fonctions selon les tâches de traitement, créez un déclencheur OSS basé sur EventBridge.
FAQ
Documents associés
-
Configurer un déclencheur
Pour plus de détails sur la configuration et l'utilisation des déclencheurs OSS natifs et des déclencheurs OSS basés sur EventBridge, voir Configurer un déclencheur OSS natif et Configurer un déclencheur OSS basé sur EventBridge.
-
Rubriques relatives aux déclencheurs
Pour identifier l'événement ayant déclenché une fonction, imprimez le type d'événement dans les journaux de votre fonction. Pour plus d'informations, voir Gestion des journaux.
Pour invoquer une fonction depuis une autre, utilisez une API afin d'appeler la fonction cible. Pour plus d'informations, voir Les fonctions peuvent-elles s'invoquer mutuellement ?.