O Eventarc suporta a aplicação de um padrão de caminho ao filtrar. A sintaxe do padrão de caminho permite-lhe definir uma expressão que corresponda a eventos. Isto permite-lhe controlar a granularidade do acionador do Eventarc que está a criar, bem como capturar e agir em determinados eventos. Por exemplo, pode criar um acionador que se aplique a um único evento, como uma alteração a um ficheiro específico, ou pode expandir o âmbito do padrão e criar um acionador que se aplique de forma mais abrangente.
Aplique um padrão de caminho
Pode aplicar um padrão de caminho para filtrar eventos quando cria um acionador
usando a página da consola do Eventarc Google Cloud ou executando
um comando gcloud.
Por exemplo, pode aplicar um padrão de caminho ao filtrar por nomes de recursos ou instâncias da base de dados (uma única instância ou um caminho).
A especificação de um padrão do caminho do nome do recurso aplica-se quando cria um acionador para eventos dos registos de auditoria da nuvem e a valores
resourceName. Um nome do recurso indica o recurso que está a ser auditado através de um registo de auditoria. Os nomes dos recursos estão organizados hierarquicamente através de identificadores compostos pelo ID do próprio recurso e pelos IDs de quaisquer recursos principais, todos separados por barras invertidas, da seguinte forma:/projects/project-1/datasets/dataset-id. A filtragem feita pelo Eventarc corresponde a padrões com base nos valores destes identificadores. Para mais informações, consulte a secção Formato do nome do recurso neste documento.A especificação de um padrão do caminho da instância da base de dados aplica-se quando cria um acionador para eventos da Firebase Realtime Database e a valores
instanceouref. Uma instância da base de dados indica uma instância da Firebase Realtime Database. Pode aplicar um padrão de caminho ao nome da instância da instância da base de dados ou a um caminho de documento para o qual quer receber eventos quando os dados são criados, atualizados ou eliminados nesse caminho ou em qualquer um dos respetivos filhos.A especificação de um padrão do caminho do ID do recurso aplica-se quando cria um acionador para eventos da Cloud IoT e aos valores
registryedevice. Pode aplicar um padrão de caminho para filtrar alterações em registos e dispositivos num registo com correspondência de carateres universais.
Para ver detalhes, consulte as instruções para criar um acionador para um fornecedor, um tipo de evento e um destino específicos.
Identifique se pode aplicar um padrão de caminho
Para confirmar se pode aplicar um padrão de caminho a um atributo de um evento de um fornecedor, descreva o fornecedor de eventos. Por exemplo:
gcloud eventarc providers describe cloudaudit.googleapis.com --location=us-central1
A saída é semelhante à seguinte e um valor de pathPatternSupportedtrue indica que pode aplicar um padrão de caminho:
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
Em alternativa, por exemplo:
gcloud eventarc providers describe firebasedatabase.googleapis.com --location=us-central1
Quando o resultado é semelhante ao seguinte:
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 [...]
Para mais informações, consulte
gcloud eventarc providers describe.
Sintaxe do padrão de caminho
A sintaxe do padrão do caminho é definida da seguinte forma:
| Padrão | /? Segment (/Segment)* |
| Segmento | CaptureGroup | Expression |
| CaptureGroup | { ID (= Expression)? } |
| Expressão | Wildcard | MultiSegmentWildcard | NameSegment |
| NameSegment | (Character* Wildcard? Character*) |
| ID | [a-zA-Z0-9_]+ |
| Caráter universal | * |
| MultiSegmentWildcard | ** |
| Caráter1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Legenda:
? |
zero ou um |
* |
zero ou mais |
+ |
um ou mais |
| |
OU |
\wrefere-se a uma palavra; também representada como[a-zA-Z0-9_]\trefere-se a um separador\srefere-se a um caráter de espaço em branco
Expressões
Uma expressão pode ser um dos seguintes tipos de segmentos e não pode estar vazia:
- Um único segmento
Wildcarddefinido como*corresponde a zero ou mais carateres no padrão. - Um
MultiSegmentWildcarddefinido como**corresponde a zero ou mais segmentos no padrão. - Um
NameSegmentconsiste em zero ou um*e outros carateres. Esta combinação permite-lhe filtrar por prefixo, sufixo ou extensão de ficheiro. Por exemplo,file-*.txt.
Tenha em atenção que um caminho pode conter muitos carateres universais de segmento único, mas apenas um caráter universal de vários segmentos. Por exemplo, o seguinte caminho é inválido:
/projects/**/buckets/**.
Regionalidade dos recursos
Os nomes dos recursos podem conter identificadores de localização. Por exemplo:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
No entanto, a correspondência de padrões de caminhos está limitada à regionalidade dos recursos. Por exemplo, para acionadores dos registos de auditoria do Cloud, os carateres universais de localização só correspondem a acionadores da região dos registos de auditoria do Cloud ou a acionadores globais.
Grupos de captura
Um CaptureGroup permite-lhe capturar o conteúdo de uma expressão. Para tal, atribua o valor a um nome de variável entre chavetas; por exemplo,
buckets/{path=**}/files/{filename=file-*.txt}. Um caráter universal de segmento único pode omitir =* num grupo de captura; por exemplo, /projects/_/buckets/{bucket}/objects/file.*
Formato do nome do recurso
A tabela seguinte fornece exemplos de nomes de recursos completos paraGoogle Cloud serviços usados frequentemente. Não é uma lista exaustiva. Para saber mais sobre a formatação dos nomes completos dos recursos, consulte a secção Nomes dos recursos do guia de design de APIs.
| Tipo do recurso | Formato do nome do recurso completo |
|---|---|
| Conjuntos de dados do BigQuery | //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID |
| Contas do Cloud Billing | //cloudbilling.googleapis.com/billingAccounts/BILLING_ACCOUNT_ID |
| Documentos do Cloud Firestore1 | //firestore.googleapis.com/projects/PROJECT_ID/databases/DATABASE_ID/documents/DOCUMENT |
| Serviços do Cloud Run | //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID |
| Instâncias do Cloud SQL | //sqladmin.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID |
| Contentores do Cloud Storage 2 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID |
| Objetos do Cloud Storage2, 3 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID/objects/OBJECT_ID |
| Instâncias do Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID |
| Redes do Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK |
| Sub-redes do Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK |
| Clusters do Google Kubernetes Engine | //container.googleapis.com/projects/PROJECT_ID/clusters/CLUSTER_ID |
| Identity-Aware Proxy serviço de apps do App Engine | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/appengine-PROJECT_ID/services/APP_SERVICE_ID |
| Serviço de back-end do Compute Engine do IAP | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID_OR_NAME |
| Tópicos do Pub/Sub | //pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID |
| Organizações do Resource Manager | //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_NUMBER |
| Pastas do Resource Manager | //cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER |
| Projetos do Resource Manager | //cloudresourcemanager.googleapis.com/projects/PROJECT_ID |
1 Para o Cloud Firestore, não especifique uma barra inicial ao criar um acionador (consulte os exemplos). Para mais informações, consulte o artigo Modelo de dados do Cloud Firestore.
2 Para o Cloud Storage, os nomes dos recursos contêm um sublinhado (_) em vez de um ID do projeto. Não pode substituir o caráter de sublinhado por um ID do projeto, um nome do projeto ou um número do projeto.
3 Para o Cloud Storage, use o nome completo do objeto, incluindo barras invertidas. Estes carateres fazem parte do nome do objeto e não são separadores de caminhos.
Exemplos
Os exemplos seguintes demonstram como pode e não pode usar a sintaxe.
Padrões válidos
| Padrão | Descrição |
|---|---|
/projects/project-1/datasets/dataset-1 |
Nome do recurso específico. |
/projects/project-1/regions/region-1/subnetworks/* |
Corresponde a qualquer sub-rede em project-1 e region-1. |
/projects/_/buckets/bucket-1/objects/*.txt |
Corresponde a todos os ficheiros TXT no contentor. |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Corresponde a todos os ficheiros TXT com o prefixo file- no contentor. |
/projects/project-1/serviceAccounts/service-account-email-1/keys/** |
Corresponde a qualquer chave para um email de conta de serviço específico. |
/projects/_/**/file-*.txt |
Corresponde a qualquer ficheiro TXT com o prefixo file- para todos os contentores. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Corresponde a todos os ficheiros TXT com o prefixo file- para qualquer contentor
com o prefixo bucket-. |
/projects/_/buckets/{bucket}/objects/file.*/projects/_/buckets/{bucket=*}/objects/file.*/projects/_/buckets/*/objects/{filename=file.*}
|
Três representações diferentes do mesmo filtro. Encontra correspondências de qualquer contentor
com um ficheiro denominado file de qualquer tipo. Os dois primeiros exemplos
também capturam o contentor e o último exemplo captura o nome do ficheiro.
|
/projects/project-1/zones/zone-1/instances/** |
Corresponde a qualquer elemento em project-1 e zone-1. |
/projects/*/zones/zone-1/instances/** |
Corresponde a qualquer elemento em zone-1 em qualquer projeto. |
Padrões inválidos
| Padrão | Descrição |
|---|---|
/projects/_/buckets/bucket-1/objects/ |
Expressão vazia. |
/projects//buckets/bucket-1/objects/file1.txt |
Expressão vazia. |
/projects/_/buckets/bucket**/objects/file1.txt |
A expressão só pode conter um *. |
/projects/_/buckets/bucket-1/objects/file-*.* |
A expressão só pode conter um *. |
/projects/**/buckets/** |
O caminho do recurso só pode conter um **. |
/projects/_/buckets/{=*}/objects/file1.txt |
ID em falta no segmento. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
Expressão vazia dentro de um grupo de captura. |
/projects/_/buckets/{bucket/objects/file1.txt |
O grupo de captura não foi fechado. |
Correspondência de padrões
| Padrão | Recurso | Correspondências? |
|---|---|---|
/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 |
O que se segue?
- Para ver uma lista dos eventos suportados pelo Eventarc, consulte o artigo Tipos de eventos Google suportados pelo Eventarc.