다음을 통해 공유


Azure Functions의 HTTP 엔드포인트 사용자 지정

이 문서에서는 API 디자인에서 특정 작업을 처리하도록 HTTP 트리거를 사용자 지정하여 Azure Functions를 사용하여 확장성이 뛰어난 API를 빌드하는 방법을 알아봅니다. Azure Functions에는 기본 제공 HTTP 트리거 및 바인딩 컬렉션이 포함되어 있으므로 Node.js, C#등 다양한 언어로 엔드포인트를 쉽게 작성할 수 있습니다. 또한 Azure Functions 프록시와 통합하고 모의 API를 설정하여 API를 확장할 준비를 합니다. 이러한 작업은 Functions 서버리스 컴퓨팅 환경을 기반으로 수행되므로 리소스 크기 조정에 대해 걱정할 필요가 없습니다. 대신 API 논리에만 집중할 수 있습니다.

Important

Azure Functions 프록시는 Azure Functions 런타임 버전 1.x~3.x의 레거시 함수입니다. 함수 앱을 최신 런타임 버전으로 업그레이드할 수 있도록 버전 4.x에서 함수 프록시에 대한 지원을 다시 사용하도록 설정할 수 있습니다.11 가능한 한 빨리 함수 앱을 Azure API Management와 통합하도록 전환해야 합니다. API Management를 사용하면 Functions 기반 API를 정의, 보호, 관리 및 수익화하기 위한 보다 완전한 기능 집합을 활용할 수 있습니다. 자세한 내용은 API Management 통합을 참조하세요.

Functions 버전 4.x에서 프록시 지원을 다시 사용하도록 설정하는 방법을 알아보려면 Functions v4.x에서 프록시 다시 사용하도록 설정를 참조하세요.

필수 조건

  • 데이터를 안전하게 유지하는 HTTP 테스트 도구입니다. 자세한 내용은 HTTP 테스트 도구를 참조하세요.

이 문서에서는 Azure Portal에서 첫 번째 함수 만들기에서 만든 리소스를 시작점으로 사용합니다. 아직 수행하지 않은 경우 이제 다음 단계를 완료하여 함수 앱을 만듭니다.

이 함수 앱을 만든 후 이 문서의 절차를 따를 수 있습니다.

Azure에 로그인

Azure 계정을 사용하여 Azure Portal 에 로그인합니다.

HTTP 함수 사용자 지정

기본적으로 HTTP 메서드를 허용하도록 HTTP 트리거 함수를 구성합니다. 이 섹션에서는 /api/hello을 사용하는 GET 요청에만 응답하도록 함수를 수정합니다. 기본 URL https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>을 사용할 수 있습니다.

  1. Azure Portal에서 해당 함수로 이동합니다. 왼쪽 메뉴에서 통합을 선택한 다음 트리거HTTP (req)을 선택합니다.

    함수의 HTTP 트리거 설정을 편집하는 방법을 보여 주는 스크린샷

  2. 다음 테이블에 지정된 HTTP 트리거 설정을 사용하세요.

    필드 샘플 값 설명
    경로 템플릿 hello 이 함수를 호출하는 데 사용할 경로 결정
    권한 부여 수준 익명 선택 사항: 함수가 API 키 없이 액세스할 수 있게 됩니다
    선택한 HTTP 메서드 GET 선택한 HTTP 메서드만 이 함수를 호출하는 데 사용할 수 있도록 허용

    전역 설정은 경로 템플릿의 /api 기본 경로 접두사를 처리하므로 여기에서 설정할 필요가 없습니다.

  3. 저장을 선택합니다.

HTTP 함수 사용자 지정에 대한 자세한 내용은 Azure Functions HTTP 트리거 및 바인딩 개요를 참조하세요.

API 테스트

그런 다음 함수를 테스트하여 새 API 화면에서 어떻게 작동하는지 확인합니다.

  1. 함수 페이지의 왼쪽 메뉴에서 코드 + 테스트를 선택합니다.

  2. 상단 메뉴에서 함수 URL 가져오기를 선택하고 URL을 복사하세요. 함수가 이제 경로를 사용하는지 확인합니다 /api/hello .

  3. URL을 새 브라우저 탭 또는 선호하는 REST 클라이언트에 복사합니다. 브라우저는 기본적으로 GET을 사용합니다.

  4. URL의 쿼리 문자열에 매개 변수를 추가합니다. 예들 들어 /api/hello/?name=John입니다.

  5. Enter 키를 눌러 함수가 작동하는지 확인합니다. "Hello John"이라는 응답이 표시됩니다.

  6. 다른 HTTP 메서드를 사용하여 엔드포인트를 호출하여 함수가 실행되지 않는지 확인할 수도 있습니다. GET 이외의 HTTP 메서드의 경우 보안 HTTP 테스트 도구를 사용해야 합니다.

프록시 개요

다음 섹션에서는 프록시를 통해 API를 표시합니다. Azure Functions 프록시를 사용하면 요청을 다른 리소스로 전달할 수 있습니다. HTTP 트리거와 마찬가지로 HTTP 엔드포인트를 정의합니다. 그러나 엔드포인트를 호출할 때 실행할 코드를 작정하는 대신, 원격 구현에 대한 URL을 제공합니다. 이렇게 하면 여러 API 원본을 단일 API 화면으로 작성할 수 있으며, 이는 클라이언트가 더 쉽게 사용할 수 있으며, 마이크로 서비스로 API를 빌드하려는 경우에 유용합니다.

프록시는 다음과 같은 HTTP 리소스를 가리킬 수 있습니다.

Azure Functions 프록시에 대한 자세한 내용은 [레거시 프록시 작업]을 참조하세요.

참고 항목

Azure Functions 프록시는 Azure Functions 버전 1.x에서 3.x까지 사용할 수 있습니다.

첫 번째 프록시 만들기

이 섹션에서는 전체 API의 프런트 엔드 역할을 하는 새 프록시를 생성합니다.

프런트 엔드 환경 설정

함수 앱 만들기의 단계를 반복하여 프록시를 만드는 새 함수 앱을 만듭니다. 이 새 앱의 URL은 API의 프런트 엔드 역할을 하며, 이전에 편집한 함수 앱은 백 엔드 역할을 합니다.

  1. 포털의 새 프런트 엔드 함수 앱으로 이동합니다.

  2. 설정을 확장한 다음 환경 변수를 선택합니다.

  3. 키/값 쌍이 저장되는 앱 설정 탭을 선택합니다.

  4. + 추가를 선택하여 새 설정을 만듭니다. 이름에 대한 HELLO_HOST 입력하고 해당 값을 백 엔드 함수 앱의 호스트(예: .)로 <YourBackendApp>.azurewebsites.net설정합니다.

    이 값은 HTTP 함수를 테스트할 때 이전에 복사한 URL의 일부입니다. 나중에 구성에서 이 설정을 참조합니다.

    참고 항목

    호스트 구성에 대한 앱 설정을 사용하여 프록시에 대한 하드 코딩된 환경 종속성을 방지하는 것이 좋습니다. 앱 설정을 사용할 경우 환경 간에 프록시 구성을 이동할 수 있고 환경 관련 앱 설정이 적용됩니다.

  5. 적용을 선택하여 새 설정을 저장합니다. 앱 설정 탭에서 적용을 선택한 다음 확인을 선택하여 함수 앱을 다시 시작합니다.

프런트 엔드에 프록시 만들기

  1. 포털의 프런트 엔드 함수 앱으로 다시 이동합니다.

  2. 왼쪽 메뉴에서 함수를 확장하고 프록시를 선택한 다음 추가를 선택합니다.

  3. 새 프록시 페이지에서 다음 표의 설정을 사용한 다음 만들기를 선택합니다.

    필드 샘플 값 설명
    이름 HelloProxy 관리에 대해서만 사용되는 이름
    경로 템플릿 /api/remotehello 이 프록시를 호출하는 데 사용할 경로 결정
    백 엔드 URL https://%HELLO_HOST%/api/hello 요청을 프록시 처리할 엔드포인트를 지정합니다.

    새 프록시 페이지의 설정을 보여 주는 스크린샷.

    Azure Functions 프록시는 기본 경로 접두사를 제공하지 /api 않으므로 경로 템플릿에 포함해야 합니다. %HELLO_HOST% 구문은 이전에 생성한 앱 설정을 참조합니다. 확인된 URL은 원래 함수를 가리킵니다.

  4. 프록시 URL을 복사하고 브라우저 또는 자주 사용하는 HTTP 클라이언트에서 테스트하여 새 프록시를 시험해보세요.

    • 익명 함수의 경우 다음 https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"을 사용합니다.
    • 권한 부여가 있는 함수의 경우 다음 https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"을 사용합니다.

모의 API 만들기

다음으로 프록시를 사용하여 솔루션에 대한 모의 API를 만듭니다. 이 프록시를 사용하면 백 엔드를 완전히 구현할 필요 없이 클라이언트 개발이 진행될 수 있습니다. 나중에 개발에서 이 논리를 지원하는 새 함수 앱을 만들고 프록시를 해당 논리로 리디렉션할 수 있습니다.

  1. 이 모의 API를 만들려면 이번에는 App Service Editor를 사용하여 새 프록시를 만듭니다. 시작하려면 Azure Portal에서 함수 앱으로 이동합니다. 플랫폼 기능을 선택한 다음, 개발 도구에서 App Service 편집기를 선택합니다.

    App Service 편집기는 새 탭에서 열립니다.

  2. 왼쪽 창에서 proxies.json를 선택합니다. 이 파일은 모든 프록시에 대한 구성을 저장합니다. 함수 배포 방법 중 하나를 사용하는 경우 이 파일이 소스 제어에 유지됩니다. 이 파일에 대한 자세한 내용은 프록시 고급 구성을 참조하세요.

    proxies.json 파일은 다음과 같이 표시됩니다.

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. 모의 API를 추가합니다. proxies.json 파일을 다음 코드로 바꿉다.

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            },
            "GetUserByName" : {
                "matchCondition": {
                    "methods": [ "GET" ],
                    "route": "/api/users/{username}"
                },
                "responseOverrides": {
                    "response.statusCode": "200",
                    "response.headers.Content-Type" : "application/json",
                    "response.body": {
                        "name": "{username}",
                        "description": "Awesome developer and master of serverless APIs",
                        "skills": [
                            "Serverless",
                            "APIs",
                            "Azure",
                            "Cloud"
                        ]
                    }
                }
            }
        }
    }
    

    이 코드는 속성을 생략하는 새 프록시 GetUserByNamebackendUri 추가합니다. 다른 리소스를 호출하는 대신 응답 재정의를 사용하여 Azure Functions 프록시의 기본 응답을 수정합니다. 백 엔드 URL을 사용하여 요청 및 응답 재정의를 사용할 수도 있습니다. 이 기술은 헤더, 쿼리 매개 변수 등을 수정해야 할 수 있는 레거시 시스템으로 프록시할 때 유용합니다. 요청 및 응답 재정의에 대한 자세한 내용은 요청 및 응답 수정을 참조하세요.

  4. 브라우저 또는 즐겨찾는 REST 클라이언트를 사용하여 엔드포인트를 <YourProxyApp>.azurewebsites.net/api/users/{username} 호출하여 모의 API를 테스트합니다. {username}을(를) 사용자 이름을 나타내는 문자열 값으로 대체합니다.

이 문서에서는 Azure Functions를 사용하여 API를 빌드하고 사용자 지정하는 방법을 알아보았습니다. 모의 API를 비롯한 여러 API를 통합 API 표면으로 함께 가져오는 방법도 알아보았습니다. 이러한 기법을 사용하여 복잡성에 관계없이 Azure Functions에서 제공하는 서버리스 컴퓨팅 모델에서 실행되는 API를 빌드할 수 있습니다.

API 개발에 대한 자세한 내용은 다음을 수행합니다.