Serverless Framework on Azure 시도

잠시 시도해 Serverless Framework를 사용해 보았습니다.
  • Serverless Framework Azure - Quick Start

  • 설정 방법



    이것은 매우 간단합니다. node v6.5.0 이상이 들어 있다면 다음이므로 -. 아무 문제없이 설치할 수 있었다. (우리 Mac Book Pro)
    npm install -g serverless 
    npm install -g serverless-azure-functions
    

    이것으로 끝. 간단하다.

    function을 만들고 배포합니다.


    $ serverless create --template azure-nodejs --path my-service --name my-unique-name
    $ cd my-service
    $ npm install
    

    이것도 순서대로다. 템플릿이 되어 있으므로 배포하자.
    serverless deploy
    Serverless: Packaging service...
    Serverless: Excluding development dependencies...
    Serverless: Logging in to Azure
    Serverless: Open a browser to https://aka.ms/devicelogin and provide the following code (which is copied to your clipboard!) to complete the login process: GYS4UB337
    

    로그인의 코드를 요구할 수 있으므로, 브라우저에서 상기의 URL을 치고 코드를 넣으면, 배포된다.
    Serverless: Creating resource group: my-unique-name-rg
    Serverless: Creating function app: my-unique-name
    Serverless: Waiting for Kudu endpoint...
    Serverless: Parsing Azure Functions Bindings.json...
    Serverless: Building binding for function: hello event: httpTrigger
    Serverless: Building binding for function: hello event: http
    Serverless: Packaging function: hello
    Serverless: Syncing Triggers....Response statuscode: 200
    Serverless: Running Kudu command del package.json...
    Serverless: Uploading pacakge.json...
    Serverless: Running Kudu command npm install --production...
    Serverless: Successfully created Function App
    

    자원 그룹이 만들어지고, 거기에, functions 가 만들어져, 배치되고 있다.

    Service Principal을 사용한 배포



    Azure에 익숙한 사람이라면 왜 서비스 주체를 사용하지 않을 것이라고 생각할 것입니다. 물론 지원됩니다. 다음 환경 변수를 설정해 봅시다.
    export azureSubId='<subscriptionId>'
    export azureServicePrincipalTenantId='<tenantId>'
    export azureServicePrincipalClientId='<servicePrincipalName>'
    export azureServicePrincipalPassword='<password>'
    

    그런 다음 serverless.yaml 가 되었으므로 편집. 자신이 좋아하는 Functions 의 이름을 지정할 수 있다. 아무래도 바인딩스도 다소는 설정할 수 있는 것 같다. service 라고 써 있는 항목이, FunctionsApp 이름이 되어 있다. 즉, 이 안에 functions 를 많이 가질 수 있는 단위.
    
    # Welcome to Serverless!
    #
    # This file is the main config file for your service.
    # It's very minimal at this point and uses default values.
    # You can always add more config options for more control.
    # We've included some commented out config examples here.
    # Just uncomment any of them to get that config option.
    #
    # For full config options, check the docs:
    #    docs.serverless.com
    #
    # Happy Coding!
    
    service: my-unique-name
    
    # You can pin your service to only deploy with a specific Serverless version
    # Check out our docs for more details
    # frameworkVersion: "=X.X.X"
    
    provider:
      name: azure
      location: West US
    
    plugins:
      - serverless-azure-functions
    
    # you can add packaging information here
    #package:
    #  include:
    #    - include-me.js
    #    - include-me-dir/**
    #  exclude:
    #    - exclude-me.js
    #    - exclude-me-dir/**
    
    functions:
      hello:
        handler: handler.hello
        events:
          - http: true
            x-azure-settings:
              authLevel : anonymous
          - http: true
            x-azure-settings:
              direction: out
              name: res
    
    # The following are a few examples of other events you can configure:
    #
    # events:
    #   - queue: YourQueueName
    #     x-azure-settings:
    #       connection : StorageAppSettingName
    #   - blob:
    #     x-azure-settings:
    #       name: bindingName
    #       direction: in
    

    그건 그렇고, 여기에서 일찍 일어나지 마십시오. 하나 중대한 포인트가 있다. service 에 기존 FunctionsApp 이름을 지정하여 배포하지 마십시오.

    그것을, 내가 한 결과 w


    serverless deploy 는, 서비스 전체의 배포 (즉, FunctionsApp)의 배포이므로, 어떻게 기존이 있으면, 언제나 기존의 functions 를 삭제해 재작성하려고 한다. (게다가 실패하는 w)

    그러니까, 사용되고 있지 않다, Service 이름을 사용해, 배포하면, 무사히 배포된다.



    요약



    실제로 만져 보니 상당히 경쾌하게 배포할 수 있었다. 커맨드 라인이라는 것도 기쁘다. 다만, serverless/serverless-azure-functions (을)를 봐도, 커멘드의 서브 커멘드가 미실장인 것이 많다. 이것은 기여할 ​​수밖에 없을 것이다. 그러나 명령이 충실하면 실로 쾌적한 느낌이므로 조금 공헌하고 싶은 프로젝트이다.

    좋은 웹페이지 즐겨찾기