연습 - Core Tools를 사용하여 로컬에서 함수 만들기

완료됨

Azure Functions Core Tools로 다음을 수행하여 사용자 컴퓨터에서 함수를 로컬로 개발할 수 있습니다.

  • 함수 프로젝트에 필요한 파일 및 폴더 만들기
  • 프로젝트의 루트 디렉터리에서 로컬로 실행되는 Functions 호스트 제공하기

간단한 관심을 계산하는 함수를 개발하여 Azure Functions를 사용하여 로컬로 작업을 시작하기로 결정합니다. 결국 함께 작동하고 다른 서비스 및 데이터베이스를 호출하는 더 복잡한 함수를 만들 수 있습니다. 핵심 도구를 사용하여 기본 대출 계산을 수행하는 함수를 빌드하는 것이 좋습니다. 또한 Azure에 게시하기 전에 사용자 컴퓨터에서 함수를 실행하려고 합니다. Core Tools를 사용하여 Azure Cloud Shell에서 이 모든 작업을 수행할 수 있습니다.

Azure Cloud Shell에는 Core Tools, Azure CLI 및 코드를 작성 하는 데 사용할 수 있는 편집기가 제공됩니다. 계속하기 전에 위의 샌드박스 활성화를 선택해야 합니다.

로컬 Azure Functions 프로젝트 만들기

이 연습에서는 Cloud Shell을 사용하여 Core Tools를 사용하여 첫 번째 JavaScript 함수를 개발합니다. Cloud Shell에는 이미 올바른 버전의 Core Tools와 Node.js 설치되어 있습니다.

  1. 루트 폴더에서 실행 func init 하여 새 loan-wizard 폴더에 함수 프로젝트를 만듭니다.

    func init loan-wizard
    
  2. 작업자 런타임을 선택하라는 메시지가 표시되면 노드에 대해 3입력합니다.

  3. 언어를 선택하라는 메시지가 표시되면 javascript에 대해 1입력합니다.

    출력에는 다음 파일을 포함하여 디스크에 기록되는 파일이 나열됩니다.

    • host.json 런타임 인스턴스와 특정 트리거 및 바인딩 형식 모두에 대한 앱 수준 구성을 지원합니다.
    • local.settings.json 로컬 전용 동작 및 애플리케이션 설정(로컬 환경 변수)을 설정합니다.
    • package.json은 사용자 코드 내에서 설치하고 사용하는 패키지를 추적하는 JavaScript 관련 파일입니다.
    • .gitignoreextensions.json 각각 Git 버전 제어 도구와 Visual Studio Code에서 사용하는 구성 파일입니다. 지금은 무시해도 됩니다.

HTTP 트리거 함수 만들기

이제 함수를 만들 차례입니다.

  1. Cloud Shell에서 새 loan-wizard 디렉터리로 이동합니다.

    cd ~/loan-wizard
    
  2. 함수 만들기 마법사를 시작하려면 실행 func new 합니다.

    func new
    
  3. 템플릿을 선택하라는 메시지가 표시되면 HTTP 트리거에 대해 7입력합니다.

  4. HTTP 트리거에 대한 함수 이름을 제공하라는 메시지가 표시되면 .를 입력합니다 simple-interest.

  5. 다음 명령을 실행하여 Cloud Shell 편집기를 엽니다.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    마법사는 기본 템플릿 콘텐츠가 있는 simple-interest.js 함수 프로젝트에 src/functions 새 파일을 만듭니다. 이 코드는 Azure Functions에 대한 Node.js v4 프로그래밍 모델을 지원합니다. 지금 잠시 편집기로 프로젝트 파일을 살펴보겠습니다. 스크린샷은 편집기에서 simple-interest.js 열려 있는 확장된 폴더를 보여줍니다.

simple-interest 함수 구현

Core Tools가 simple-interest.js 만든 기본 함수 구현은 쿼리 문자열 또는 인바운드 HTTP 요청의 본문에서 호출 name 된 입력을 찾고 문자열Hello, [name]을 반환합니다. HTTP 트리거를 사용하는 방법에 대한 좋은 설명이지만 해당 코드를 세 개의 입력 매개 변수에서 단순 관심을 계산하는 코드로 바꾸려고 합니다.

  1. 편집기 파일 창에서 src>함수 폴더를 확장하고 simple-interest.js 선택하여 편집기에서 파일을 엽니다.

  2. simple-interest.js 전체 내용을 다음 코드로 바꿉니다.

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    이 스크립트는 HTTP 요청의 쿼리 문자열에서 명명된 principalrateterm 매개 변수를 찾습니다. 그런 다음 간단한 이자 계산(principal * rate * term)의 결과를 반환합니다.

  3. Ctrl S를 눌러 파일을 저장하고 Ctrl++Q를 눌러 편집기를 닫습니다.

Cloud Shell에서 함수 실행

새 함수를 로컬로 실행하여 사용해 보려면 실행 중인 동안 명령줄을 사용할 수 있도록 백그라운드 프로세스에서 Functions 런타임(func.exe)을 시작하는 데 사용합니다func start. 그런 다음 명령줄 도구를 curl사용하여 함수와 상호 작용합니다.

자신의 컴퓨터에서 핵심 도구를 사용하는 경우 두 번째 터미널 창 또는 웹 브라우저에서만 사용할 curl 수 있습니다. Core Tools에서 생성된 출력은 첫 번째 터미널 창에 실시간으로 표시됩니다. Cloud Shell에서는 단일 터미널로 제한되므로 백그라운드 프로세스에서 핵심 도구(func.exe)를 실행해야 합니다.

  1. 다음 명령을 실행하여 백그라운드에서 함수 호스트를 자동으로 시작합니다.

    func start &> ~/output.txt &
    

    func new와 마찬가지로 Cloud Shell이 loan-wizard 디렉터리에 있어야 합니다.

    이제 Functions 호스트가 ~/output.txt 파일에 출력을 쓰고 있습니다. 명령줄이 실행되는 동안 계속 사용할 수 있습니다.

    ps 명령을 사용하여 func 프로세스가 실행 중인지 확인합니다.

  2. 출력 로그를 보려면 다음 명령을 입력합니다.

    code ~/output.txt
    

    출력에는 GET 및 POST HTTP 요청http://localhost:7071/api/simple-interest으로 목록을 Functions: simple-interest: 사용할 수 있는 메시지가 표시됩니다.

    참고 항목

    오류 메시지가 표시되면 Ctrl+C를 선택하여 호스트를 중지합니다. 코드 파일의 내용이 샘플과 동일한지 확인합니다.

    이 localhost URL은 웹에 게시되어 있지 않으며 Cloud Shell 세션에서 실행되는 도구에서만 액세스할 수 있습니다.

  3. Ctrl+Q를 선택하여 편집기를 닫습니다.

  4. 다음 명령을 실행하여 로컬로 실행 중인 함수에 HTTP GET 요청을 보냅니다.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    출력 Please supply principal, rate and term in the query string은 함수가 성공적으로 호출되었고 응답을 반환할 수 있음을 나타내지만 의도한 대로 호출하지는 않습니다. HTTP 요청의 일부로 매개 변수를 제공해야 합니다.

  5. 함수를 다시 호출합니다. 이번에는 각 쿼리 문자열 매개 변수에 대한 값을 제공합니다.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    이번에는 출력이 6300입니다. 함수가 예상대로 작동합니다.

  6. 출력 로그를 다시 보려면 다음 명령을 입력합니다.

    code ~/output.txt
    

    시작 로그 항목 후에 다음을 사용하여 함수 curl를 호출할 때마다 타임스탬프가 지정된 로그 항목 집합이 추가된 것을 볼 수 있습니다.

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Ctrl+Q를 선택하여 편집기를 닫습니다.