Check! Azure Functions 2.0(JavaScript)에서 binding extension이 설치되지 않은 오류 해결(잠정)

안녕하세요, @dz_ 것 대평 카즈미입니다.

Prologue - 소개



최근 Azure Function Runtime 2.0 (beta)의 JavaScript (Node.js)에서 로컬로 코드 작성하여 동작 확인 OK! 막상 Azure에 배포하면 움직이지 않는다…라고 고민하고 있었습니다.

라고 하는 것도, 하기의 갱신의 알림이 와 있었던 것을, 완전히 잊고 있었던 것이었습니다.



Azure Functions Runtime 2.0.12050-alpha의 주요 변경 사항


  • Azure Functions Runtime 2.0.12050-alpha breaking changes notice · Issue #129 · Azure/app-service-announcements

  • 그 변경점의 요약은 이쪽입니다.
  • Extension 업데이트
  • 로컬 환경에서 Core Tooles (2.x)를 업데이트하거나 func extensions install에서 개별적으로 설치
  • Azure에서 Extension 설치 (아래 참조)

  • 설정 파일 hosts.json 변경
  • "version": "2.0" 필요

  • secret 정보가 blob에 저장됩니다 (자동 마이그레이션)
  • 하나의 Function App 당 하나의 언어 고정
  • 지금까지는 복수의 프로그래밍 언어가 움직였지만, 단일하게.


  • @ Tsuyoshi Ushio @ Kiteu b 우시오씨가, 해당 기사를 일본어 번역해 주시고 있으므로, 참고가 된다고 생각합니다.
  • Azure Functions v2.0의 Breaking Change 지원 - Qiita

  • Extension 업데이트의 영향



    그런데 위의 변경 중, 비교와 다이렉트에 영향을 주는 것이 Extension의 변경이라고 생각합니다.

    예를 들어 Azure Sorage와 관련된 트리거 및 바인딩( blob, queue, table )을 사용하고 Azure에 배포하면 새 Extension이 설치되지 않은 경우 다음 오류가 발생합니다.
    Error:
    Function (xxx) Error: The binding type(s) 'queue' are not registered. Please ensure the type is correct and the binding extension is installed. 
    
    Error:
    Function (xxx) Error: The binding type(s) 'queueTrigger' are not registered. Please ensure the type is correct and the binding extension is installed. 
    

    Azure의 Function에 Extension을 설치하는 방법



    여기에 게시된 업데이트 절차에 따르면 kudu 콘솔을 사용하여 Extension을 설치(재빌드)하는 것 같습니다.
  • Updating your App (portal) · Azure/azure-functions-host Wiki

  • 하지만 제가 다시 작성한 검증 환경에서는 Node.js이기 때문인지, 이 순서에 있는 binextensions.csproj가 없었기 때문에 만전도 아닌 것 같습니다.

    여기서 시행착오의 결과, kudu 를 열지 않아도 할 수 있는 다른 방법을 발견했으므로 공유합니다. 그렇다고는 해도, 불규칙한 방법이므로, 향후는 적절한 업데이트 방법이 나오는 것은 아닐까 생각합니다.

    절차


  • Azure 포털에서 해당 Azure Function을 엽니 다.
  • 새로운 기능 만들기


  • Queue trigger 템플릿을 선택하십시오

  • Extension not Installed라는 메시지와 함께 Microsoft.Azure.WebJobs.Extensions.Storage를 설치하라는 메시지가 표시되므로 Install을 클릭합니다.

  • 설치가 끝나면 x (닫기) 버튼으로 블레이드를 닫을 수 있습니다.

  • 이제 위의 오류가 없어져 제대로 작동하게되었다고 생각합니다.

    덧붙여 Integrate 탭으로부터, queue등의 트리거, 바인딩을 추가하려고 해도 Extension의 인스톨을 촉구해 줍니다만, 실패하는 일도 있는 것 같기 때문에, 상기 순서가 지금까지 확실했습니다.

    Epilogue - 결론



    사실, 나는이 변경 사항을 깨닫지 못했고, 그냥 디버깅하고 위의 방법을 찾았습니다.

    Azure Functions에서 Node.js의 새 버전을 사용할 때 2.0 (beta)가 필수이므로 빠르고 안정 될 것으로 기대합니다!

    좋은 웹페이지 즐겨찾기