Azure Logic Apps 및 Power Automate에 대한 트리거로 웹후크 사용

웹후크는 이벤트 알림을 제공하는 데 사용하는 간단한 HTTP 콜백입니다. Azure Logic Apps 및 Power Automate를 모두 사용하면 웹후크를 트리거로 사용할 수 있습니다. 논리 앱 또는 흐름은 이 트리거를 수신하고 트리거가 실행될 때마다 작업을 수행합니다. 이 자습서는 웹후크를 트리거로 사용하는 방법을 보여줍니다.

참고

웹후크를 통해 알림을 보낼 수 있는 서비스의 예로 GitHub를 사용하지만 여기서 설명하는 기술은 웹후크를 사용하는 모든 서비스로 확장할 수 있습니다.

필수 구성 요소

OpenAPI 정의

웹후크는 Logic Apps 및 Power Automate에서 사용자 지정 커넥터의 일부로 구현되므로 웹후크의 셰이프를 정의하는 OpenAPI 정의를 제공해야 합니다. 트리거를 만들고 싶지만 OpenAPI 정의가 없는 경우 사용자 지정 커넥터 마법사의 트리거 UI를 사용하여 웹후크 트리거를 정의할 수 있습니다.

OpenAPI 정의에는 웹후크 작업을 수행하는 데 중요한 세 부분이 포함되어 있습니다.

  • 웹후크 만들기
  • API(이 경우 GitHub)에서 들어오는 후크 요청 정의
  • 웹후크 삭제

웹후크 만들기

웹후크는 /repos/{owner}/{repo}/hooks에 대한 HTTP POST를 통해 GitHub 쪽에 만들어집니다. 새 논리 앱 또는 흐름이 생성되면 OpenAPI 정의에 정의된 트리거를 사용하여 이 URL에 게시됩니다. 트리거가 수정되면 URL에 게시됩니다. 다음에서 post 속성에는 GitHub에 게시할 요청의 스키마가 포함되어 있습니다.

"/repos/{owner}/{repo}/hooks": {
    "x-ms-notification-content": {
    "description": "Details for Webhook",
    "schema": {
        "$ref": "#/definitions/WebhookPushResponse"
    }
    },
    "post": {
    "description": "Creates a Github webhook",
    "summary": "Triggers when a PUSH event occurs",
    "operationId": "webhook-trigger",
    "x-ms-trigger": "single",
    "parameters": [
        {
        "name": "owner",
        "in": "path",
        "description": "Name of the owner of targeted repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "repo",
        "in": "path",
        "description": "Name of the repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "Request body of webhook",
        "in": "body",
        "description": "This is the request body of the Webhook",
        "schema": {
            "$ref": "#/definitions/WebhookRequestBody"
        }
        }
    ],
    "responses": {
        "201": {
        "description": "Created",
        "schema": {
            "$ref": "#/definitions/WebhookCreationResponse"
        }
        }
    }
    }
},

중요

"x-ms-trigger": "single" 속성은 디자이너에서 사용할 수 있는 트리거의 목록에 이 웹후크를 표시하도록 Logic Apps 및 Power Automate에 지시하는 스키마 확장이므로 반드시 포함해야 합니다.

API에서 들어오는 후크 요청 정의

들어오는 후크 요청(GitHub에서 Logic Apps 또는 Power Automate로의 알림)의 셰이프는 이전 샘플과 같이 사용자 지정 x-ms-notification-content 속성에 정의됩니다. 논리 앱 또는 흐름에서 사용할 부분만 포함하며, 요청 내용 전체를 포함할 필요는 없습니다.

웹후크 삭제

OpenAPI 정의는 반드시 웹후크 삭제 방법에 대한 정의를 포함해야 합니다. Logic Apps 및 Power Automate는 트리거를 업데이트하는 경우와 논리 앱 또는 흐름을 삭제하는 경우 웹후크를 삭제하려고 시도합니다.

"/repos/{owner}/{repo}/hooks/{hook_Id}": {
    "delete": {
    "description": "Deletes a Github webhook",
    "operationId": "DeleteTrigger",
    "parameters": [
        {
        "name": "owner",
        "in": "path",
        "description": "Name of the owner of targeted repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "repo",
        "in": "path",
        "description": "Name of the repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "hook_Id",
        "in": "path",
        "description": "ID of the Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

웹후크 삭제 호출에는 학습 헤더가 포함되지 않습니다. 커넥터에 사용된 동일한 연결이 웹후크 삭제 호출에도 사용됩니다.

중요

Logic Apps 또는 Power Automate에서 웹후크를 삭제하려면 웹후크를 만들 때 API에서 Location HTTP 헤더를 201 응답에 포함해야 합니다. Location 헤더에는 HTTP DELETE와 함께 사용할 웹후크에 대한 경로가 있어야 합니다. 예를 들어 GitHub의 응답에 포함된 Location은 다음 형식을 따릅니다. https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>

GitHub에서 인증 활성화

웹후크 요청을 Logic Apps 또는 Power Automate에 보내는 API는 일반적으로 특정 형식의 인증을 사용하며, GitHub도 마찬가지입니다. GitHub는 여러 유형의 인증을 지원합니다. 이 자습서에서는 GitHub 개인 액세스 토큰을 사용합니다.

  1. GitHub로 이동하고, 아직 로그인하지 않은 경우 로그인합니다.

  2. 오른쪽 위에서 프로필 사진을 선택한 다음 메뉴에서 설정을 선택합니다.

    설정

  3. 왼쪽 메뉴의 개발자 설정을 선택한 다음 개인 액세스 토큰을 선택합니다.

  4. 새로운 토큰 생성 단추를 선택한 다음 요청이 있을 경우 암호를 확인합니다.

    새 토큰 생성

  5. 토큰 설명 상자에서 설명을 입력합니다.

  6. admin:repo_hook 확인란을 선택합니다.

    admin:repo_hook

  7. 토큰 생성 단추를 선택합니다.

  8. 새 토큰을 기록해 둡니다.

    새 토큰

    중요

    이 토큰에는 다시 액세스할 수 없습니다. 따라서 이 자습서의 뒷부분에서 사용하려면 다른 곳에 복사하여 붙여넣어 둡니다.

OpenAPI 정의 가져오기

먼저 Logic Apps Power Automate용 OpenAPI 정의를 가져옵니다.

Logic Apps용 OpenAPI 정의 가져오기

  1. Azure Portal로 이동하여 Azure Logic Apps 사용자 지정 커넥터 만들기의 앞부분에서 만든 Logic Apps 커넥터를 엽니다.

  2. 커넥터 메뉴에서 Logic Apps 커넥터를 선택한 다음 편집을 선택합니다.

    Logic Apps 커넥터 편집

  3. 일반에서 OpenAPI 파일 업로드를 선택한 다음, 다운로드한 OpenAPI 파일로 이동합니다.

    OpenAPI 파일 업로드 옵션을 보여주는 스크린샷.

Power Automate용 OpenAPI 정의 가져오기

  1. flow.microsoft.com으로 이동합니다.

  2. 오른쪽 위에서 기어 아이콘을 선택한 다음, 사용자 지정 커넥터를 선택합니다.

    사용자 지정 커넥터

  3. 사용자 지정 커넥터 만들기, Postman 컬렉션 가져오기를 차례로 선택합니다.

    사용자 지정 커넥터 만들기

  4. 사용자 지정 커넥터의 이름을 입력한 다음, 다운로드한 OpenAPI 파일로 이동하고 연결을 선택합니다.

    이름 입력 필드를 보여주는 스크린샷.

    매개 변수
    사용자 지정 커넥터 제목 "GitHubDemo"

사용자 지정 커넥터 작성 완료

  1. 일반 페이지에서 계속을 선택합니다.

  2. 보안 페이지의 인증 유형 아래에서 기본 인증을 선택합니다.

  3. 기본 인증 섹션의 레이블 필드에서 사용자 이름암호를 입력합니다. 이는 트리거가 논리 앱 또는 흐름에서 사용될 때 표시되는 레이블일 뿐입니다.

    기본 인증

  4. 마법사 위쪽에서 이름이 "GitHubDemo"로 설정되어 있는지 확인한 다음, 커넥터 만들기를 선택합니다.

이제 논리 앱 또는 흐름에서 트리거를 사용할 준비가되었습니다. 또는 UI에서 트리거를 만드는 방법에 대해 읽을 수 있습니다.

UI에서 웹후크 트리거 만들기

이 섹션에서는 OpenAPI 정의에 트리거 정의 없이 UI에서 트리거를 생성하는 방법을 보여줍니다. 기준 OpenAPI 정의로 시작하거나 사용자 지정 커넥터 마법사에서 처음부터 시작합니다.

  1. 일반 페이지에서 설명 및 URL을 지정해야 합니다.

    매개 변수
    설명 "GitHub는 소셜 소스 코드 저장소입니다."
    URL "api.github.com"
  2. 보안 페이지에서 이전 섹션에서와 같이 기본 인증을 구성합니다.

  3. 정의 페이지에서 + 새 트리거를 선택하고 트리거에 대한 설명을 작성합니다. 이 예에서는 리포지토리에 대한 끌어오기 요청을 수행할 때 발생하는 트리거를 만듭니다.

    트리거-1 만들기

    매개 변수
    Summary(요약) "선택한 리포지토리에 풀 요청이 발생하면 트리거합니다."
    설명 "선택한 리포지토리에 풀 요청이 발생하면 트리거합니다."
    작업 ID "웹후크-PR-트리거"
    표시 "없음"(자세한 내용은 아래 참조)
    트리거 형식 "웹후크"

    논리 앱 또는 흐름의 작업 및 매개 변수의 표시 속성에는 다음과 같은 옵션이 있습니다.

    • 없음: 일반적으로 논리 앱 또는 흐름에 표시됩니다.
    • 고급: 추가 메뉴 아래에 숨겨져 있습니다.
    • 내부: 사용자에게 표시되지 않습니다.
    • 중요: 사용자에게 항상 먼저 표시됩니다.
  4. 요청 영역에는 작업에 대한 HTTP 요청을 기반으로 정보가 표시됩니다. 샘플에서 가져오기를 선택합니다.

    정의 페이지 - 샘플에서 가져오기

  5. 웹후크 트리거에 대한 요청을 정의한 다음, 가져오기를 선택합니다. 가져올 샘플을 제공합니다(이미지 아래). 자세한 내용은 GitHub API 참조를 참조하십시오. Logic Apps 및 Power Automate는 표준 content-type 및 보안 헤더를 자동으로 추가하므로 샘플에서 가져오는 동안 정의할 필요가 없습니다.

    트리거-2 만들기

    매개 변수
    동사 "POST"
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    본문 아래 참조
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. 응답 영역에는 작업에 대한 HTTP 응답을 기반으로 정보가 표시됩니다. 기본 응답 추가를 선택합니다.

    정의 페이지 - 응답

  7. 웹후크 트리거에 대한 응답을 정의한 다음, 가져오기를 선택합니다. 다시 가져올 샘플을 제공합니다. 자세한 내용은 GitHub API 참조를 참조하십시오.

    트리거-3 만들기

    {
      "action": "opened",
      "number": 1,
      "pull_request": {
        "html_url": "https://github.com/baxterthehacker/public-repo/pull/1",
        "state": "open",
        "locked": false,
        "title": "Update the README with new information",
        "user": {
          "login": "baxterthehacker",
          "type": "User"
        }
      }
    }
    
  8. 트리거 구성 영역에서 GitHub에서 콜백 URL 값을 수신해야 하는 매개 변수를 선택합니다. 이것은 config 개체에 있는 url 속성입니다.

    트리거-4 만들기

  9. 마법사 상단에서 이름을 입력한 다음 커넥터 만들기를 선택합니다.

트리거로 웹후크 사용

이제 모든 항목이 구성되었으므로 논리 앱 또는 흐름에서 웹후크를 사용할 수 있습니다. 다음으로, GitHub 리포지토리에서 git push를 받을 때마다 푸시 알림을 Power Automate 모바일 앱에 보내는 흐름을 만듭니다.

  1. flow.microsoft.com의 페이지 위쪽에서 내 흐름을 선택합니다.

  2. 새로 만들기를 선택하고 다음 페이지에서 다양한 커넥터 및 트리거 검색을 선택합니다.

    커넥터 검색

  3. Power Automate 디자이너에서 이전에 등록한 사용자 지정 커넥터를 검색합니다.

    새 트리거

    목록에서 트리거로 사용할 항목을 선택합니다.

  4. 이 사용자 지정 커넥터를 처음 사용했으므로 해당 커넥터에 연결해야 합니다. 연결 정보를 입력한 다음 만들기를 선택합니다.

    새 연결

    매개 변수
    연결 이름 설명하는 이름
    사용자 이름 GitHub 사용자 이름
    암호 앞에서 만든 개인 액세스 토큰
  5. 모니터링하려는 리포지토리에 대한 세부 정보를 입력합니다. OpenAPI 파일에 있는 WebhookRequestBody 개체의 필드를 인식할 수 있습니다.

    리포지토리 정보

    매개 변수
    담당자 모니터링할 리포지토리의 담당자
    리포지토리 모니터링할 리포지토리

    중요

    계정에 권한이 있는 리포지토리를 사용해야 합니다. 이렇게 하는 가장 쉬운 방법은 사용자 고유의 리포지토리를 사용하는 것입니다.

  6. + 새 단계를 선택한 다음 작업 추가를 선택합니다.

  7. 푸시 알림 작업을 검색하고 선택합니다.

    푸시 알림

  8. 텍스트 필드 및 기타 필드에 동적 내용 대화 상자의 값을 사용하여 일부 텍스트를 입력합니다. 이 값은 OpenAPI 파일의 WebhookPushResponse 개체에서 가져옵니다.

    푸시 알림 세부 정보

    매개 변수
    연결 이름 설명하는 이름
    사용자 이름 GitHub 사용자 이름
    암호 앞에서 만든 개인 액세스 토큰
  9. 페이지 위쪽에서 흐름 이름을 지정하고 흐름 만들기를 선택합니다.

    흐름 이름

확인 및 문제 해결

모든 항목이 올바르게 설정되었는지 확인하려면 내 흐름을 선택한 다음 새 흐름 옆의 정보 아이콘을 선택하여 실행 기록을 봅니다.

  • 이미 웹후크 만들기에서 하나 이상의 "성공" 실행이 표시되어야 합니다. 이는 웹후크가 GitHub 쪽에서 성공적으로 만들어졌음을 나타냅니다.

  • 실행이 실패한 경우 실행 세부 정보를 검토하면 실패한 이유를 확인할 수 있습니다. "404 찾을 수 없음" 응답으로 인해 실패한 경우 사용된 리포지토리에서 웹후크를 만들 수 있는 올바른 권한이 GitHub 계정에 없을 가능성이 있습니다.

요약

모든 항목이 올바르게 구성되면 이제 선택한 GitHub 리포지토리에서 git push가 발생할 때마다 Power Automate 모바일 앱에서 푸시 알림을 받게 됩니다. 위 프로세스를 사용하면 모든 웹후크 가능 서비스를 흐름의 트리거로 사용할 수 있습니다.

다음 단계

피드백 제공

커넥터 플랫폼 관련 문제 또는 새로운 기능 아이디어에 대한 피드백을 주셔서 정말 감사합니다. 피드백을 제공하려면 문제 제출 또는 커넥터 관련 도움말 보기로 이동하여 피드백 유형을 선택하십시오.