HTTP 이외 트리거 함수를 수동으로 실행

이 문서에서는 특별한 형식의 HTTP 요청을 통해 HTTP 이외 트리거 함수를 수동으로 실행하는 방법에 대해 설명합니다.

개발 및 문제 해결과 같은 일부 상황에서는 간접적으로 트리거되는 Azure 함수를 "주문형"으로 실행해야 할 수도 있습니다. 간접 트리거의 예로는 일정에 따른 함수 또는 이벤트의 결과로 실행되는 함수가 있습니다.

이 문서에 설명된 절차는 Azure Portal에서 기능의 코드 + 테스트 탭의 테스트/실행 기능을 사용하는 것과 동등합니다. Visual Studio Code를 사용하여 함수를 수동으로 실행할 수도 있습니다.

필수 조건

이 문서의 예제에서는 HTTP 테스트 도구를 사용합니다. 데이터를 안전하게 유지하는 도구를 선택해야 합니다. 자세한 내용은 HTTP 테스트 도구를 참조 하세요.

요청 위치 정의

HTTP가 아닌 트리거 함수를 실행하려면 Azure에 해당 함수를 실행하기 위한 요청을 보낼 방법이 필요합니다. 이 요청에 사용된 URL은 특정 형식을 사용합니다.

요청 위치를 정의합니다. 함수 이름 + 폴더 경로 + 호스트 이름

  • 호스트 이름: 함수 앱의 이름과 azurewebsites.net 또는 사용자 지정 도메인으로 구성된 함수 앱의 퍼블릭 위치입니다. 준비에 사용되는 배포 슬롯으로 작업할 때 호스트 이름 부분은 -<slotname>이 추가된 프로덕션 호스트 이름입니다. 이전 예에서 이름이 staging인 슬롯에 대한 URL은 myfunctiondemos-staging.azurewebsites.net입니다.
  • 폴더 경로: HTTP 요청을 통해 HTTP로 트리거되지 않는 함수에 액세스하려면 admin/functions 경로를 통해 요청을 보내야 합니다. /admin/ 경로 아래의 API는 권한 부여를 통해서만 액세스할 수 있습니다.
  • 함수 이름: 실행할 함수의 이름입니다.

함수 앱에서 관리자 엔드포인트에 요청할 때 다음 고려 사항이 적용됩니다.

  • /admin/ 경로 아래의 엔드포인트에 요청할 때 요청의 x-functions-key 헤더에 앱의 마스터 키를 제공해야 합니다.
  • 로컬로 실행하는 경우 권한 부여가 적용되지 않으며 함수의 마스터 키가 필요하지 않습니다. x-functions-key 헤더를 생략하고 직접 함수를 호출할 수 있습니다.
  • 배포 슬롯에서 함수 앱 엔드포인트에 액세스할 때 슬롯별 마스터 키와 함께 요청 URL에 슬롯별 호스트 이름을 사용해야 합니다.

마스터 키 가져오기

Azure Portal에서 또는 Azure CLI를 사용하여 마스터 키를 가져올 수 있습니다.

주의

함수 앱에서는 마스터 키를 통해 높은 권한이 부여되므로, 이 키를 제3자와 공유하거나 애플리케이션에 배포해서는 안 됩니다. HTTPS 엔드포인트에만 키를 전송해야 합니다.

  1. Azure Portal에서 함수 앱으로 이동한 다음 앱 키, _master 키를 차례로 선택합니다.

    복사할 마스터 키를 찾습니다.

  2. 키 편집 섹션에서 키 값을 클립보드로 복사하고 확인을 선택합니다.

    마스터 키를 클립보드에 복사합니다.

함수 호출

  1. Azure Portal에서 함수 앱 위로 이동하여 함수를 선택합니다.

  2. 코드 + 테스트를 선택한 다음 로그를 선택합니다. HTTP 테스트 도구에서 함수를 수동으로 실행할 때 여기에 기록된 함수의 메시지가 표시됩니다.

    로그의 메시지가 표시된 '코드 + 테스트' 페이지를 보여주는 스크린샷.

  3. HTTP 테스트 도구에서 요청 URL로 정의한 요청 위치를 사용하고, HTTP 요청 메서드가 POST인지 확인하고, 다음 두 요청 헤더를 포함합니다.

    x-functions-key 클립보드에서 붙여넣은 마스터 키 값입니다.
    Content-Type application/json
  4. POST 요청 페이로드/본문이 { "input": "<TRIGGER_INPUT>" }.인지 확인합니다. 제공하는 특정 <TRIGGER_INPUT>는 트리거 형식에 따라 다르지만 문자열, 숫자 또는 부울 값만 가능합니다. Azure Service Bus와 같이 JSON 페이로드를 사용하는 서비스의 경우 테스트 JSON 페이로드를 이스케이프하고 문자열로 직렬화해야 합니다.

    입력 데이터를 함수에 전달하지 않으려면 POST 요청의 본문으로 빈 사전 {}을 제공해야 합니다. 자세한 내용은 특정 비HTTP 트리거에 대한 참조 문서를 참조하세요.

  5. HTTP POST 요청을 보냅니다. 응답은 HTTP 202(수락됨) 응답이어야 합니다.

  6. 다음으로, Azure Portal에서 해당 함수로 돌아갑니다. 로그를 검토하면 수동 함수 호출에서 제공되는 메시지를 확인할 수 있습니다.

    로그를 살펴보고 마스터 키 테스트 결과를 확인

트리거로 전송된 데이터에 액세스하는 방법은 트리거 형식과 함수 언어에 따라 다릅니다. 자세한 내용은 특정 트리거에 대한 참조 예를 참조하세요.

다음 단계