먼저 EventBridge의
콘텐츠 필터링에 대해 살펴보죠
구글 검색으로 이 문서를 찾아
살펴보는 것이 좋은데, 여기에서 이벤트브릿지의
이벤트를 필터링하는 방법을 알 수 있습니다
이벤트브릿지에서 이벤트 필터링은 매우 유용한데
그 이유는 여러분이 특정 규칙 안에서
모든 이벤트가 아닌 특정 이벤트에만
반응하고자 할 수 있기 때문입니다
가능한 필터링으로는 Prefix(접두사) 매칭
또는 Suffix(접미사) 매칭뿐 아니라
Anything-but(일치하는 것만 제외), Numeric(숫자) 매칭,
IP 주소 매칭, Exists 매칭,
Equals-ignore-case 매칭을 비롯해
Complex example 관련 매칭이 있습니다
어떻게 작동하는지 이해하기 위해
연습문제로 넘어가 보겠습니다
먼저 규칙을 생성하고 DemoS3Matching이라고 해두겠습니다
이 규칙을 살펴보면
이 규칙은 AWS 이벤트에 적용될 것이고
이벤트 유형은 S3인 Object Created 입니다
해당 이벤트는 이렇게 구성되어 있고
꽤 복잡한 이벤트입니다
보시는 것처럼 detail type은 Object Created로 되어있고
소스는 AWS S3로, 계정 번호를 비롯해
시간, 리전, 리소스, 세부사항 등이 있고
버킷의 이름, 키에 대한 부분과
소스 IP 주소도 있습니다
꽤 많은 내용이 있는데, 그럼 우리가
무엇을 할 수 있는지 보겠습니다
Creation method로는 Use pattern form을 사용하고
S3를 다시 명시해주어야 하므로
이렇게 S3 명시를 해주고
이벤트 유형으로는 마찬가지로 Object-Level API
아니, All Events를 선택해주면
여기서 필터링을 시작할 수 있습니다
여기 Object Created라는 특정 이벤트를 매칭한다 가정해 볼텐데
보시는 것처럼 여기 드롭다운에는
해당 이벤트가 보이지 않았죠
그러면 이벤트 패턴을 수정해주면 되는데
우리가 수정할 이벤트 패턴은
이러한 이벤트의 매칭을 빌드하는 데에
도움을 줄 것입니다
Edit pattern을 클릭해서 편집화면으로 들어가보면
여기서 JSON 양식으로 패턴을 편집할 수 있습니다
소스는 AWS S3이고
오브젝트 유형으로는 Object Created를 설정하기 위해
여기에 detail type를 Object Created로 해서 입력해 줍니다
이렇게 해두면 제 이벤트 패턴은
정확히 S3 소스와 일치할 것이고
세부 유형 또한 Object Created일 것입니다
이것이 매우 중요한 이유는
이것이 정확히 일치하기 때문이지만
필터링을 사용하면 그 이상이 가능합니다
예를 들어 특정 버킷을 원한다고 해보죠
그렇게 하려면 detail 부분을 살펴봐야 하는데
detail 밑으로 bucket이 있고
그 아래로는 name이 있습니다
이걸 다 복사해서 붙여넣은 뒤
적절한 syntax(신택스)가 갖춰지도록 합니다
되었습니다
이제 디테일을 매칭할 수 있는데
버킷 이름은 mybucket으로 하고
이것으로 충분합니다
하지만 예를 들어
mybucket뿐 아니라 mybucket으로 시작하는
모든 것을 찾도록
bucket의 프리픽스 매칭을 하고 싶다면
이렇게 새 라인을 넣어주고
Prefix matching에서 Insert를 선택합니다
하는 방법은, 여기 동일한 문서를 다시 보시면
이렇게 예제가 나와있는 것을
보실 수 있습니다
String을 name으로 바꾸고 프리픽스의 값을 mybucket으로 바꿉니다
이제 약간은 더 복잡한 조건이 생겼는데
이 조건에 의해
이름 앞에 mybucket이 붙은 버킷이
모두 찾아지는 것입니다
보다 많은 이벤트와 매칭이 가능해지므로
매우 유용하죠
접미사 매칭도 가능합니다
예를 들어 파일명을 살펴보았을 때
해당 이벤트에서는
Object key는 어디에 있을까요?
여기를 보시면
detail, object, key가 있습니다
이걸 복사하겠습니다
제가 쓰는 게 더 편할 것 같네요
object를 써넣고, 새로운 줄을 추가합니다
여기에 쉼표를 하나 넣어주어야 합니다
우리가 찾는 key는 아마도 key였던 것 같은데
그게 맞고, 이제 이것이 접미사가 되어야 하니
이렇게 만들어주기 위해
복사해서 붙여넣으면, 이렇게 suffix가 .png인 것이 되었습니다
이제 mybucket으로 시작하는
모든 버킷이 매칭될 것이고
.png로 끝나는 모든 키도 매칭될 겁니다
이쪽에 설명되어 있는 것들은
다 여기에 있습니다
Anything-but 매칭의 예시를 보시면
initializing을 제외한 모든 값을 매칭할 수 있고
Numeric 매칭으로는
숫자들의 값을 확인해서
0보다 큰지 5보다 작은지와 같은 것으로
매칭을 할 수 있습니다
이 모든 것들은
여기에 삽입할 수 있고
원하는대로 구성할 수 있습니다
다음은 IP 주소 매칭인데요
여기보시면 소스 IP 주소가 있는데
이것은 분명 매칭될텐데
이쪽의 detail ... sourceIPAddress와 동일하도록
이름이 제대로 되어있는지 한번 더 확인을 해줍니다
detail 아래로 소스 IP주소가 들어가도록
source-ip-addess를 입력해주면
cidr도 생겼습니다
Exists 매칭의 경우에는 본 응용프로그램에 필요할지도 모를
특정 키가 존재하도록 할 수 있는데
예를 들어 size가 항상 있어야 한다면
Exists 매칭을 이용하는 식으로
언제나 그곳에 존재하도록 할 수 있습니다
이것을 보여드리는 이유는
이벤트브릿지가 제공하는 기본 패턴 외에도
여러분이 이벤트 패턴을 구축하는 방법을
이해하는 것이 중요하기 때문이고
이렇듯 고급 필터링 기능이 포함되어 있음을
여러분이 알도록 하기 위함입니다
그리고 물론, 이 이벤트 패턴 덕에
설정된 조건에 맞는 이벤트만이
매칭되어 타겟으로 보내지게 됩니다
이번 강의는 여기까지입니다
유익하셨길 바라면서
다음 강의 때 뵙도록 하겠습니다