--- title: "Serverless Framework" slug: "cloudfunctions-tool-serverlessframework" tags: ["Serverless Framework"] updated: 2026-08-20T09:03:25Z published: 2026-08-20T09:03:25Z canonical: "guide-gov.ncloud-docs.com/cloudfunctions-tool-serverlessframework" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Serverless Framework Classic 환경에서 이용 가능합니다 . [서버리스 프레임워크](https://www.serverless.com/framework/docs)는 다양한 Cloud Provider의 Function-as-a-Service와 연동하여 서버리스 애플리케이션을 개발, 배포, 테스트할 수 있는 오픈소스 웹 프레임워크입니다. 네이버클라우드 Cloud Functions는 서버리스 프레임워크 Provider를 지원하며 서버리스 프레임워크를 활용하여 Cloud Functions를 손쉽게 구성하고 관리할 수 있습니다. ## 주요 개념 서버리스 프레임워크에서 제공하는 주요 개념과 각 항목별 Cloud Functions와 연관 관계는 다음과 같습니다. 자세한 내용은 [Serverless Framework Concepts](https://www.serverless.com/framework/docs/providers/aws/guide/intro)에서 확인할 수 있습니다. ### Functions 서버리스 프레임워크의 Function은 Cloud Functions의 액션과 동일합니다. 배포에 있어서 제일 가장 기본적인 단위이며, 보통 하나의 액션은 하나의 작업을 수행합니다. ### Events 서버리스 프레임워크의 Event는 Function을 실행시키는 주체로서 Cloud Functions의 트리거와 동일합니다. ### Services 서버리스 프레임워크의 조직 단위 또는 프로젝트 단위입니다. serverless.yml 파일에 Functions, Events 등 서비스에 필요한 내용들을 작성합니다. ## 구성 요소 ### Functions 배포/관리할 액션 정보를 정의합니다. | 설정 | 설명 | 필수 여부 | 기본값 | 제약사항 | | --- | --- | --- | --- | --- | | handler | 액션의 main 함수가 정의된 파일 이름과 함수 이름. <파일이름>.<함수이름> | O | - | - | | runtime | 액션의 런타임 | O | - | nodejs, python만 제공 | | name | 액션 이름 | X | <서비스명>-<스테이지>- | - | | memory | 액션 메모리 | X | 256 (MB) | 128, 256, 512 | | timeout | 액션이 실행될 수 있는 최대 시간 | X | 60000 (ms) | MIN 500 MAX 300000 | - 예시 ``` # serverless.yml service: myService provider: name: navercloud region: gov functions: hello: handler: handler.main runtime: nodejs:16 name: myAction memory: 512 timeout: 60000 parameters: foo: bar plugins: - serverless-navercloud ``` ### Packages Cloud Functions는 액션을 관리하는 [패키지](/docs/cloudfunctions-package-classic) 리소스를 제공합니다. 패키지를 지정하지 않을 수 있고 정의한 패키지가 없을 경우, 자동으로 생성됩니다. ``` functions: hello: handler: handler.main packageName: myPackage ``` 명시적으로 패키지를 배포하고 액션에서 지정할 경우, `resource/packages`에 배포할 패키지를 정의해야 합니다. ``` functions: hello: handler: handler.main packageName: myPackage runtime: nodejs:16 name: myAction resources: packages: myPackage: parameters: hello: world ``` ### Events 배포/관리할 트리거 정보를 정의합니다. 배포 시, events 정보가 트리거 리소스로 변환됩니다. events가 지정된 액션의 플랫폼에 따라 트리거의 플랫폼이 결정됩니다. ``` functions: myAction: name: myAction handler: hadler.main events: - triggerName: myCronTrigger type: cron cronOptions: "*/5 * * * *" - triggerName: myBasicTrigger ... ``` #### Cron 트리거 ``` - triggerName: cronTrg type: cron cronOption: ``` #### Github 트리거 ``` - triggerName: gitTrg type: github username: accessToken: repository: ``` ## 사용법 서버리스 프레임워크 CLI를 이용하여 빌드, 배포 등 명령어를 실행하는 방법을 설명합니다. ### Package 서비스 구성을 클라우드 상에 배포하지 않고 파일로 패키징 합니다. 패키징 파일을 이용하여 형상 관리에 이용하거나 CI/CD 워크플로와 연동할 수 있습니다. Cloud Functions의 리소스 타입별로 3가지 파일이 생성됩니다. - functions.json (액션) - packages.json (패키지) - triggers.json (트리거) ``` $ serverless package --package <패키지 경로> ``` ### Deploy serverless.yml 파일 내용에 변경이 있을 경우, 변경 사항을 클라우드에 배포합니다. 기본적으로 `Package` 과정을 포함하며, `--package` 옵션을 이용하면 별도 빌드 없이 기존 생성된 패키지를 배포할 수 있습니다. ``` $ serverless deploy $ serverless deploy --package <패키지 경로> ``` ### Invoke 클라우드 상에 배포되어 있는 액션을 실행합니다. 실행 결과로 액션 코드 리턴 값을 출력하며 상세 실행 결과가 필요한 경우, `verbose` 옵션을 추가해야 합니다. 배포되지 않은 액션은 실행할 수 없습니다. ``` $ serverless invoke -f <액션 이름> $ serverless invoke -f <액션 이름> --verbose $ serverless invoke -f <액션 이름> --timeout <타임아웃(ms)> ``` ### Logs 액션의 실행 이력과 결과를 조회합니다. ``` $ serverless logs -f <액션 이름> $ serverless logs -f <액션 이름> --pageSize <페이지별 로그 수> --pageNo <페이지 번호> # start/end는 "yyyy-MM-ddTHH:mm:ss" 형태로 작성하며 리전의 표준 시간대를 기준으로 합니다. $ serverless logs -f <액션 이름> --start <조회 시작일시> --end <조회 종료일시> $ serverless logs -f <액션 이름> --tail ``` ## 튜토리얼 서버리스 프레임워크에서 Cloud Functions 액션, 트리거를 구성하는 방법을 소개합니다. 각 구성 요소의 자세한 설명은 [구성 요소](/docs/cloudfunctions-tool-serverlessframework#%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C)를 참고해 주십시오. ### 환경 구성 #### 서버리스 프레임워크 설치 - NPM을 이용하여 서버리스 프레임워크 패키지를 설치합니다. ``` npm install -g serverless@3 ``` 참고 - Serverless Framework v4 이상은 지원하지 않습니다. - --global 또는 -g 옵션이 반드시 포함되어야 합니다. - Node.js >= 16.0 이 필요합니다. #### Ncloud SDK Crendentials 등록 serverless-navercloud는 [ncloud-sdk](https://github.com/NaverCloudPlatform/ncloud-sdk-js)를 이용합니다. 환경 변수에 `NCLOUD_ACCESS_KEY`(또는 `NCLOUD_ACCESS_KEY_ID`)와 `NCLOUD_SECRET_KEY`(또는 `NCLOUD_SECRET_ACCESS_KEY`)가 등록되어 있어야 합니다. ``` $ export NCLOUD_ACCESS_KEY="네이버 클라우드 플랫폼 포털이나 Sub Account에서 발급받은 Access Key" $ export NCLOUD_SECRET_KEY="네이버 클라우드 플랫폼 포털이나 Sub Account에서 발급받은 Secret Key" ``` #### Service 생성 아래의 명령어를 통해서 sls-tutorial이라는 이름의 서비스 디렉토리를 생성합니다. ``` $ mkdir -p sls-tutorial $ cd sls-tutorial ``` 서비스 구성 파일인 `serverless.yml`을 생성합니다. `provider`와 `plugins`을 다음과 같이 설정해야 합니다. 참고 지원 region: gov ``` # serverless.yml service: sls-tutorial provider: name: navercloud region: gov functions: tuto1: handler: handler.tuto1 runtime: nodejs:16 memory: 256 timeout: 60000 tuto2: handler: handler.tuto2 runtime: nodejs:16 memory: 512 timeout: 300000 plugins: - serverless-navercloud ``` 네이버 클라우드 플랫폼의 Cloud Functions를 구성할 수 있도록 serverless-navercloud 플러그인을 설치합니다. ``` $ serverless plugin install -n serverless-navercloud ``` 서비스에서 참조할 액션 코드를 작성합니다. ``` // handler.js 'use strict'; function tuto1(params) { const name = params.name || 'World'; console.log('log', { payload: `Hello, ${name}` }); return { payload: `Hello, ${name}!` }; } function tuto2(params) { return { payload: 'hello world' }; } module.exports = { tuto1, tuto2 }; ``` ### 액션 배포 serverless.yml에 정의된 액션을 Cloud Functions에 배포합니다. functions의 events 속성이 정의된 경우, Cloud Functions의 트리거도 배포되며 액션과 연결됩니다. ``` $ serverless deploy ``` ### 액션 실행 클라우드 상에서 액션을 실행할 수 있습니다. ``` $ serverless invoke -f tuto1 ``` ### 액션 로그 확인 특정 액션의 실행 이력과 로그를 확인할 수 있습니다. ``` $ serverless logs -f tuto1 ``` ### 액션/트리거 구성 상세 예시 Cloud Functions에서 제공하는 다양한 타입들의 리소스를 serverless.yml에 등록하는 예시입니다. 참고 아래 serverless.yml 예제에서 하기의 항목들은 사용자의 리소스 정보로 대체되어야 합니다. - Github Trigger 외부 연결 주소 생성을 위한 productId, apiName, stageName - Github Trigger의 Github Access Information ``` service: sls-tutorial provider: name: navercloud region: gov functions: cAct1: handler: handler.classicActionFunc1 runtime: nodejs:16 memory: 128 timeout: 30000 events: # cron trigger on classic platform - triggerName: cCronTrg type: cron cronOption: "* * 1 * *" # github trigger on classic platform - triggerName: cGitTrg type: github username: "cloudfunctions@ncloud.com" accessToken: "*****" repository: "navercloud/cloudfunctions" events: - "*" productId: "2vnk18dvh2" apiName: "api" stageName: "v2" # sequence Action on classic platform cAct2: handler: handler.classicActionFunc2 runtime: nodejs:8 cSeqAct: sequence: - sls-tutorial-dev-cAct1 - sls-tutorial-dev-cAct2 plugins: - serverless-navercloud ``` ## 제약사항 - Serverless Framework v4 이상은 지원하지 않습니다. - 액션 외부 연결 생성 지원하지 않습니다. - Node.js, Python 런타임을 제공하며 추후 전체 런타임 지원 예정입니다. - 로컬 디버그 기능은 지원하지 않습니다.