Cloud Functions API v1.0 가이드
Compute > Cloud Functions > API 가이드 > API v1.0 가이드
Cloud Functions API v1.0 공통 정보
API 엔드포인트
Cloud Functions API를 호출하기 위한 리전별 엔드포인트는 다음과 같습니다.
| 리전 |
엔드포인트 |
| 한국(판교) 리전 |
https://kr1-cloud-functions.api.nhncloudservice.com |
인증 및 권한
Cloud Functions는 API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다.
User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다.
User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 User Access Key 토큰을 참고하세요.
응답 공통 정보
모든 API 응답은 다음과 같은 공통 형식을 따릅니다.
성공 응답
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": {
...
}
}
실패 응답
{
"header": {
"isSuccessful": false,
"resultCode": -1,
"resultMessage": "Error message"
},
"data": null
}
| 이름 |
타입 |
설명 |
| header |
Object |
응답 헤더 |
| header.isSuccessful |
Boolean |
API 호출 성공 여부 |
| header.resultCode |
Integer |
결과 코드(성공: 0, 실패: -1) |
| header.resultMessage |
String |
결과 메시지 |
| data |
Object |
응답 데이터(API별 상이) |
환경 목록 조회
사용 가능한 런타임 환경 목록을 조회합니다.
요청
GET /v1.0/env/list
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": [
{
"id": 1,
"environment": "NodeJS",
"version": "22.5.0",
"entryPoint": "index.handler"
},
{
"id": 2,
"environment": "Python",
"version": "3.9",
"entryPoint": "main.handler"
}
]
}
| 이름 |
타입 |
설명 |
| data |
Array |
환경 목록 |
| data[].id |
Integer |
환경 ID |
| data[].environment |
String |
런타임 환경(예: NodeJS) |
| data[].version |
String |
런타임 버전(예: 22.5.0) |
| data[].entryPoint |
String |
기본 진입점 |
함수 목록 조회
함수 목록을 조회합니다.
요청
GET /v1.0/functions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| page |
Query |
Integer |
N |
현재 페이지(기본값: 0) |
| pageSize |
Query |
Integer |
N |
한 페이지에 노출될 개수 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": {
"totalCount": 2,
"functions": [
{
"name": "my-function",
"description": "샘플 함수",
"runtime": "NodeJS 22.5.0",
"executorType": "poolmgr",
"memory": 256,
"timeout": 60,
"buildStatus": "SUCCEEDED",
"createdAt": "1700000000",
"updatedAt": "2026-03-09T14:59:44Z"
}
]
}
}
| 이름 |
타입 |
설명 |
| data.totalCount |
Integer |
전체 함수 수 |
| data.functions |
Array |
함수 목록 |
| data.functions[].name |
String |
함수 이름 |
| data.functions[].description |
String |
함수 설명 |
| data.functions[].runtime |
String |
런타임(예: NodeJS 22.5.0) |
| data.functions[].executorType |
String |
실행 타입(poolmgr 또는 newdeploy) |
| data.functions[].memory |
Integer |
메모리(MB) |
| data.functions[].timeout |
Integer |
타임아웃(초) |
| data.functions[].buildStatus |
String |
빌드 상태(PENDING, RUNNING, SUCCEEDED, FAILED) |
| data.functions[].createdAt |
String |
생성 시간(epoch seconds) |
| data.functions[].updatedAt |
String |
수정 시간(ISO 8601, 예: 2026-03-09T14:59:44Z) |
함수 상세 조회
함수의 상세 정보와 빌드 로그를 함께 조회합니다.
요청
GET /v1.0/functions/{functionName}
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": {
"name": "my-function",
"description": "샘플 함수",
"runtime": "NodeJS 22.5.0",
"executorType": "poolmgr",
"memory": 256,
"timeout": 60,
"buildStatus": "SUCCEEDED",
"createdAt": "1700000000",
"updatedAt": "2026-03-09T14:59:44Z",
"entryPoint": "index.handler",
"requestPerPod": 1,
"minInstance": null,
"maxInstance": null,
"buildLog": "Build succeeded...",
"currentVersionName": "v1",
"sourceFileName": "source.zip",
"lncsAppkey": null
}
}
| 이름 |
타입 |
설명 |
| data.name |
String |
함수 이름 |
| data.description |
String |
함수 설명 |
| data.runtime |
String |
런타임(예: NodeJS 22.5.0) |
| data.executorType |
String |
실행 타입(poolmgr 또는 newdeploy) |
| data.memory |
Integer |
메모리(MB) |
| data.timeout |
Integer |
타임아웃(초) |
| data.buildStatus |
String |
빌드 상태(PENDING, RUNNING, SUCCEEDED, FAILED) |
| data.createdAt |
String |
생성 시간(epoch seconds) |
| data.updatedAt |
String |
수정 시간(ISO 8601, 예: 2026-03-09T14:59:44Z) |
| data.entryPoint |
String |
함수 진입점 |
| data.requestPerPod |
Integer |
Pod당 동시 요청 수 |
| data.minInstance |
Integer |
최소 인스턴스 수 |
| data.maxInstance |
Integer |
최대 인스턴스 수 |
| data.buildLog |
String |
빌드 로그 |
| data.currentVersionName |
String |
현재 버전 이름 |
| data.sourceFileName |
String |
소스 파일 이름 |
| data.lncsAppkey |
String |
LnCS 앱키 |
함수 생성
새 함수를 생성합니다. multipart/form-data로 소스 파일을 업로드합니다.
runtime은 {environment}-{version} 형식으로 입력해야 합니다(예: NodeJS-22.5.0). 사용 가능한 런타임은 환경 목록 조회 API로 확인할 수 있습니다.
executorType에 따라 필수 파라미터가 달라집니다. poolManager일 때는 requestPerPod가, newDeployment일 때는 minInstance와 maxInstance가 필수입니다.
요청
POST /v1.0/functions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
요청 본문
Content-Type: multipart/form-data
| 이름 |
타입 |
필수 |
설명 |
| name |
String |
Y |
함수 이름 |
| description |
String |
N |
함수 설명 |
| executorType |
String |
Y |
실행 타입(poolManager 또는 newDeployment) |
| runtime |
String |
Y |
런타임({environment}-{version} 형식, 예: NodeJS-22.5.0) |
| entryPoint |
String |
Y |
함수 진입점 |
| memory |
Integer |
Y |
메모리(MB). 기본 리소스 세트 값: 128, 256, 512, 1024, 2048, 4096. newDeployment의 경우 64~4096 범위의 커스텀 값도 사용 가능 |
| requestPerPod |
Integer |
Conditional |
Pod당 동시 요청 수(poolManager일 때 1~1000, 기본값: 1) |
| timeout |
Integer |
Y |
타임아웃(초, 1~900) |
| minInstance |
Integer |
Conditional |
최소 인스턴스 수(newDeployment일 때 필수, 1~100, maxInstance 이하) |
| maxInstance |
Integer |
Conditional |
최대 인스턴스 수(newDeployment일 때 필수, 1~100) |
| lncsAppkey |
String |
N |
LnCS 앱키 |
| sourceFile |
Binary |
Y |
소스 코드 파일(ZIP) |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully created the function."
},
"data": null
}
함수 수정
함수를 수정합니다. multipart/form-data로 소스 파일을 업로드할 수 있습니다.
소스 파일(sourceFile)은 선택 항목입니다. 소스 파일을 포함하지 않으면 기존 소스 코드가 유지됩니다.
요청
PUT /v1.0/functions/{functionName}
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
수정할 함수 이름 |
요청 본문
Content-Type: multipart/form-data
| 이름 |
타입 |
필수 |
설명 |
| description |
String |
N |
함수 설명 |
| executorType |
String |
Y |
실행 타입(poolManager 또는 newDeployment) |
| runtime |
String |
Y |
런타임({environment}-{version} 형식, 예: NodeJS-22.5.0) |
| entryPoint |
String |
Y |
함수 진입점 |
| memory |
Integer |
Y |
메모리(MB). 기본 리소스 세트 값: 128, 256, 512, 1024, 2048, 4096. newDeployment의 경우 64~4096 범위의 커스텀 값도 사용 가능 |
| requestPerPod |
Integer |
Conditional |
Pod당 동시 요청 수(poolManager일 때 1~1000) |
| timeout |
Integer |
Y |
타임아웃(초, 1~900) |
| minInstance |
Integer |
Conditional |
최소 인스턴스 수(newDeployment일 때 필수, 1~100, maxInstance 이하) |
| maxInstance |
Integer |
Conditional |
최대 인스턴스 수(newDeployment일 때 필수, 1~100) |
| lncsAppkey |
String |
N |
LnCS 앱키 |
| sourceFile |
Binary |
N |
소스 코드 파일(ZIP) |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully updated the function."
},
"data": null
}
함수 삭제
함수를 일괄 삭제합니다.
요청
DELETE /v1.0/functions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
요청 본문
예시 코드
{
"names": ["function-1", "function-2"]
}
| 이름 |
타입 |
필수 |
설명 |
| names |
Array |
Y |
삭제할 함수 이름 목록 |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully deleted the function."
},
"data": null
}
함수 실행(GET)
GET 방식으로 함수를 실행합니다.
요청
GET /v1.0/functions/{functionName}/invoke
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
실행할 함수 이름 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": "Hello, World!"
}
| 이름 |
타입 |
설명 |
| data |
String |
함수 실행 결과 |
함수 실행(POST)
POST 방식으로 함수를 실행합니다. body를 전달할 수 있습니다.
요청
POST /v1.0/functions/{functionName}/invoke
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
실행할 함수 이름 |
요청 본문
예시 코드
{
"key": "value"
}
| 이름 |
타입 |
필수 |
설명 |
| body |
JSON |
N |
함수에 전달할 body |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": "Function output"
}
| 이름 |
타입 |
설명 |
| data |
String |
함수 실행 결과 |
버전 목록 조회
함수의 버전(패키지) 목록을 조회합니다.
요청
GET /v1.0/functions/{functionName}/versions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": [
{
"versionId": 1,
"versionName": "v1",
"sourceFileName": "source.zip",
"buildStatus": "SUCCEEDED",
"createdAt": "2026-03-09T14:59:44Z",
"isCurrent": true
},
{
"versionId": 2,
"versionName": "v2",
"sourceFileName": "source-v2.zip",
"buildStatus": "SUCCEEDED",
"createdAt": "2026-03-10T18:45:00Z",
"isCurrent": false
}
]
}
| 이름 |
타입 |
설명 |
| data |
Array |
버전 목록 |
| data[].versionId |
Integer |
버전 ID |
| data[].versionName |
String |
버전 이름 |
| data[].sourceFileName |
String |
소스 파일 이름 |
| data[].buildStatus |
String |
빌드 상태(PENDING, RUNNING, SUCCEEDED, FAILED) |
| data[].createdAt |
String |
생성 시간(ISO 8601, 예: 2026-03-09T14:59:44Z) |
| data[].isCurrent |
Boolean |
현재 활성 버전 여부 |
버전 전환
함수의 현재 활성 버전을 변경합니다.
요청
PUT /v1.0/functions/{functionName}/versions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
예시 코드
{
"versionId": 12345
}
| 이름 |
타입 |
필수 |
설명 |
| versionId |
Integer |
Y |
전환할 버전 ID |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": null
}
버전 삭제
함수의 버전을 일괄 삭제합니다.
현재 활성 버전은 삭제할 수 없습니다.
요청
DELETE /v1.0/functions/{functionName}/versions
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
예시 코드
{
"versionIds": [123, 456]
}
| 이름 |
타입 |
필수 |
설명 |
| versionIds |
Array |
Y |
삭제할 버전 ID 목록 |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": null
}
트리거 목록 조회
함수의 트리거 목록을 조회합니다.
요청
GET /v1.0/triggers/{functionName}
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "success"
},
"data": [
{
"type": "http",
"name": "http-trigger-1",
"value": "https://example.com/trigger/path",
"isActivated": true
},
{
"type": "time",
"name": "time-trigger-1",
"value": "0 0 * * *",
"isActivated": true
}
]
}
| 이름 |
타입 |
설명 |
| data |
Array |
트리거 목록 |
| data[].type |
String |
트리거 타입(http, time, api-gateway) |
| data[].name |
String |
트리거 이름 |
| data[].value |
String |
트리거 값(URL 또는 cron 표현식) |
| data[].isActivated |
Boolean |
활성화 여부 |
타임 트리거 생성
함수에 타임 트리거를 생성합니다.
요청
POST /v1.0/triggers/{functionName}/time
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
예시 코드
{
"cron": "0 0 * * *"
}
| 이름 |
타입 |
필수 |
설명 |
| cron |
String |
Y |
cron 표현식 |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully created the trigger."
},
"data": null
}
타임 트리거 수정
타임 트리거의 cron 표현식을 수정합니다.
요청
PUT /v1.0/triggers/{functionName}/time
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
예시 코드
{
"name": "time-trigger-1",
"cron": "0 0 * * *"
}
| 이름 |
타입 |
필수 |
설명 |
| name |
String |
Y |
트리거 이름 |
| cron |
String |
Y |
cron 표현식 |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully modified the trigger."
},
"data": null
}
타임 트리거 삭제
타임 트리거를 일괄 삭제합니다.
요청
DELETE /v1.0/triggers/{functionName}/time
요청 파라미터
| 이름 |
구분 |
타입 |
필수 |
설명 |
| X-NHN-appkey |
Header |
String |
Y |
앱키 |
| X-NHN-authorization |
Header |
String |
Y |
사용자 토큰(Bearer {token}) |
| functionName |
URL |
String |
Y |
함수 이름 |
요청 본문
예시 코드
{
"names": ["time-trigger-1", "time-trigger-2"]
}
| 이름 |
타입 |
필수 |
설명 |
| names |
Array |
Y |
삭제할 트리거 이름 목록 |
응답
예시 코드
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Successfully deleted the trigger."
},
"data": null
}