Eventarc에서는 필터링할 때 경로 패턴을 적용할 수 있습니다. 예를 들어 리소스 이름을 필터링할 수 있습니다. 리소스 이름은 슬래시로 구분된 리소스 자체의 ID와 상위 리소스의 ID로 구성된 식별자를 통해 계층적으로 구성됩니다(예: /projects/_/buckets/bucket-id/objects/object-id
). Eventarc에서 수행한 필터링은 이러한 식별자 값을 기준으로 패턴을 일치시킵니다. 자세한 내용은 리소스 이름을 참조하세요.
Eventarc의 경로 패턴 구문을 사용하면 이벤트와 일치하는 표현식을 정의할 수 있습니다. 이렇게 하면 만드는 Eventarc 트리거의 세부사항을 제어하고 특정 이벤트를 캡처하여 조치를 취할 수 있습니다. 예를 들어 특정 파일 변경과 같이 단일 이벤트에 적용되는 트리거를 만들거나 패턴 범위를 확장하고 더 광범위하게 적용되는 트리거를 만들 수 있습니다.
경로 패턴 적용
Eventarc 콘솔 페이지를 사용하거나 gcloud
명령어를 실행하면 트리거를 만들 때 경로 패턴을 적용하여 리소스를 필터링할 수 있습니다.
Console의 경로 패턴 텍스트 상자에 경로 패턴을 제공합니다. 자세한 내용은 Google Cloud Console을 통해 트리거 만들기를 참조하세요.
gcloud
를 사용할 때는 --event-filters="resourceName=VALUE"
플래그 대신 --event-filters-path-pattern="resourceName=VALUE"
플래그를 사용합니다. 예를 들면 다음과 같습니다.
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
자세한 내용은 Cloud Run 트리거 만들기 또는 Cloud Run for Anthos 트리거 만들기를 참조하세요.
경로 패턴 구문
경로 패턴 구문은 다음과 같이 정의됩니다.
패턴 | /? 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~@#$%&.,?:;+='[]()-] |
범례:
? |
0 또는 1 |
* |
0 이상 |
+ |
1 이상 |
| |
OR |
표현식
표현식은 다음 세그먼트 유형 중 하나일 수 있으며 비워 둘 수 없습니다.
*
로 정의된 단일 세그먼트Wildcard
는 패턴의 문자 0개 이상과 일치합니다.**
로 정의된MultiSegmentWildcard
는 패턴의 세그먼트 0개 이상과 일치합니다.NameSegment
는*
0개나 1개 및 다른 문자로 구성됩니다. 이 조합을 사용하면 프리픽스, 서픽스 또는 파일 확장자를 기준으로 필터링할 수 있습니다(예:file-*.txt
).
경로에는 다양한 단일 세그먼트 와일드 카드가 포함될 수 있지만 여러 세그먼트 와일드 카드 하나만 포함될 수 있습니다. 예를 들어 /projects/**/buckets/**
경로는 유효하지 않습니다.
리소스 리전성
리소스 이름에는 위치 식별자가 포함될 수 있습니다. 예를 들면 다음과 같습니다.
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
그러나 경로 패턴 일치는 리소스 리전성에 의해 제한됩니다. 예를 들어 Cloud 감사 로그 트리거의 경우 위치 와일드 카드는 Cloud 감사 로그 리전의 트리거나 전역 트리거만 일치합니다.
캡처 그룹
CaptureGroup
을 사용하면 표현식의 콘텐츠를 캡처할 수 있습니다. 이렇게 하려면 중괄호로 값을 변수 이름에 할당합니다(예: buckets/{path=**}/files/{filename=file-*.txt}
). 단일 세그먼트 와일드 카드는 캡처 그룹의 =*
를 생략할 수 있습니다(예: /projects/_/buckets/{bucket}/objects/file.*
).
Examples
다음 예시에서는 구문을 사용하는 방법과 사용할 수 없는 방법을 보여줍니다.
유효한 패턴
패턴 | 설명 |
---|---|
/projects/_/buckets/bucket-1/objects/file1.txt |
특정 리소스 이름 |
/projects/_/buckets/bucket-1/objects/* |
objects 디렉터리의 모든 파일과 일치합니다. |
/projects/_/buckets/bucket-1/objects/*.txt |
objects 디렉터리의 모든 TXT 파일과 일치합니다. |
/projects/_/buckets/bucket-1/objects/file-*.txt |
objects 디렉터리에서 file- 프리픽스가 있는 모든 TXT 파일과 일치합니다. |
/projects/_/**/file-*.txt |
모든 버킷의 file- 프리픽스가 있는 모든 TXT 파일과 일치합니다. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
bucket- 프리픽스가 있는 버킷의 file- 프리픽스가 있는 모든 TXT 파일과 일치합니다. |
/projects/_/buckets/{bucket}/objects/file.* /projects/_/buckets/{bucket=*}/objects/file.* /projects/_/buckets/*/objects/{filename=file.*}
|
동일한 필터의 3가지 표현. 모든 유형의 file 이라고 하는 파일이 있는 버킷과 일치합니다. 처음 두 예시는 버킷도 캡처하고 마지막 예시는 파일 이름을 캡처합니다.
|
잘못된 패턴
패턴 | 설명 |
---|---|
/projects/_/buckets/bucket-1/objects/ |
빈 표현식 |
/projects//buckets/bucket-1/objects/file1.txt |
빈 표현식 |
/projects/_/buckets/bucket**/objects/file1.txt |
표현식에는 * 하나만 포함될 수 있습니다. |
/projects/_/buckets/bucket-1/objects/file-*.* |
표현식에는 * 하나만 포함될 수 있습니다. |
/projects/**/buckets/** |
리소스 경로에는 ** 하나만 포함될 수 있습니다. |
/projects/_/buckets/{=*}/objects/file1.txt |
세그먼트에 ID 누락 |
/projects/_/buckets/{bucket=}/objects/file1.txt |
캡처 그룹 내의 빈 표현식 |
/projects/_/buckets/{bucket/objects/file1.txt |
캡처 그룹이 닫혀 있지 않습니다. |
패턴 일치
패턴 | 리소스 | 일치 여부 |
---|---|---|
/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 |
다음 단계
- Eventarc에서 지원하는 이벤트 목록은 Eventarc에서 지원하는 이벤트 유형을 참조하세요.