O Eventarc permite a aplicação de um padrão de caminho durante a filtragem. Por
exemplo, é possível filtrar por nomes de recursos. Um nome de recurso é organizado
hierarquicamente usando identificadores compostos pelo ID do recurso em si e
pelos IDs de qualquer recurso pai, todos separados por barras, desta forma:
/projects/_/buckets/bucket-id/objects/object-id
. A filtragem feita pelo Eventarc
corresponde a padrões com base nos valores desses identificadores. Para mais informações,
consulte Nomes de recursos.
A sintaxe de padrão de caminho do Eventarc permite definir uma expressão que corresponda aos eventos. Isso permite que você controle a granularidade do gatilho do Eventarc que está criando, além de capturar e realizar ações em determinados eventos. Por exemplo, é possível criar um gatilho que se aplique a um único evento, como uma mudança em um arquivo específico, ou ampliar o escopo do padrão e criar um gatilho mais abrangente.
Aplicar um padrão de caminho
É possível aplicar um padrão de caminho para filtrar recursos quando você cria um gatilho
usando a página do Eventarc no console ou executando um
comando gcloud
.
No console, informe o padrão de caminho na caixa de texto Padrão de caminho. Para detalhes, consulte Criar um gatilho com o Console do Google Cloud.
Com o gcloud
, use uma sinalização
--event-filters-path-pattern="resourceName=VALUE"
,
e não --event-filters="resourceName=VALUE"
. Exemplo:
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
Veja detalhes em Criar um gatilho para o Cloud Run ou Criar um gatilho para o Cloud Run for Anthos.
Sintaxe do padrão de caminho
A sintaxe do padrão de caminho é definida da seguinte maneira:
Padrão | /? Segment (/ Segment )* |
Segmento | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Expressão | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
Código | [a-zA-Z0-9_]+ |
Curinga | * |
MultiSegmentWildcard | ** |
Caractere1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Legenda:
? |
zero ou um |
* |
zero ou mais |
+ |
um ou mais |
| |
OU |
Expressões
Uma expressão pode ser um dos seguintes tipos de segmento e não pode estar em branco:
- Um único segmento
Wildcard
definido como*
corresponde a zero ou mais caracteres no padrão. - Uma
MultiSegmentWildcard
definida como**
corresponde a zero ou mais segmentos no padrão. - Uma
NameSegment
consiste em zero ou um*
e outros caracteres. Essa combinação permite filtrar por prefixo, sufixo ou extensão de arquivo: por exemplo,file-*.txt
.
Um caminho pode conter muitos caracteres curinga de segmento único, mas
apenas um caractere curinga múltiplo. Por exemplo, o seguinte caminho é inválido:
/projects/**/buckets/**
.
Regionalidade do recurso
Os nomes dos recursos podem conter identificadores de local. Exemplo:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
No entanto, a correspondência do padrão de caminho é restrita pela regionalidade dos recursos. Por exemplo, para gatilhos de registros de auditoria do Cloud, os caracteres curinga de local correspondem apenas aos acionadores da região dos registros de auditoria do Cloud ou aos gatilhos globais.
Grupos de captura
Um CaptureGroup
permite capturar o conteúdo de uma expressão. Para fazer isso,
atribua o valor a um nome de variável entre chaves: por exemplo,
buckets/{path=**}/files/{filename=file-*.txt}
; Um caractere curinga de segmento único pode
omitir =*
em um grupo de captura; por exemplo, /projects/_/buckets/{bucket}/objects/file.*
Examples
Os exemplos a seguir demonstram como as permissões e restrições de uso da sintaxe.
Padrões válidos
Padrão | Descrição |
---|---|
/projects/_/buckets/bucket-1/objects/file1.txt |
Nome específico do recurso. |
/projects/_/buckets/bucket-1/objects/* |
Corresponde a qualquer arquivo no diretório objects . |
/projects/_/buckets/bucket-1/objects/*.txt |
Todos os arquivos TXT no diretório objects são correspondentes. |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Retorna todos os arquivos TXT com o prefixo file- no
diretório objects . |
/projects/_/**/file-*.txt |
Corresponde a qualquer arquivo TXT com o prefixo file- para todos os buckets. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Corresponde todos os arquivos TXT com o prefixo file- para qualquer bucket
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. Corresponde a qualquer bucket
com um arquivo chamado file de qualquer tipo. Os dois primeiros exemplos
também capturam o bucket, e o último captura o nome do arquivo.
|
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 pode conter apenas um * . |
/projects/_/buckets/bucket-1/objects/file-*.* |
A expressão pode conter apenas um * . |
/projects/**/buckets/** |
O caminho do recurso pode conter apenas um ** . |
/projects/_/buckets/{=*}/objects/file1.txt |
ID ausente 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 | Corresponde? |
---|---|---|
/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 |
A seguir
- Para ver uma lista dos eventos compatíveis com o Eventarc, consulte Tipos de evento compatíveis com o Eventarc.