Comprende los patrones de ruta de acceso

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:

Sintaxis del patrón de ruta de acceso

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
1 Solo se admiten los caracteres ASCII enumerados.

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?