Eventarc supporta l'applicazione di un pattern di percorso durante il filtraggio. La sintassi del pattern del percorso ti consente di definire un'espressione che corrisponda agli eventi. In questo modo puoi controllare la granularità del trigger Eventarc che stai creando e acquisire determinati eventi e intervenire in relazione agli stessi. Ad esempio, puoi creare un trigger che si applica a un singolo evento, ad esempio una modifica a un file specifico, oppure puoi estendere l'ambito del pattern e creare un trigger che si applica in modo più ampio.
Applicare un pattern del percorso
Puoi applicare un pattern di percorso per filtrare gli eventi quando crei un trigger
utilizzando la pagina della console Eventarc Google Cloud o eseguendo
un comando gcloud
.
Ad esempio, puoi applicare un pattern di percorso quando filtri in base a nomi delle risorse o istanze di database (una singola istanza o un percorso).
La specifica di un pattern del percorso del nome della risorsa si applica quando crei un trigger per gli eventi Cloud Audit Logs e ai valori
resourceName
. Un nome della risorsa indica la risorsa sottoposta a controllo tramite un log di controllo. I nomi delle risorse sono organizzati gerarchicamente utilizzando identificatori composti dall'ID della risorsa stessa e dagli ID di eventuali risorse padre, tutti separati da barre, come in questo esempio:/projects/project-1/datasets/dataset-id
. Il filtro eseguito da Eventarc corrisponde ai pattern in base ai valori di questi identificatori. Per saperne di più, consulta la sezione Formato del nome della risorsa in questo documento.La specifica di un pattern del percorso dell'istanza del database si applica quando si crea un trigger per gli eventi Firebase Realtime Database e ai valori
instance
oref
. Un'istanza di database indica un'istanza di Firebase Realtime Database. Puoi applicare un pattern di percorso al nome dell'istanza del database o a un percorso del documento per il quale vuoi ricevere eventi quando i dati vengono creati, aggiornati o eliminati in quel percorso o in uno dei relativi elementi secondari.La specifica di un pattern del percorso dell'ID risorsa si applica quando crei un trigger per gli eventi Cloud IoT e ai valori
registry
edevice
. Puoi applicare un pattern del percorso per filtrare le modifiche nei registri e nei dispositivi di un registro con la corrispondenza con caratteri jolly.
Per maggiori dettagli, consulta le istruzioni per creare un trigger per un fornitore, un tipo di evento e una destinazione specifici.
Identificare se puoi applicare un pattern di percorso
Per verificare se puoi applicare un pattern di percorso a un attributo di un evento di 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 di 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
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 ulteriori informazioni, vedi
gcloud eventarc providers describe
.
Sintassi del pattern del percorso
La sintassi del pattern del percorso è definita come segue:
Pattern | /? Segment (/ Segment )* |
Segmento | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Expression | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
ID | [a-zA-Z0-9_]+ |
Jolly | * |
MultiSegmentWildcard | ** |
Carattere1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Legenda:
? |
zero o uno |
* |
zero o più |
+ |
uno o più |
| |
OPPURE |
\w
si riferisce a una parola; è rappresentato anche come[a-zA-Z0-9_]
\t
si riferisce a una scheda\s
si riferisce a un carattere di spazio vuoto
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 un*
e altri caratteri. Questa combinazione ti consente di filtrare in base al prefisso, al suffisso o all'estensione del file; ad esempio,file-*.txt
.
Tieni presente che un percorso può contenere molti caratteri jolly per un singolo segmento, ma solo
un carattere jolly per più segmenti. Ad esempio, il seguente percorso non è valido:
/projects/**/buckets/**
.
Regionalità delle risorse
I nomi delle risorse possono contenere identificatori di località. Ad esempio:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
Tuttavia, la corrispondenza dei pattern di percorso è vincolata dalla regionalità delle risorse. Ad esempio, per i trigger Cloud Audit Logs, i caratteri jolly di località corrispondono solo ai trigger della regione Cloud Audit Logs o ai trigger globali.
Gruppi di acquisizione
Un CaptureGroup
ti consente di acquisire il contenuto di un'espressione. Per farlo,
assegna il valore a un nome di variabile tra parentesi graffe, ad esempio,
buckets/{path=**}/files/{filename=file-*.txt}
. Un singolo carattere jolly di segmento può
omettere =*
in un gruppo di acquisizione; ad esempio,
/projects/_/buckets/{bucket}/objects/file.*
Formato del nome della risorsa
La tabella seguente fornisce esempi di nomi completi delle risorse per i serviziGoogle Cloud di uso comune. Non si tratta di un elenco esaustivo. Per scoprire di più su come vengono formattati i nomi completi delle risorse, consulta la sezione Nomi delle risorse della guida alla progettazione delle API.
Tipo di risorsa | Formato del nome completo della risorsa |
---|---|
Set di dati BigQuery | //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID |
Account di fatturazione Cloud | //cloudbilling.googleapis.com/billingAccounts/BILLING_ACCOUNT_ID |
Documenti1 di Cloud Firestore | //firestore.googleapis.com/projects/PROJECT_ID/databases/DATABASE_ID/documents/DOCUMENT |
Servizi Cloud Run | //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID |
Istanze Cloud SQL | //sqladmin.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID |
Bucket2 Cloud Storage | //storage.googleapis.com/projects/_/buckets/BUCKET_ID |
Oggetti2, 3 di Cloud Storage | //storage.googleapis.com/projects/_/buckets/BUCKET_ID/objects/OBJECT_ID |
Istanze Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID |
Reti di Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK |
Subnet di Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK |
Cluster Google Kubernetes Engine | //container.googleapis.com/projects/PROJECT_ID/clusters/CLUSTER_ID |
Identity-Aware Proxy Servizio app App Engine | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/appengine-PROJECT_ID/services/APP_SERVICE_ID |
Servizio di backend di Compute Engine IAP | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID_OR_NAME |
Argomenti Pub/Sub | //pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID |
Organizzazioni Resource Manager | //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_NUMBER |
Cartelle di Resource Manager | //cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER |
Progetti di Resource Manager | //cloudresourcemanager.googleapis.com/projects/PROJECT_ID |
1 Per Cloud Firestore, non specificare una barra iniziale quando crei un trigger (vedi gli esempi). Per ulteriori informazioni, consulta Modello di dati di Cloud Firestore.
2 Per Cloud Storage, i nomi delle risorse contengono un
trattino basso (_
) anziché un ID progetto. Non puoi sostituire il carattere di sottolineatura
con un ID progetto, un nome progetto o un numero di progetto.
3 Per Cloud Storage, utilizza l'intero nome dell'oggetto, incluse le barre avanti. Questi caratteri fanno parte del nome dell'oggetto, non sono separatori di percorso.
Esempi
I seguenti esempi mostrano come puoi e non puoi utilizzare la sintassi.
Pattern validi
Pattern | Descrizione |
---|---|
/projects/project-1/datasets/dataset-1 |
Nome della risorsa specifica. |
/projects/project-1/regions/region-1/subnetworks/* |
Corrisponde a qualsiasi subnet in project-1 e region-1 . |
/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/project-1/serviceAccounts/service-account-email-1/keys/** |
Corrisponde a qualsiasi chiave per un indirizzo email del account di servizio specifico. |
/projects/_/**/file-*.txt |
Corrisponde a qualsiasi file TXT con il prefisso file- per tutti i bucket. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Corrisponde a tutti i file TXT con il prefisso file- per qualsiasi bucket
con il 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 acquisisce il nome del file.
|
/projects/project-1/zones/zone-1/instances/** |
Corrisponde a qualsiasi elemento in project-1 e zone-1 . |
/projects/*/zones/zone-1/instances/** |
Corrisponde a qualsiasi elemento in zone-1 in qualsiasi progetto. |
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 di acquisizione. |
/projects/_/buckets/{bucket/objects/file1.txt |
Il gruppo di acquisizione non è chiuso. |
Corrispondenza di pattern
Pattern | Risorsa | Fiammiferi? |
---|---|---|
/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 |
||
{collection=[clients,users]}/id |
users/id |
|
clients/id |
||
[clients,users]/id |
||
{collection=clients,users}/id |
users/id |
|
clients/id |
||
clients,users/id |
||
all users/{id=.*_ +1@gmail.com} |
all-users/aa_ +1@gmail.com |
|
all users/bb_+1@gmail.com |
||
all users/cc +1@gmail.com |
Passaggi successivi
- Per un elenco degli eventi supportati da Eventarc, consulta Tipi di eventi Google supportati da Eventarc.