Eventarc permet d'appliquer un format de chemin d'accès lors du filtrage. Par exemple, vous pouvez filtrer les noms de ressources. Un nom de ressource est organisé hiérarchiquement à l'aide des identifiants composés de l'ID de la ressource elle-même et des ID de toutes les ressources parentes, tous séparés par des barres obliques, comme ceci : /projects/_/buckets/bucket-id/objects/object-id
. Le filtrage effectué par Eventarc correspond aux modèles en fonction des valeurs de ces identifiants. Pour en savoir plus, consultez la section Noms de ressources.
La syntaxe de modèle de chemin d'événement Eventarc vous permet de définir une expression qui correspond à des événements. Cela vous permet de contrôler la précision du déclencheur Eventarc que vous créez et de capturer et d'agir sur certains événements. Par exemple, vous pouvez créer un déclencheur qui s'applique à un seul événement, tel qu'une modification apportée à un fichier spécifique, ou étendre le champ d'application du modèle et créer un déclencheur plus large.
Appliquer un format de chemin d'accès
Vous pouvez appliquer un modèle de chemin d'accès pour filtrer les ressources lorsque vous créez un déclencheur à l'aide de la page Eventarc de la console ou en exécutant une commande gcloud
.
Dans la console, indiquez le format de chemin d'accès dans la zone de texte Chemin d'accès. Pour en savoir plus, consultez la section Créer un déclencheur via Google Cloud Console.
À l'aide de gcloud
, utilisez une option --event-filters-path-pattern="resourceName=VALUE"
au lieu d'une option --event-filters="resourceName=VALUE"
. Exemple :
gcloud eventarc triggers create helloworld-trigger \
--location=us-central1 \
--destination-run-service=helloworld-events \
--destination-run-region=us-central1 \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=storage.googleapis.com" \
--event-filters="methodName=storage.buckets.update" \
--event-filters-path-pattern="resourceName=projects/_/buckets/**/r*.txt" \
--service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
Pour en savoir plus, consultez les sections Créer un déclencheur pour Cloud Run ou Créer un déclencheur pour Cloud Run pour Anthos.
Syntaxe du format de chemin d'accès
La syntaxe du format de chemin d'accès est définie comme suit :
Format | /? Segment (/ Segment )* |
Segment | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Expression | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
Identifiant | [a-zA-Z0-9_]+ |
Caractère générique | * |
MultiSegmentWildcard | ** |
Character1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Légende :
? |
zéro ou un |
* |
zéro ou plus |
+ |
un ou plusieurs |
| |
OU |
Expressions
Une expression peut correspondre à l'un des types de segments suivants et ne peut pas être vide :
- Un segment unique
Wildcard
défini sur*
correspond à zéro ou plusieurs caractères du modèle. - Une valeur
MultiSegmentWildcard
définie sur**
correspond à zéro ou plusieurs segments du modèle. - Une chaîne
NameSegment
est constituée de zéro ou un*
, et d'autres caractères. Cette combinaison vous permet de filtrer par préfixe, suffixe ou extension de fichier. Exemple :file-*.txt
.
Notez qu'un chemin peut contenir de nombreux caractères génériques à un seul segment, mais un seul caractère générique. Par exemple, le chemin d'accès suivant n'est pas valide : /projects/**/buckets/**
.
Régionalité des ressources
Les noms des ressources peuvent contenir des identifiants d'emplacement. Exemple :
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
Cependant, la correspondance des formats de chemin est limitée par la régionalisation des ressources. Par exemple, pour les déclencheurs Cloud Audit Logs, les caractères génériques d'emplacement ne correspondent qu'aux déclencheurs de la région Cloud Audit Logs ou aux déclencheurs globaux.
Groupes de capture
Un CaptureGroup
vous permet de capturer le contenu d'une expression. Pour ce faire, affectez la valeur à un nom de variable entre accolades. Par exemple : buckets/{path=**}/files/{filename=file-*.txt}
. Un seul caractère générique de segment peut omettre =*
dans un groupe de capture. Par exemple : /projects/_/buckets/{bucket}/objects/file.*
Examples
Les exemples suivants montrent comment utiliser et ne pas utiliser la syntaxe.
Formats valides
Format | Description |
---|---|
/projects/_/buckets/bucket-1/objects/file1.txt |
Nom de ressource spécifique. |
/projects/_/buckets/bucket-1/objects/* |
Correspond à n'importe quel fichier du répertoire objects . |
/projects/_/buckets/bucket-1/objects/*.txt |
Renvoie tous les fichiers TXT du répertoire objects . |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Renvoie tous les fichiers TXT comportant le préfixe file- dans le répertoire objects . |
/projects/_/**/file-*.txt |
Correspond à n'importe quel fichier TXT avec le préfixe file- pour tous les buckets. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Renvoie tous les fichiers TXT comportant le préfixe file- pour tout bucket portant le préfixe bucket- . |
/projects/_/buckets/{bucket}/objects/file.* /projects/_/buckets/{bucket=*}/objects/file.* /projects/_/buckets/*/objects/{filename=file.*}
|
Trois représentations différentes du même filtre. Correspond à n'importe quel bucket avec un fichier nommé file de n'importe quel type. Les deux premiers exemples capturent également le bucket et le dernier exemple capture le nom du fichier.
|
Formats non valides
Format | Description |
---|---|
/projects/_/buckets/bucket-1/objects/ |
Expression vide. |
/projects//buckets/bucket-1/objects/file1.txt |
Expression vide. |
/projects/_/buckets/bucket**/objects/file1.txt |
L'expression ne peut contenir qu'un seul * . |
/projects/_/buckets/bucket-1/objects/file-*.* |
L'expression ne peut contenir qu'un seul * . |
/projects/**/buckets/** |
Le chemin d'accès à la ressource ne peut contenir qu'un seul ** . |
/projects/_/buckets/{=*}/objects/file1.txt |
ID manquant dans le segment. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
Expression vide dans un groupe de capture. |
/projects/_/buckets/{bucket/objects/file1.txt |
Le groupe de capture n'est pas fermé. |
Correspondance de modèles
Format | Resource | Correspond ? |
---|---|---|
/buckets/bucket-1/objects/file1.txt |
/buckets/bucket-1/objects/file1.txt |
|
/buckets/bucket-1/objects/file2.txt |
||
/buckets/bucket-1/objects/* |
/buckets/bucket-1/objects/file3.txt |
|
/buckets/bucket-1/objects/file4.jpg |
||
/buckets/bucket-1/objects/files/file4.jpg |
||
/buckets/bucket-1/objects |
||
/buckets/bucket-1/objects/*.txt |
/buckets/bucket-1/objects/file5.txt |
|
/buckets/bucket-1/objects/file6.jpg |
||
/buckets/bucket-1/objects/file-*.txt |
/buckets/bucket-1/objects/file-777.txt |
|
/buckets/bucket-1/objects/file-.txt |
||
/buckets/bucket-1/objects/file.txt |
||
projects/_/**/{filename=file-*.txt} |
projects/_/objects/object-1/files/file-9.txt |
|
projects/_/{ob}jects/**/-+=*/file-9.txt |
||
projects/_/file-10.txt |
||
projects/_/files-1/file-1.txt/files-2/file-2.txt |
||
projects/_//file-1234.txt |
||
projects/_/files/file-5.txt/file.txt |
Étape suivante
- Pour obtenir la liste des événements compatibles avec Eventarc, consultez la section Types d'événements compatibles avec Eventarc.