연습 - 입력 및 출력 바인딩 형식 검색

완료됨

이 연습에서는 HTTP 요청을 받을 때 실행되고 메시지를 반환하여 각 요청에 응답하는 함수를 만듭니다.

다음은 빌드할 대상에 대한 대략적인 설명입니다.

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

매개 변수req는 트리거 바인딩이고 매개 변수res는 출력 바인딩입니다. 이러한 매개변수를 “요청” 및 “응답”의 약어로 생각하면 도움이 될 수 있습니다.

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

매개 변수Request는 트리거 바인딩이고 매개 변수Response는 출력 바인딩입니다.

함수 앱 만들기

이 모듈 전체에서 사용할 수 있는 함수 앱을 만들어 보겠습니다. 함수 앱을 통해 함수를 논리 단위로 그룹화하여 더욱 쉽게 관리, 배포 및 리소스 공유할 수 있습니다.

  1. 샌드박스를 활성화하는 데 사용한 계정으로 Azure Portal에 로그인합니다.

  2. 리소스 메뉴 또는 페이지에서 리소스 만들기를 선택합니다. 리소스 만들기 창이 나타납니다.

  3. 리소스 만들기 메뉴에서 컴퓨팅을 선택하고 결과 목록에서 함수 앱을 선택합니다. 서비스 및 마켓플레이스 검색 창에서 함수 앱을 검색해야 할 수 있습니다.

  4. 만들기를 선택합니다. 함수 앱 만들기 창이 나타납니다.

  5. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정 설명
    프로젝트 세부 정보
    구독 컨시어지 구독 이 연습에 사용할 Azure 구독입니다.
    리소스 그룹 드롭다운 목록에서 [샌드박스 리소스 그룹 이름]을 선택합니다. 샌드박스의 리소스 그룹입니다.
    인스턴스 세부 정보
    함수 앱 이름 전역적으로 고유한 이름을 입력합니다. 해당 이름은 새로운 함수 앱을 식별합니다. 유효한 문자는 a-z, 0-9-입니다.
    코드 또는 컨테이너 이미지를 배포하려고 하나요? 코드 코드 파일 또는 Docker 컨테이너를 게시하는 옵션입니다.
    런타임 스택 드롭다운 목록에서 Node.js를 선택합니다. 이 모듈의 샘플 코드는 JavaScript로 작성되어 있습니다.
    버전 기본값 적용 이 연습에서는 기본값이면 충분합니다.
    지역 드롭다운 목록에서 위치를 선택합니다. 가장 가까운 지역을 선택합니다.
  6. 다른 모든 옵션에 대해 기본값을 적용합니다. 검토 + 만들기를 선택하여 설정의 유효성을 검사한 후 만들기를 선택하여 함수 앱을 프로비저닝하고 배포합니다.

  7. 배포에 다소 시간이 걸릴 수 있습니다. 계정 이름 옆에 있는 전역 컨트롤에서 알림 아이콘을 선택하고 배포 성공 메시지가 표시될 때까지 기다립니다.

  8. 함수 배포가 완료되면 리소스로 이동을 선택합니다. 함수 앱의 개요 창이 나타납니다.

  1. 샌드박스를 활성화하는 데 사용한 동일한 계정으로 Azure Portal에 로그인합니다.

  2. 리소스 메뉴 또는 페이지에서 리소스 만들기를 선택합니다. 리소스 만들기 창이 나타납니다.

  3. 리소스 만들기 메뉴에서 컴퓨팅을 선택한 후 함수 앱을 검색하여 선택합니다. 서비스 및 마켓플레이스 검색 창에서 함수 앱을 검색해야 할 수 있습니다.

  4. 만들기를 선택합니다. 함수 앱 만들기 창이 나타납니다.

  5. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정 설명
    프로젝트 세부 정보
    구독 컨시어지 구독 이 연습에 사용할 Azure 구독입니다.
    리소스 그룹 드롭다운 목록에서 [샌드박스 리소스 그룹 이름]을 선택합니다. 샌드박스의 리소스 그룹입니다.
    인스턴스 세부 정보
    함수 앱 이름 전역적으로 고유한 이름을 입력합니다. 해당 이름은 새로운 함수 앱을 식별합니다. 유효한 문자는 a-z, 0-9-입니다.
    코드 또는 컨테이너 이미지를 배포하려고 하나요? 코드 코드 파일 또는 Docker 컨테이너를 게시하는 옵션입니다.
    런타임 스택 드롭다운 목록에서 PowerShell Core를 선택합니다. 이 모듈의 샘플 코드는 PowerShell로 작성되어 있습니다.
    버전 기본값 적용 이 연습에서는 기본값이면 충분합니다.
    지역 드롭다운 목록에서 위치를 선택합니다. 가장 가까운 지역을 선택합니다.
  6. 다른 모든 옵션에 대해 기본값을 적용합니다. 검토 + 만들기를 선택하여 입력의 유효성을 검사한 후 만들기를 선택하여 함수 앱을 프로비저닝하고 배포합니다.

  7. 배포에 다소 시간이 걸릴 수 있습니다. 계정 이름 옆에 있는 전역 컨트롤에서 알림 아이콘을 선택하고 배포 성공 메시지가 표시될 때까지 기다립니다.

  8. 함수 배포가 완료되면 리소스로 이동을 선택합니다. 함수 앱의 개요 창이 나타납니다.

Azure Portal에서 함수 앱을 찾는 데 문제가 있는 경우 Azure Portal의 즐겨찾기에 함수 앱을 추가하는 방법을 알아보세요.

함수 만들기

함수 앱이 생겼으니, 이제 함수를 만들 차례입니다. 각 함수는 트리거에 의해 활성화됩니다. 이 모듈에서는 미리 정의된 템플릿을 사용하여 HTTP 트리거를 정의합니다.

  1. 개요 페이지의 함수 탭에서 Azure portal에서 만들기 버튼을 선택합니다.

  2. 함수 만들기 창이 나타납니다.

    Screenshot for the Create Function pane.

  3. 템플릿 선택 섹션에서 HTTP 트리거 템플릿을 선택합니다.

  4. 템플릿 세부 정보 섹션에서 다음 설정을 확인합니다.

    • 새 함수 텍스트 상자에서 기본 이름인 HttpTrigger1을 수락합니다. Azure는 사용자가 만드는 함수에 대해 고유한 이름을 자동으로 만듭니다. 다른 이름을 선택할 수 있지만 의미 있는 이름을 사용해야 합니다.

    • 권한 부여 수준 텍스트 상자에서 기본값인 함수를 수락합니다. 권한 부여 수준은 함수를 실행하기 위해 요청에 어떤 키가 있어야 하는지를 결정합니다. 함수 권한 부여 수준에는 함수별 키가 필요합니다. 키는 함수를 만들면 찾을 수 있습니다.

  5. 만들기를 실행합니다. 트리거 함수가 함수 앱에 전파되면 함수 앱함수 창이 나타나고 HttpTrigger1이 표시됩니다.

  6. 명령 모음에서 함수 URL 가져오기를 선택합니다. 함수 URL 가져오기 대화 상자가 나타납니다.

  7. 드롭다운 목록에서 기본값(함수 키)을 선택하고 URL 끝에 있는 ‘클립보드에 복사’ 아이콘을 선택한 후 확인을 선택하여 대화 상자를 닫습니다.

  8. 새 브라우저 탭의 주소 표시줄에 복사한 함수 URL을 붙여넣습니다. Enter 키를 눌러 브라우저에서 요청을 실행합니다. 함수 앱이 초기화됨에 따라 응답에 몇 분 정도 걸릴 수 있습니다. 시간 제한 오류가 표시되면 새로 고쳐 응답을 요청합니다.

    함수가 응답하면 브라우저에 다음 예제와 유사한 출력이 표시되어야 합니다.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. URL의 끝에 다음 쿼리 문자열 &name=Joe를 추가합니다. 결과 URL은 다음 예제와 유사합니다.

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Enter 키를 눌러 브라우저에서 요청을 실행합니다. 함수가 응답하면 브라우저에 다음 예제와 유사한 출력이 표시되어야 합니다.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    지금까지 이 연습에서 확인한 것처럼 함수를 만들 때는 트리거를 정의해야 합니다. 모든 함수에는 하나의 트리거가 있습니다. 이 예제에서는 HTTP 트리거를 사용하므로 함수가 HTTP 요청을 받아야 시작됩니다. 다음 스크린샷의 JavaScript에 표시된 템플릿의 기본 구현은 쿼리 문자열 또는 요청 본문에 있던 매개 변수 name의 값을 반환합니다. 쿼리 문자열이 제공되지 않은 경우, 함수는 호출하는 상대에게 이름값을 제공하도록 요청하는 메시지로 응답합니다.

    Illustration of default HTTP trigger, showing HTTP request and response binding parameters.

  11. Azure Portal의 함수 메뉴에서 코드 + 테스트를 선택합니다.

    함수에 대한 코드 + 테스트 창이 나타나고 index.js 파일의 콘텐츠가 표시됩니다. 함수의 기본 JavaScript 코드는 다음 예제와 유사합니다.

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: responseMessage
        };
    }
    
  12. 함수의 다른 파일인 function.json 구성 파일을 간단하게 살펴보겠습니다. 코드 블록 위의 파일 경로에 있는 드롭다운 목록에서 function.json을 선택하여 해당 파일에 액세스합니다. 구성 데이터는 다음 JSON 목록에 표시됩니다.

    {
        "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
            "get",
            "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
      ]
    }
    

    이 함수에는 httpTrigger 형식인 req라는 ‘트리거 바인딩’과 http 형식인 res라는 출력 바인딩이 있습니다.

함수의 이전 코드에서는 req 매개 변수를 통해 수신되는 HTTP 요청의 페이로드에 액세스하는 방법을 살펴봤습니다. 마찬가지로, res 매개 변수를 설정하여 HTTP 응답을 보냈습니다. 바인딩은 실제로 일부 어려운 작업을 자동으로 처리합니다.

이제 함수 앱이 있으므로 함수를 만들어 보겠습니다. 각 함수는 트리거에 의해 활성화됩니다. 이 모듈에서는 템플릿을 사용하여 HTTP 트리거를 만듭니다.

  1. 개요 페이지의 함수 탭에서 Azure portal에서 만들기 버튼을 선택합니다.

  2. 함수 만들기 창이 나타납니다.

  3. 템플릿 선택 섹션에서 HTTP 트리거 템플릿을 선택합니다.

  4. 템플릿 세부 정보 섹션에서 다음 설정을 확인합니다.

    • 새 함수 텍스트 상자에서 기본 이름인 HttpTrigger1을 수락합니다. 함수를 만들면 Azure에서 자동으로 고유한 이름을 제공합니다. 다른 이름을 선택할 수 있지만 의미 있는 이름을 사용해야 합니다.

    • 권한 부여 수준 텍스트 상자에서 기본값인 함수를 수락합니다. 권한 부여 수준은 함수를 실행하기 위해 요청에 어떤 키가 있어야 하는지를 결정합니다. 함수에는 함수별 키가 필요합니다.

      Screenshot for the Add Function pane.

  5. 만들기를 실행합니다. 함수에 대한 HttpTrigger1 창이 나타납니다.

  6. 명령 모음에서 함수 URL 가져오기를 선택합니다. 함수 URL 가져오기 대화 상자가 나타납니다.

  7. 드롭다운 목록에서 기본값(함수 키)을 선택하고 URL 끝에 있는 ‘클립보드에 복사’ 아이콘을 선택한 후 확인을 선택하여 대화 상자를 닫습니다.

  8. 새 브라우저 탭의 주소 표시줄에 복사한 함수 URL을 붙여넣습니다. Enter 키를 눌러 브라우저에서 요청을 실행합니다. 함수 앱이 초기화됨에 따라 응답에 몇 분 정도 걸릴 수 있습니다. 시간 제한 오류가 표시되면 새로 고쳐 응답을 요청합니다.

    함수가 응답하면 브라우저에 다음 예제와 유사한 출력이 표시되어야 합니다.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. URL의 끝에 쿼리 문자열 &name=Joe를 추가합니다. 결과 URL은 다음 예제와 유사합니다.

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Enter 키를 눌러 브라우저에서 요청을 실행합니다. 함수가 응답하면 브라우저에 다음 예제와 유사한 출력이 표시되어야 합니다.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    지금까지 이 연습에서 확인한 것처럼 함수를 만들 때는 트리거를 정의해야 합니다. 모든 함수에는 하나의 트리거가 있습니다. 이 예제에서는 HTTP 트리거를 사용하므로 함수가 HTTP 요청을 받아야 시작됩니다. 다음 스크린샷의 PowerShell에 표시된 템플릿의 기본 구현은 Push-OutputBinding cmdlet을 사용하여 쿼리 문자열 또는 요청 본문의 일부인 매개 변수 이름의 값으로 응답합니다. 문자열이 제공되지 않은 경우, 함수는 호출하는 모든 사용자에게 이름 값을 제공하도록 요청하는 메시지로 응답합니다.

    Code and Test pane for HTTP request showing response and respective binding parameters.

  11. 함수 메뉴에서 코드 + 테스트를 선택합니다. 함수에 대한 코드 + 테스트 창이 나타나고 run.ps1 파일의 콘텐츠가 표시됩니다.

    함수의 기본 PowerShell 코드는 다음 예제와 유사합니다.

    using namespace System.Net
    
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })
    
  12. 함수의 다른 파일인 function.json 구성 파일을 간단하게 살펴봅시다. 파일 경로의 드롭다운 목록에서 function.json을 선택하여 해당 파일에 액세스합니다. 구성 데이터는 다음 JSON 목록에 표시됩니다.

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "methods": [
            "get",
            "post"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        }
      ]
    }
    

    보이는 것처럼, 이 함수에는 httpTrigger 형식인 Request이라는 트리거 바인딩과 http 형식인 Response라는 출력 바인딩이 있습니다. 함수의 이전 코드에서는 Request 매개 변수를 통해 수신되는 HTTP 요청의 페이로드에 액세스하는 방법을 살펴봤습니다. 마찬가지로, Response 매개 변수를 설정하여 간단하게 HTTP 응답을 보냈습니다. 바인딩은 실제로 일부 어려운 작업을 자동으로 처리합니다.

바인딩 형식 살펴보기

  1. 함수 메뉴에서 통합을 선택합니다. 함수의 통합 창이 나타납니다.

    다음 이미지와 같이 트리거와 출력 바인딩을 이미 정의했습니다. 통합 보기는 화면의 너비와 높이에 가장 잘 맞게 조정됩니다. 화면이 충분히 넓은 경우 동일한 정보가 가로로 표시될 수 있습니다.

    Screenshot of vertical flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    또한 이상의 트리거는 추가할 수 없음을 확인할 수 있습니다. 함수에 대한 트리거를 변경하려면 트리거를 삭제하고 새 트리거를 만들어야 합니다. 그러나 입력출력 섹션을 사용하면 둘 이상의 바인딩을 추가할 수 있으므로 요청은 둘 이상의 입력 값을 수락하고 둘 이상의 출력 값을 반환할 수 있습니다.

  2. 입력 상자에서 입력 추가를 선택합니다. 입력 만들기 창이 나타납니다. 바인딩 형식의 드롭다운 목록을 선택하여 가능한 모든 입력 바인딩 형식 목록을 표시합니다.

    Screenshot of the Add input options.

    잠시 솔루션에서 각 입력 바인딩을 사용하는 방법을 살펴보겠습니다.

    이 모듈의 뒷부분에서 입력 바인딩을 추가하지만 지금은 취소를 선택하여 이 창을 해제합니다.

  3. 출력 상자에서 출력 추가를 선택합니다. 출력 만들기 창이 나타납니다. 바인딩 형식의 드롭다운 목록을 선택하여 가능한 모든 입력 바인딩 형식 목록을 표시합니다.

    Screenshot of the Add output options.

    보이는 것처럼, 여러 출력 바인딩 형식이 있습니다. 이 모듈의 뒷부분에서 출력 바인딩을 추가하지만 지금은 취소를 선택하여 이 창을 해제합니다.

  1. 함수 메뉴에서 통합을 선택합니다. 함수의 통합 창이 나타납니다.

    다음 이미지와 같이 트리거와 출력 바인딩을 이미 정의했습니다. 통합 보기는 화면의 너비와 높이에 가장 잘 맞게 조정됩니다. 화면이 충분히 넓지 않으면 동일한 정보가 세로로 표시될 수 있습니다.

    Screenshot of horizontal flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    또한 이상의 트리거는 추가할 수 없음을 확인할 수 있습니다. 함수에 대한 트리거를 변경하려면 트리거를 삭제하고 새 트리거를 만들어야 합니다. 그러나 입력출력 섹션을 사용하면 여러 바인딩을 추가할 수 있으므로 함수는 둘 이상의 입력 값을 수락하고 둘 이상의 출력 값을 반환할 수 있습니다.

  2. 입력 상자에서 입력 추가를 선택합니다. 입력 만들기 창이 나타납니다. 바인딩 형식의 드롭다운 목록을 선택하여 가능한 모든 입력 바인딩 형식 목록을 표시합니다.

    Screenshot of the Add input options.

    잠시 솔루션에서 각 입력 바인딩을 사용하는 방법을 살펴보겠습니다. 선택할 수 있는 여러 가능성이 있습니다.

    이 모듈의 뒷부분에서 입력 바인딩을 추가하지만 지금은 취소를 선택하여 이 창을 해제합니다.

  3. 출력 상자에서 출력 추가를 선택합니다. 출력 만들기 창이 나타납니다. 바인딩 형식의 드롭다운 목록을 선택하여 가능한 모든 입력 바인딩 형식 목록을 표시합니다.

    Screenshot of the Add output options.

    보이는 것처럼, 여러 출력 바인딩 형식이 있습니다. 이 모듈의 뒷부분에서 출력 바인딩을 추가하지만 지금은 취소를 선택하여 이 창을 해제합니다.

지금까지 함수 앱을 만들어 함수를 추가하는 방법을 배웠습니다. HTTP 요청이 수행되면 실행되는 간단한 함수의 작동을 살펴보았습니다. Azure Portal 및 함수에 사용할 수 있는 입력 및 출력 바인딩 형식도 살펴보았습니다. 다음 단원에서는 입력 바인딩을 사용해 데이터베이스의 텍스트를 읽어보겠습니다.