Today Keys : logic apps, eventgrid, 이벤트, 그리드, 논리앱, azure, workflow, cloud, process, 프로세스
이번 포스팅은 Logic Apps과 Azure Event Grid를 이용해서, Azure Virtual Network에 대한 생성 혹은 수정 작업이 발생 할 때 해당 내역을 메일로 발송하는 예제입니다. 기존 포스팅(Azure Logic apps - Part 1)과 마찬가지로 별도의 코드 작성 없이 모든 환경 구성이 가능합니다!
요약 >>
Event Grid에 대한 Event sources는 Azure resource groups이 되고, 해당 Event 중에서 filtering을 하여,
Event handlers로 Logic Apps을 통해서 원하는 동작을 처리합니다.
Logic App에서 'Blank Log App'을 하나 생성합니다.
Logic App을 생성한 후, Logic Apps Designer를 선택합니다.
Trigger를 Azure에서 발생하는 Event를 이용하기 위해서 Azure Event Grid로 선택합니다. (When a resource event occurs 선택)
Event Grid를 사용하기 위해서 Azure Event Grid에 대한 Connection을 생성합니다.
Connection 생성을 위해서, 'Sign in'을 클릭해서 로그인을 합니다.
사용 할 계정을 선택합니다.
정상적으로 연결이 되고나면, Log Apps에 Event Grid에 대한 API Connection이 생성됩니다.
이제 Log Apps을 게시자의 이벤트에 등록합니다.
등록을 위해서 필요한 사항은 'Subscription', 'Resource type' , 'Resource Name' 입니다.
Subscription을 선택하면 로그인 한 테넌트 내에 속한 구독을 확인할 수 있습니다.
Resource Type을 선택하면, 이벤트 게시자의 Azure Resource를 고를 수 있습니다.
여기에서는 Resources.ResourceGroups을 선택했습니다.
이벤트 게시자의 Resource 이름을 선택합니다.
Resourece Type에 따라서 선택하는 항목이 다르며, 아래의 예시는 Resource Group에 대한 예시입니다.
여기서 3가지 동작에 대해서 선택합니다.
설정이 완료된 화면입니다.
이제 해당 이벤트에 따른 동작을 결정합니다.
Resource에 대한 모든 이벤트를 처리하지 않고, 특정 이벤트에 대한 이벤트를 처리하기 위해서
Condition으로 조건을 걸어서, 필요한 이벤트만 처리합니다.
trigger 작업의 결과 값에 있는 data 개체에 operationName을 확인하도록 설정합니다.
Virtual Network가 생성 및 수정 시에 발생하는
Microsoft.Network/virtualNeteworks/write
작업을 잡도록 설정합니다.
해당 조건이 맞는 경우에만 메일을 발송하도록 설정합니다.
메일 제목과 본문에는 해당 이벤트와 관련된 정보를 가지고 보낼 수 있도록 Dynamic content를 사용합니다.
설정이 완료된 logic-app입니다.
이제 Virtual Network를 생성해서, 정상적으로 메일이 오는지 확인합니다.
Virtual Network를 만들고 나면, 정상적으로 아래와 같이 메일이 온 것을 확인 할 수 있습니다.
실제 Virtual Network에 관련한 write 동작을 제외한 나머지 동작에서는 메일이 발송되지 않고,
Logic Apps의 실행에 대한 성공에 대한 count만 증가하는 것을 볼 수 있습니다.
실행된 Logic app의 상태를 다음과 같이 확인할 수 있습니다.
정상적인 조건에서 true로 match되어서, Send an email 동작까지 수행한 것을 볼 수 있습니다.
logic app run에 대한 상세 내용도 확인이 가능합니다.
아래의 결과 값에 대한 Link를 클릭해 보겠습니다.
조건으로 잡았었던 trigger에 대한 결과 값 내용을 볼 수 있습니다.
제일 하단에 보면, 'operation Name'에서 잡으려고 했던
Microsoft.Network/virtualNeteworks/write
임을 볼 수 있습니다.
Outputs의 각 항목을 확인해서 필요한 이벤트에 대해서 추가적인 filtering도 가능합니다.