Eventarc admite la aplicación de un patrón de ruta de acceso cuando se filtra. Por ejemplo, puedes filtrar los nombres de los recursos. Un nombre de recurso se organiza de forma jerárquica mediante identificadores compuestos por el ID del recurso y los ID de los recursos superiores, todos separados por barras diagonales, de la siguiente manera: /projects/_/buckets/bucket-id/objects/object-id
. El filtrado que realiza Eventarc coincide con los patrones según los valores de estos identificadores. Para obtener más información, consulta Nombres de recursos.
La sintaxis del patrón de ruta de acceso de Eventarc te permite definir una expresión que coincide con eventos. Esto te permite controlar el nivel de detalle del activador de Eventarc que estás creando, así como capturar y reaccionar a ciertos eventos. Por ejemplo, puedes crear un activador que se aplique a un solo evento, como un cambio en un archivo específico, o puedes extender el alcance del patrón y crear un activador que se aplique de manera más amplia.
Aplica un patrón de ruta de acceso
Puedes aplicar un patrón de ruta de acceso para filtrar los recursos cuando creas un activador mediante la página de la consola de Google Cloud de Eventarc o si ejecutas un comando de gcloud
.
A través de la consola, proporciona el patrón de la ruta de acceso en el cuadro de texto Patrón de ruta de acceso. Para obtener más detalles, consulta Crea un activador mediante la consola de Google Cloud.
Mediante gcloud
, usa una marca --event-filters-path-pattern="resourceName=VALUE"
en lugar de una marca --event-filters="resourceName=VALUE"
. Por ejemplo:
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
Para obtener más información, consulta Crea un activador para Cloud Run o Crea un activador para Cloud Run for Anthos.
Sintaxis del patrón de ruta de acceso
La sintaxis del patrón de la ruta de acceso se define de la siguiente manera:
Patrón | /? Segment (/ Segment )* |
Segmento | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Expresión | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
ID | [a-zA-Z0-9_]+ |
Comodín | * |
MultiSegmentWildcard | ** |
Character1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Leyenda:
? |
cero o uno |
* |
cero o más |
+ |
uno o más |
| |
O |
Expresiones
Una expresión puede ser de uno de los siguientes tipos de segmentos, y no puede estar vacía:
- Un solo segmento
Wildcard
definido como*
coincide con cero o más caracteres en el patrón. - Un
MultiSegmentWildcard
definido como**
coincide con cero o más segmentos del patrón. - Un
NameSegment
consiste en cero o un*
y otros caracteres. Esta combinación te permite filtrar por prefijo, sufijo o extensión de archivo; por ejemplo,file-*.txt
.
Ten en cuenta que una ruta de acceso puede contener muchos comodines de segmento único, pero solo un comodín de segmento múltiple. Por ejemplo, la siguiente ruta de acceso no es válida: /projects/**/buckets/**
.
Regionalidad del recurso
Los nombres de los recursos pueden contener identificadores de ubicación. Por ejemplo:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
Sin embargo, la coincidencia del patrón de la ruta de acceso está limitada por la regionalidad del recurso. Por ejemplo, para los activadores de registros de auditoría de Cloud, los comodines de ubicación solo coinciden con activadores de la región de registros de auditoría de Cloud o activadores globales.
Grupos de captura
Una CaptureGroup
te permite capturar el contenido de una expresión. Para ello, asigna el valor a un nombre de variable entre llaves. por ejemplo, buckets/{path=**}/files/{filename=file-*.txt}
. Un comodín de un solo segmento puede omitir =*
en un grupo de captura, por ejemplo, /projects/_/buckets/{bucket}/objects/file.*
Examples
Los siguientes ejemplos muestran cómo puedes y no puedes usar la sintaxis.
Patrones válidos
Patrón | Descripción |
---|---|
/projects/_/buckets/bucket-1/objects/file1.txt |
Nombre del recurso específico. |
/projects/_/buckets/bucket-1/objects/* |
Coincide con cualquier archivo en el directorio objects . |
/projects/_/buckets/bucket-1/objects/*.txt |
Coincide con todos los archivos TXT en el directorio objects . |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Coincide con todos los archivos TXT con el prefijo file- en el directorio objects . |
/projects/_/**/file-*.txt |
Coincide con cualquier archivo TXT con el prefijo file- para todos los depósitos. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Coincide con todos los archivos TXT con el prefijo file- para cualquier bucket con el prefijo bucket- . |
/projects/_/buckets/{bucket}/objects/file.* /projects/_/buckets/{bucket=*}/objects/file.* /projects/_/buckets/*/objects/{filename=file.*}
|
Tres representaciones diferentes del mismo filtro. Coincide con cualquier bucket con un archivo llamado file de cualquier tipo. Los dos primeros ejemplos también capturan el bucket y el último captura el nombre del archivo.
|
Patrones no válidos
Patrón | Descripción |
---|---|
/projects/_/buckets/bucket-1/objects/ |
Expresión vacía. |
/projects//buckets/bucket-1/objects/file1.txt |
Expresión vacía. |
/projects/_/buckets/bucket**/objects/file1.txt |
La expresión solo puede contener una * . |
/projects/_/buckets/bucket-1/objects/file-*.* |
La expresión solo puede contener una * . |
/projects/**/buckets/** |
La ruta de acceso del recurso solo puede contener un ** . |
/projects/_/buckets/{=*}/objects/file1.txt |
Falta el ID en el segmento. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
Expresión vacía dentro de un grupo de captura. |
/projects/_/buckets/{bucket/objects/file1.txt |
El grupo de captura no está cerrado. |
Coincidencia de patrones
Patrón | Recurso | ¿Hay coincidencias? |
---|---|---|
/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 |
¿Qué sigue?
- Para obtener una lista de los eventos compatibles con Eventarc, consulta Tipos de eventos compatibles con Eventarc.