Eventarc unterstützt das Anwenden eines Pfadmusters beim Filtern. Beispielsweise können Sie nach Ressourcennamen filtern. Ein Ressourcenname wird hierarchisch mit Kennungen organisiert, die aus der ID der Ressource und den IDs aller übergeordneten Ressourcen bestehen, getrennt durch Schrägstriche wie in diesem Beispiel: /projects/_/buckets/bucket-id/objects/object-id
. Die von Eventarc durchgeführte Filterung gleicht Muster anhand der Werte dieser Kennungen ab. Weitere Informationen finden Sie unter Ressourcennamen.
Mit der Pfadmustersyntax von Eventarc können Sie einen Ausdruck definieren, der Ereignissen entspricht. Auf diese Weise können Sie den Detaillierungsgrad des von Ihnen erstellten Eventarc-Triggers steuern und bestimmte Ereignisse erfassen und darauf reagieren. Sie können beispielsweise einen Trigger erstellen, der für ein einzelnes Ereignis gilt, z. B. eine Änderung an einer bestimmten Datei, oder Sie können den Umfang des Musters erweitern und einen Trigger erstellen, der breiter angewendet wird.
Pfadmuster anwenden
Sie können ein Pfadmuster anwenden, um Ressourcen zu filtern, wenn Sie einen Trigger auf der Console-Seite von Eventarc erstellen oder einen gcloud
-Befehl ausführen.
Geben Sie in der Konsole das Pfadmuster im Textfeld Pfadmuster an. Weitere Informationen finden Sie unter Trigger über die Google Cloud Console erstellen.
Verwenden Sie mit gcloud
ein --event-filters-path-pattern="resourceName=VALUE"
-Flag anstelle eines --event-filters="resourceName=VALUE"
-Flags. Beispiel:
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
Weitere Informationen finden Sie unter Trigger für Cloud Run erstellen oder Trigger für Cloud Run for Anthos erstellen.
Pfadmustersyntax
Die Pfadmustersyntax ist so definiert:
Muster | /? Segment (/ Segment )* |
Segment | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Expression | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
ID | [a-zA-Z0-9_]+ |
Wildcard | * |
MultiSegmentWildcard | ** |
Character1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Legende:
? |
null oder eins |
* |
null oder mehr |
+ |
eins oder mehr |
| |
OR |
Ausdrücke
Ein Ausdruck kann einen der folgenden Segmenttypen haben und nicht leer sein:
- Eine Einzelsegment-
Wildcard
, definiert als*
, entspricht null oder mehr Zeichen im Muster. - Eine als
**
definierteMultiSegmentWildcard
entspricht null oder mehr Segmenten im Muster. - Ein
NameSegment
besteht aus null oder einem*
und anderen Zeichen. Mit dieser Kombination können Sie nach Präfix, Suffix oder Dateiendung filtern. Beispiel:file-*.txt
.
Beachten Sie, dass ein Pfad viele Einzelsegment-Platzhalter enthalten kann, aber nur einen Platzhalter mit mehreren Segmenten. Der folgende Pfad ist beispielsweise ungültig: /projects/**/buckets/**
.
Ressourcenregionalität
Ressourcennamen können Standortkennungen enthalten. Beispiel:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
Der Pfadmusterabgleich ist jedoch durch die Ressourcenregionalität eingeschränkt. Bei Cloud-Audit-Logs-Triggern können beispielsweise Standortplatzhalter nur mit Triggern aus der Cloud-Audit-Logs-Region oder mit globalen Triggern übereinstimmen.
Erfassungsgruppen
Mit einer CaptureGroup
können Sie den Inhalt eines Ausdrucks erfassen. Weisen Sie dazu den Wert einem Variablennamen in geschweiften Klammern zu. Beispiel: buckets/{path=**}/files/{filename=file-*.txt}
. Ein Einzelsegment-Platzhalter kann =*
in einer Erfassungsgruppe weglassen. Beispiel: /projects/_/buckets/{bucket}/objects/file.*
Beispiele
In den folgenden Beispielen wird gezeigt, wie Sie die Syntax verwenden und nicht verwenden können.
Gültige Muster
Muster | Beschreibung |
---|---|
/projects/_/buckets/bucket-1/objects/file1.txt |
Spezifischer Ressourcenname. |
/projects/_/buckets/bucket-1/objects/* |
Stimmt mit einer beliebigen Datei im Verzeichnis objects überein. |
/projects/_/buckets/bucket-1/objects/*.txt |
Entspricht allen TXT-Dateien im Verzeichnis objects . |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Entspricht allen TXT-Dateien mit dem Präfix file- im Verzeichnis objects . |
/projects/_/**/file-*.txt |
Entspricht einer beliebigen TXT-Datei mit dem Präfix file- für alle Buckets. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Entspricht allen TXT-Dateien mit dem Präfix file- für jeden Bucket mit dem Präfix bucket- . |
/projects/_/buckets/{bucket}/objects/file.* /projects/_/buckets/{bucket=*}/objects/file.* /projects/_/buckets/*/objects/{filename=file.*}
|
Drei verschiedene Darstellungen desselben Filters. Entspricht einem beliebigen Bucket mit einer Datei namens file eines beliebigen Typs. In den ersten beiden Beispielen wird auch der Bucket erfasst und im letzten Beispiel wird der Dateiname erfasst.
|
Ungültige Muster
Muster | Beschreibung |
---|---|
/projects/_/buckets/bucket-1/objects/ |
Leerer Ausdruck. |
/projects//buckets/bucket-1/objects/file1.txt |
Leerer Ausdruck. |
/projects/_/buckets/bucket**/objects/file1.txt |
Der Ausdruck kann nur ein * enthalten. |
/projects/_/buckets/bucket-1/objects/file-*.* |
Der Ausdruck kann nur ein * enthalten. |
/projects/**/buckets/** |
Der Ressourcenpfad darf nur ein ** enthalten. |
/projects/_/buckets/{=*}/objects/file1.txt |
Fehlende ID im Segment. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
Leerer Ausdruck in einer Erfassungsgruppe. |
/projects/_/buckets/{bucket/objects/file1.txt |
Erfassungsgruppe nicht geschlossen. |
Musterabgleich
Muster | Ressource | Stimmt überein? |
---|---|---|
/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 |
Nächste Schritte
- Eine Liste der von Eventarc unterstützten Ereignisse finden Sie unter Von Eventarc unterstützte Ereignistypen.