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

웹후크는 웹 서비스에서 문제가 발생할 때 이벤트 알림을 제공하는 간단한 HTTP 콜백입니다. Azure Logic Apps 및 Power Automate 웹후크를 트리거로 사용할 수 있습니다. 논리 앱 또는 흐름은 이 트리거를 수신하고 트리거가 실행될 때마다 작업을 수행합니다. 이 자습서에서는 OpenAPI 사양으로 정의된 사용자 지정 커넥터를 통해 웹후크를 트리거로 사용하는 방법을 보여 줍니다.

참고

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

필수 구성 요소

GitHub에서 인증 활성화

웹후크 요청을 Logic Apps 또는 Power Automate 보내는 웹 서비스 API는 일반적으로 일종의 인증을 사용하며 GitHub 예외는 아닙니다. GitHub 여러 유형의 인증을 지원합니다. 이 자습서에서는 GitHub 세분화된 개인용 액세스 토큰을 사용합니다.

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

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

  3. 왼쪽 메뉴에서 개발자 설정을 선택합니다.

  4. 개인용 액세스 토큰 아래에서 세분화된 토큰을 선택합니다.

  5. 새 토큰 생성 단추를 선택한 다음, 요청된 경우 암호를 확인합니다.

  6. 토큰 이름 및 토큰에 대한 설명을 입력합니다.

  7. 만료에서 토큰의 만료 날짜를 선택합니다.

  8. 리포지토리 액세스에서 리포지토리만 선택하고 액세스 권한을 부여할 리포지토리를 선택합니다.

  9. 사용 권한에서웹후크읽기 및 쓰기권한> 추가를 > 선택합니다.

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

  11. 새 토큰을 기록해 둡니다. 나중에 웹후크 커넥터를 트리거로 추가할 때 이 토큰을 사용해야 합니다.

    중요

    이 토큰에 다시 액세스할 수 없습니다. 자습서의 뒷부분에서 사용할 수 있도록 복사하여 어딘가에 붙여넣습니다.

OpenAPI 정의에서 웹후크 정의

Logic Apps 및 Power Automate에서 사용자 지정 커넥터의 일부로 웹후크를 구현합니다. 커넥터를 만들려면 웹후크의 모양을 정의하는 OpenAPI 정의를 제공해야 합니다. 이 자습서에서는 다운로드한 샘플 OpenAPI 정의를 GitHub 웹후크에 사용합니다.

트리거를 만들려고 하지만 작업할 OpenAPI 정의가 없는 경우 사용자 지정 커넥터 마법사의 트리거 UI 를 사용하여 웹후크 트리거를 정의합니다.

샘플 OpenAPI 정의에는 웹후크를 작동시키는 데 중요한 세 가지 부분이 포함되어 있습니다.

  • 웹후크 만들기
  • 웹 서비스 API에서 들어오는 후크 요청 정의(이 자습서 예제에서는 GitHub)
  • 웹후크 삭제

커넥터는 이 OpenAPI 정의를 사용하여 GitHub 리포지토리에 대한 웹후크를 만들고, 받고, 삭제하는 방법을 이해합니다.

웹후크 만들기

커넥터는 웹 서비스 API(이 예제에서는 GitHub REST API)를 사용하여 웹 서비스에 대한 적절한 웹후크 만들기 엔드포인트로 HTTP POST 요청을 전송하여 웹 서비스 쪽에서 웹후크를 만듭니다(/repos/{owner}/{repo}/hooksGitHub 경우).

커넥터를 사용하여 새 논리 앱 또는 흐름을 만들 때 커넥터는 커넥터의 OpenAPI 정의에 정의된 대로 웹 서비스의 웹후크 만들기 엔드포인트에 POST 요청을 보냅니다. 또한 논리 앱 또는 흐름 트리거를 수정하는 경우 POST 요청을 이 URL로 보냅니다. 다음 샘플 OpenAPI 경로 구성 post 에서 속성에는 GitHub REST API로 보낼 웹후크 만들기 요청의 스키마가 포함됩니다.

"/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에서 들어오는 후크 요청 정의

이전 샘플과 같이 사용자 지정 x-ms-notification-content 속성에서 들어오는 후크 요청(GitHub Logic Apps 또는 Power Automate 알림)의 모양을 정의합니다. 요청에는 요청의 전체 콘텐츠가 포함될 필요가 없으며 논리 앱 또는 흐름에서 사용하려는 부분만 포함할 필요가 없습니다.

웹후크 삭제

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 webhook being deleted",
                "required": true,
                "type": "string"
            }
        ]
    }
},

삭제 웹후크 호출에 대한 헤더는 포함되지 않습니다. 삭제 웹후크 호출은 커넥터와 동일한 연결을 사용합니다.

중요

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

OpenAPI 정의 가져오기

먼저 Logic AppsPower 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. https://make.powerautomate.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. 정의 페이지에서 새 트리거를 선택하고 트리거에 대한 설명을 입력합니다. 이 예에서는 리포지토리에 대한 끌어오기 요청을 수행할 때 발생하는 트리거를 만듭니다.

    새 트리거 일반 정보 필드의 스크린샷

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

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

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

    샘플에서 가져오기 옵션이 있는 정의 페이지의 스크린샷

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

    웹후크 트리거에 대한 요청 가져오기 대화 상자의 스크린샷

    매개 변수 값
    동사 "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 참조를 참조하십시오.

    웹후크 트리거에 대한 응답 가져오기 대화 상자의 스크린샷

    {
      "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 값을 수신해야 하는 매개 변수를 선택합니다. 이 매개 변수는 개체의 url 속성입니다 config .

    콜백 URL 매개 변수가 선택된 트리거 구성 영역의 스크린샷.

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

트리거로 웹후크 사용

모든 항목을 구성한 후 논리 앱 또는 흐름에서 사용자 지정 커넥터를 통해 웹후크를 사용합니다. 다음으로, GitHub 리포지토리에서 git 푸시를 받을 때마다 전자 메일을 보내는 흐름을 만듭니다.

  1. 페이지의 맨 위에 있는 [내 흐름]에서 https://make.powerautomate.com/[내 흐름]을 선택합니다.

  2. 백지상태에서 만들기를 선택합니다.

    수백 개의 커넥터 및 트리거 검색 옵션 스크린샷

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

    Power Automate 디자이너에서 사용자 지정 커넥터 트리거를 검색하는 스크린샷

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

  5. 이 사용자 지정 커넥터를 처음 사용했기 때문에 연결합니다. 연결 정보를 입력한 다음 만들기를 선택합니다.

    새 연결 정보 필드의 스크린샷

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

    트리거에 대한 리포지토리 소유자 및 이름 필드의 스크린샷

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

    중요

    계정에 권한이 있는 리포지토리를 사용합니다. 이 작업을 수행하는 가장 쉬운 방법은 고유한 리포지토리를 사용하는 것입니다.

  7. 새 단계>작업 추가를 선택합니다.

  8. V2(이메일 보내기) 작업을 검색하여 선택합니다.

  9. 동적 콘텐츠 대화 상자의 값을 사용하여 본문 필드와 다른 필드에 텍스트를 입력합니다. 값은 OpenAPI 파일의 WebhookPushResponse 개체에서 가져옵니다.

  10. 페이지 위쪽에서 흐름 이름을 지정하고 흐름 만들기를 선택합니다.

    흐름 이름 필드 및 흐름 만들기 단추의 스크린샷

확인 및 문제 해결

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

  • 웹후크 생성으로 인해 이미 하나 이상의 성공한 실행이 표시되어야 합니다. 이 실행은 웹후크가 GitHub 쪽에서 성공적으로 생성되었음을 나타냅니다.
  • 실행이 실패한 경우 실행 세부 정보를 검토하여 실패한 이유를 확인합니다. 실패가 404 Not Found 응답으로 인한 것이라면, GitHub 계정에 사용한 리포지토리에서 웹후크를 생성할 적절한 권한이 없을 가능성이 높습니다.

요약

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

다음 단계

피드백 제공

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