Informazioni sui pattern dei percorsi

Eventarc supporta l'applicazione di un pattern del percorso durante l'applicazione di filtri. La sintassi del pattern del percorso consente di definire un'espressione che corrisponde agli eventi. Questo ti consente di controllare la granularità del trigger Eventarc che stai creando e di acquisire e intervenire su determinati eventi. Ad esempio, puoi creare un attivatore applicabile a un singolo evento, come una modifica a un file specifico, oppure estendere l'ambito del pattern e creare un attivatore applicabile in modo più ampio.

Applica un pattern del percorso

Puoi applicare un pattern del percorso per filtrare gli eventi quando crei un trigger utilizzando la pagina della console Eventarc di Google Cloud o eseguendo un comando gcloud.

Ad esempio, puoi applicare un pattern del percorso quando applichi un filtro in base a nomi di risorse o istanze di database (una singola istanza o un percorso).

  • Specificando un pattern del percorso del nome della risorsa si applica quando si crea un trigger per eventi di Cloud Audit Logs e per valori di resourceName. Il nome di una risorsa indica la risorsa oggetto di controllo tramite un log di controllo. I nomi delle risorse sono organizzati in modo gerarchico mediante identificatori costituiti dall'ID della risorsa stessa e dagli ID di eventuali risorse padre, tutti separati da barre, come in questo caso: /projects/_/buckets/bucket-id/objects/object-id. I filtri eseguiti da Eventarc corrispondono ai pattern basati sui valori di questi identificatori. Per ulteriori informazioni, consulta Nomi delle risorse.

  • Specificando un pattern del percorso dell'istanza del database si applica quando si crea un trigger per eventi di Firebase Realtime Database e per i valori instance o ref. Un'istanza di database indica un'istanza di Firebase Realtime Database. Puoi applicare un pattern del percorso al nome dell'istanza del database o al percorso di un documento per cui vuoi ricevere eventi quando i dati vengono creati, aggiornati o eliminati in quel percorso o in una delle relative istanze secondarie.

  • Specificando un pattern del percorso dell'ID risorsa si applica quando si crea un trigger per eventi Cloud IoT e per valori registry e device. Puoi applicare un pattern del percorso per filtrare le modifiche nei registry e nei dispositivi in un registro, con corrispondenza con caratteri jolly.

Per i dettagli, consulta le istruzioni per creare un attivatore per un fornitore, un tipo di evento e una destinazione specifici.

Verifica se puoi applicare un pattern del percorso

Per verificare se puoi applicare un pattern del percorso a un attributo di un evento da un provider, descrivi il provider di eventi. Ad esempio:

gcloud eventarc providers describe cloudaudit.googleapis.com --location=us-central1

L'output è simile al seguente e un valore pathPatternSupported di true indica che puoi applicare un pattern del percorso:

displayName: Cloud Audit Logs
eventTypes:
- description: An audit log is created that matches the trigger's filter criteria.
  filteringAttributes:
  - attribute: methodName
    description: The identifier of the service's operation.
    required: true
  - attribute: resourceName
    description: The complete path to a resource. Used to filter events for a specific
      resource.
    pathPatternSupported: true
  - attribute: serviceName
    description: The identifier of the Google Cloud service.
    required: true
  - attribute: type
    required: true
  type: google.cloud.audit.log.v1.written
name: projects/project-name/locations/us-central1/providers/cloudaudit.googleapis.com

Ad esempio:

gcloud eventarc providers describe firebasedatabase.googleapis.com --location=us-central1

Dove l'output è simile al seguente:

displayName: Firebase Realtime Database
eventTypes:
- description: New data has been created in the database.
  filteringAttributes:
  - attribute: instance
    description: A single database instance.
    pathPatternSupported: true
    required: true
  - attribute: ref
    description: Pattern to match for the database instance.
    pathPatternSupported: true
    required: true
  - attribute: type
    required: true
  type: google.firebase.database.ref.v1.created
[...]

Per maggiori informazioni, consulta gcloud eventarc providers describe.

Sintassi del pattern del percorso

La sintassi del pattern del percorso è definita come segue:

Sintassi del pattern del percorso

Sequenza /? Segment (/Segment)*
Segmento CaptureGroup | Expression
Gruppo Capture { ID (= Expression)? }
Espressionismo Wildcard | MultiSegmentWildcard | NameSegment
Segmento dei nomi (Character* Wildcard? Character*)
ID [a-zA-Z0-9_]+
Carattere jolly *
Scheda MultiSegmentWildcard **
Carattere1 [\\w\\s\\t~@#$%&.,?:;+='[]()-]

Legenda:

? zero o uno
* zero o più
+ uno o più
| OR
1 Sono supportati solo i caratteri ASCII elencati.

Espressioni

Un'espressione può essere uno dei seguenti tipi di segmento e non può essere vuota:

  • Un singolo segmento Wildcard definito come * corrisponde a zero o più caratteri nel pattern.
  • Un MultiSegmentWildcard definito come ** corrisponde a zero o più segmenti nel pattern.
  • Un NameSegment è composto da zero o da un * e da altri caratteri. Questa combinazione ti consente di filtrare per prefisso, suffisso o estensione file, ad esempio file-*.txt.

Tieni presente che un percorso può contenere molti caratteri jolly di segmento, ma solo un carattere jolly di più segmenti. Ad esempio, il seguente percorso non è valido: /projects/**/buckets/**.

Regione delle risorse

I nomi delle risorse possono contenere identificatori di località. Ad esempio:

/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger

Tuttavia, la corrispondenza del pattern del percorso è limitata dalla regione di risorse. Ad esempio, per gli trigger di Cloud Audit Logs, i caratteri jolly nella località corrispondono solo agli attivatori della regione o agli attivatori globali.

Acquisisci gruppi

CaptureGroup consente di acquisire il contenuto di un'espressione. Per farlo, assegna il valore a una variabile tra parentesi graffe, ad esempio buckets/{path=**}/files/{filename=file-*.txt}. Un carattere jolly di un singolo segmento può omettere =* in un gruppo Capture; ad esempio, /projects/_/buckets/{bucket}/objects/file.*

Esempi

I seguenti esempi mostrano come utilizzare e non utilizzare la sintassi.

Pattern validi

Pattern Descrizione
/projects/_/buckets/bucket-1/objects/file1.txt Nome risorsa specifico.
/projects/_/buckets/bucket-1/objects/* Corrisponde a qualsiasi file nel bucket
/projects/_/buckets/bucket-1/objects/*.txt Corrisponde a tutti i file TXT nel bucket.
/projects/_/buckets/bucket-1/objects/file-*.txt Corrisponde a tutti i file TXT con il prefisso file- nel bucket.
/projects/_/buckets/bucket-1/objects/** Corrisponde a ogni elemento nel bucket.
/projects/_/buckets/bucket-1/objects/files/* Corrisponde a qualsiasi file nella directory files nel bucket bucket-1.
/projects/_/**/file-*.txt Corrisponde a qualsiasi file TXT con prefisso file- per tutti i bucket.
/projects/_/buckets/bucket-*/objects/file-*.txt Corrisponde a tutti i file TXT con prefisso file- per qualsiasi bucket con prefisso bucket-.
/projects/_/buckets/{bucket}/objects/file.*
/projects/_/buckets/{bucket=*}/objects/file.*
/projects/_/buckets/*/objects/{filename=file.*}
Tre rappresentazioni diverse dello stesso filtro. Corrisponde a qualsiasi bucket con un file denominato file di qualsiasi tipo; I primi due esempi acquisiscono anche il bucket, mentre l'ultimo esempio acquisisce il nome del file.

Pattern non validi

Pattern Descrizione
/projects/_/buckets/bucket-1/objects/ Espressione vuota.
/projects//buckets/bucket-1/objects/file1.txt Espressione vuota.
/projects/_/buckets/bucket**/objects/file1.txt L'espressione può contenere un solo *.
/projects/_/buckets/bucket-1/objects/file-*.* L'espressione può contenere un solo *.
/projects/**/buckets/** Il percorso della risorsa può contenere un solo **.
/projects/_/buckets/{=*}/objects/file1.txt ID mancante nel segmento.
/projects/_/buckets/{bucket=}/objects/file1.txt Espressione vuota all'interno di un gruppo Capture.
/projects/_/buckets/{bucket/objects/file1.txt Acquisisci gruppo non chiuso.

Corrispondenza di pattern

Pattern Risorsa Corrisponde a?
/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

Passaggi successivi