Azure Functions Pack을 사용해 보았습니다.

츠요시 우시 오 @ 기테 b 님이 SNS에서 소개하고 있던 트윗을 찾아 워트가 되었으니 시도해 보았습니다.

You can grab it on npm now: npm i -g azure-functions-pack@nextDocs here: htps // t. 코 / 포 Fhvfm 루 8 Will move to master later this week— How Chris Functions (@crandycodes) 2017년 10월 17일


npm 패키지를 다수 사용하고 있는 Function이라고 기동시에 그러한 파일을 읽어들이기 때문에, 기동에 시간이 걸린다. 이 도구를 사용하면 하나의 JS 파일로 팩할 수 있으므로 시작 시간을 단축 할 수있는 것 같습니다. Http 트리거 등으로 퍼포먼스를 좋게 하고 싶은 경우 어쩐지 사용할 수 있을 것 같다.

준비



npm 패키지 설치


$ npm install -g azure-functions-core-tools
$ npm install -g azure-functions-pack

샘플 코드



Github에 두었습니다.
$ git clone [email protected]:satoryu/azure-funcpack-sample.git

Blob 트리거로 CSV 파일을 구문 분석하는 간단한 기능입니다.
CSV를 처리하기 위해 csv에 의존합니다.

운동에 현지에서 움직이면 이런 느낌. Blob에 업로드한 CSV 파일을 그대로 표시시키고 있을 뿐.
[10/17/17 4:41:23 PM] Found the following functions:
[10/17/17 4:41:23 PM] Host.Functions.ImportCSVfile
[10/17/17 4:41:23 PM]
[10/17/17 4:41:23 PM] Job host started
[10/17/17 4:41:26 PM] Host lock lease acquired by instance ID '000000000000000000000000FB88AAF3'.
[10/17/17 4:43:58 PM] Function started (Id=d2379990-ae49-4e79-92f2-a0068ae1ac25)
[10/17/17 4:43:58 PM] Executing 'Functions.ImportCSVfile' (Reason='New blob detected: uploaded/sample.csv', Id=d2379990-ae49-4e79-92f2-a0068ae1ac25)
[10/17/17 4:43:58 PM] [ [ 'Name', ' Address' ],
[10/17/17 4:43:58 PM]   [ 'Taro Rakuten', ' [email protected]' ],
[10/17/17 4:43:58 PM]   [ 'Hanako Rakuten', ' [email protected]' ] ]
[10/17/17 4:43:58 PM] Function completed (Success, Id=d2379990-ae49-4e79-92f2-a0068ae1ac25, Duration=357ms)
[10/17/17 4:43:58 PM] Executed 'Functions.ImportCSVfile' (Succeeded, Id=d2379990-ae49-4e79-92f2-a0068ae1ac25)

배포



배포 방법에는 두 가지가 있습니다.
  • 미리 pack하고 func 명령으로 배포
  • git에서 배포

  • 1. pack 후 배포


    funcpack pack 부속 명령으로 Function을 pack 해보십시오. Function 디렉토리가 아닌 Function 앱의 루트로 실행합니다. 예를 들어, 위의 샘플 코드의 경우, git clone 한 리포지토리의 맨 위에 실행한다.
    $ funcpack pack ./
    info: Generating project files/metadata
    info: Webpacking project
    info: Complete!
    

    이것으로 끝.
    실행 후 .funcpack 디렉토리가 작성되었으므로, 그 안에 들어가 func 명령으로 배치한다.
    $ funcpack pack ./
    $ cd .funcpack/
    $ func azure functionapp publish ${your_function_app_name}
    

    2. git에서 배포



    git로 배포하는 경우 환경 변수를 설정하여 배포 중에 funcpack pack를 실행합니다.

    환경 변수



    git로 배포하는 경우 App Settings에서 아래 SCM_USE_FUNCPACK 환경 변수에 값을 1로 설정해야합니다.



    막상, 배포!



    다음과 같이 npm install를 실행 한 후 funcpack pack가 실행 중입니다.
    $ git push azure master
    Counting objects: 25, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (23/23), done.
    Writing objects: 100% (25/25), 17.38 KiB | 2.90 MiB/s, done.
    Total 25 (delta 2), reused 0 (delta 0)
    remote: Updating branch 'master'.
    remote: Updating submodules.
    remote: Preparing deployment for commit id 'e4e41e7d29'.
    remote: Generating deployment script.
    remote: Running deployment command...
    remote: Handling function App deployment.
    remote: Using funcpack to optimize cold start
    remote: Copying repository files to local storage
    remote: 10 File(s) copied
    remote: Restoring npm packages in "D:\local\Temp\8d51582848aa8df"
    remote: .....
    remote: [email protected] D:\local\Temp\8d51582848aa8df\ImportCSVfile
    remote: npm WARN [email protected] No repository field.
    remote: `-- [email protected]
    remote:   +-- [email protected]
    remote:   +-- [email protected]
    remote:   +-- [email protected]
    remote:   | `-- [email protected]
    remote:   `-- [email protected]
    remote:
    remote: info: Generating project files/metadata
    remote: info: Webpacking project
    remote: info: Complete!
    remote: KuduSync.NET from: 'D:\local\Temp\8d51582848aa8df' to: 'D:\home\site\wwwroot'
    remote: Copying file: '.gitignore'
    remote: Copying file: 'host.json'
    remote: Copying file: '.funcpack\index.js'
    remote: Copying file: '.funcpack\original.index.js'
    remote: Copying file: 'ImportCSVfile\function.json'
    remote: Copying file: 'ImportCSVfile\index.js'
    remote: Copying file: 'ImportCSVfile\package-lock.json'
    remote: Copying file: 'ImportCSVfile\package.json'
    remote: Copying file: 'ImportCSVfile\readme.md'
    remote: Copying file: 'ImportCSVfile\sample.dat'
    remote: Finished successfully.
    remote: Running post deployment command(s)...
    remote: Syncing 2 function triggers with payload size 288 bytes successful.
    remote: Deployment successful.
    



    Azure Function 로고는 이모티콘으로 표현할 수 있다고 합니다.
    < ⚡ >
    

    그럼 재미있는 Function 생활을!
    See you!

    참고


  • Azure/azure-functions-pack at dev
  • Azure/azure-functions-cli: Command line tool for Azure Function
  • 좋은 웹페이지 즐겨찾기