다음을 통해 공유


Event Grid 사용

CycleCloud는 클러스터 및 노드 이벤트를Azure Event Grid 보낼 수 있습니다. Event Grid는 생산자(이 경우 CycleCloud)의 이벤트를 수락하고 하나 이상의 대상으로 라우팅합니다. 이 문서에서는 Azure Storage 큐를 대상으로 사용합니다.

먼저 Event Grid 빠른 시작에 설명된 대로 사용자 지정 Event Grid 토픽 및 구독을 만듭니다.

둘째, 위에서 만든 Event Grid 토픽에 게시하도록 CycleCloud를 구성합니다. 왼쪽 위에서 설정 기어 아이콘을 클릭한 다음 목록에서 CycleCloud 항목을 두 번 클릭합니다. 드롭다운에서 Event Grid 항목을 선택하고 저장을 클릭합니다.

Event Grid 항목 선택

셋째, 클러스터에 노드를 추가합니다. 그러면 이벤트와 Microsoft.CycleCloud.NodeAdded 이벤트라는 두 개의 이벤트가 Microsoft.CycleCloud.ClusterSizeIncreased 즉시 생성됩니다.

마지막으로 큐에서 이벤트를 처리하는 스크립트를 만듭니다. 이 경우 Python 3 SDK를 사용하게 됩니다.

get_messages.py 파일을 만듭니다.

from azure.storage.queue import QueueClient, TextBase64DecodePolicy
import json, sys, time

connect_str = sys.argv[1]
queue_name = sys.argv[2]

queue_client = QueueClient.from_connection_string(connect_str, queue_name, message_decode_policy=TextBase64DecodePolicy())

while True:
    messages = queue_client.receive_messages(timeout=60, visibility_timeout=5, messages_per_page=32)
    for msg_batch in messages.by_page():
        for msg in msg_batch:
            message_body = json.loads(msg.content)
            data = message_body["data"]

            print("%s %s %s" % (message_body["eventType"], data.get("status"), data.get("message")))
            queue_client.delete_message(msg.id, msg.pop_receipt)
    time.sleep(1)

그런 다음, 위에서 만든 큐에 대한 정보를 사용하여 이를 호출합니다.

python3 get_messages.py "DefaultEndpointsProtocol=https;AccountName=ACCOUNTNAME;AccountKey=ACCOUNTKEY;EndpointSuffix=core.windows.net" QUEUE_NAME

그러면 큐에서 이벤트를 끌어오고 해당 콘텐츠를 출력합니다. 이 프로세스는 수동으로 종료될 때까지 실행됩니다.

참고

이벤트에는 더 많은 속성이 있습니다. 자세한 내용은 이벤트 페이지를 참조하세요.