Put Action

Prev Next

Cloud Functions 액션을 생성, 수정합니다.

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
PUT /packages/{packageName}/actions/{actionName}

Cloud Functions API에서 공통으로 사용하는 헤더에 대한 자세한 내용은 Cloud Functions 공통 헤더를 참조해 주십시오.

파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
packageName String Required 패키지 이름
  • 1~50자로 영문자, 숫자, 특수문자 '-', '_'을 허용하며 '-'로 시작 불가
  • 다른 리소스(패키지, 액션, 트리거) 이름과 중복 불가
  • 패키지에 속하지 않은 액션인 경우 특수문자 '-' 입력
actionName String Required 액션 이름
  • 1~50자로 영문자, 숫자, 특수문자 '-', '_'을 허용하며 '-'로 시작 불가
  • 다른 리소스(패키지, 액션, 트리거) 이름과 중복 불가

파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type String Optional 액션 유형
  • basic (기본값) | web | sequence | sequence-web
    • basic: 일반 액션
    • web: 웹 액션
    • sequence: 시퀀스 액션
    • sequence-web: 시퀀스 웹 액션
  • 다른 타입으로 변경 불가

요청 바디에 대한 설명은 다음과 같습니다.

Basic/Web 액션

파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
description String Optional 액션 설명(Byte)
  • 0~3,000
parameters Object Optional 액션의 기본 파라미터
  • {"key" : "value"} 형태의 JSON
  • 액션 실행 시 파라미터 적용 우선순위
    • 1순위: 실행 시점에 전달되는 런타임 파라미터
    • 2순위: 연결된 트리거의 기본 파라미터
    • 3순위: 액션의 기본 파라미터
    • 4순위: 포함된 패키지의 기본 파라미터
limits.timeout Integer Required 액션 실행 최대 시간(밀리초)
  • 500~300,000
  • 타임아웃 초과 시 액션 강제 종료
limits.memory Integer Required 액션 최대 메모리 크기(MB)
  • 128 | 256 | 512 | 1024
exec.kind String Required 액션 런타임
exec.imageUri String Conditional 사용자 이미지 경로
  • Custom Image 런타임만 해당
  • {registryName}/{imageName}:{tag} 형태
  • tag 입력되지 않은 경우 기본값은 latest
exec.binary Boolean Required 액션 코드 파일 바이너리 여부
  • true | false
    • true: exec.code에 액션 코드 파일의 Base64 인코딩된 값을 입력
    • false: exec.code에 액션 코드를 입력
exec.code String Required 액션 소스 코드
  • 소스 코드: 코드 내용을 그대로 입력
  • 파일 첨부: 액션 코드 파일 바이너리 데이터를 Base64 인코딩하여 입력
  • 코드를 직접 입력할 경우 이스케이프(escape) 처리 필요
  • Java 또는 .net 런타임은 파일 바이너리만 허용
  • Java는 압축된 *.jar 파일 형태로만 등록 가능
  • .net(dotnet)의 경우 *.zip 파일(압축 파일) 형태로만 업로드 가능
exec.main String Required 실행 함수
vpc Object[] Required 연결할 VPC 정보
  • VPC 플랫폼만 해당
vpc[].vpcNo Integer Required 연결할 VPC ID
vpc[].subnetNo Integer Required 연결할 Subnet ID
raw-http Boolean Optional HTTP 원문 사용 여부
  • 웹 액션 타입만 지원
custom-options Boolean Optional HTTP 헤더 옵션 설정
  • 웹 액션 타입만 지원

Sequence/Sequence-web 액션

파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
description String Optional 액션 설명(Byte)
  • 0~3,000
exec.kind String Required 액션 종류
  • sequence (고정 값)
exec.components String[] Required 시퀀스 액션에 연결할 액션 리스트
  • {packageName}/{actionName} 형태
  • 리스트 순서대로 실행
  • 패키지에 속하지 않은 액션을 연결하는 경우, packageName에 특수문자 '-' 입력

요청 예시는 다음과 같습니다.

curl -X PUT 'https://cloudfunctions.apigw.fin-ntruss.com/ncf/api/v2/packages/{packageName}/actions/{actionName}' \
--header 'Content-Type: application/json' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Sub Account Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}'
-d '<하단 참조>'
Curl
{
    "description" : "My action",
    "parameters": {
        "name": "Cloud Functions",
        "place": "NCloud"
    },
    "limits": {
        "timeout": 60000,
        "memory": 128
    },
    "exec": {
        "kind": "nodejs:16",
        "code": "function main(params) { \nlet name = params.name || \"World\";\nlet place = params.place || \"Naver\"; \n  return {payload:  \"abc\"};\n}",
        "binary": false,
        "main": "main"
    },
    "vpc": [
        {
            "vpcNo" : ******,
            "subnetNo" : *****
        }
    ]
}
JSON

응답 형식을 설명합니다.

응답 바디에 대한 설명은 다음과 같습니다.

공통 필드

필드 타입 설명
content.name String 액션 이름
content.resourceId String 액션의 리소스 ID
content.path String 액션 경로
content.description String -
content.type String -

Basic/Web 액션

필드 타입 설명
content.parameters Object 액션의 기본 파라미터
content.raw-http Boolean HTTP 원문 사용 여부
  • 웹 액션 타입만 지원
content.custom-options Boolean 헤더 옵션 설정
  • 웹 액션 타입만 지원
content.exec.binary Boolean 액션 코드의 파일 바이너리 여부
content.exec.code String 액션 소스 코드 또는 Base64-encoded 코드 파일 바이너리
content.exec.imageUri String 사용자 이미지 경로
  • 런타임이 Custom Image인 경우에만 노출됨
content.exec.kind String 액션 런타임
content.exec.main String 실행 함수
content.limits.memory Integer 액션 컨테이너에 할당되는 메모리 크기
content.limits.timeout Integer 액션이 실행될 수 있는 최대 시간
content.vpc Object[] -
content.vpc[].vpcNo Integer -
content.vpc[].subnetNo Integer -

Sequence/Web-sequence 액션

필드 타입 설명
content.exec.kind String 액션 종류
  • sequence (고정 값)
content.exec.components String[] 연결된 액션 리스트

응답 상태 코드에 대한 설명은 다음과 같습니다.

HTTP 상태 코드 코드 메시지 설명
400 80300 ACTION_INVALID_NAME 잘못된 액션 이름
400 80303 ACTION_INVALID_TYPE 잘못된 액션 타입
400 80304 ACTION_TYPE_MISMATCH 액션의 타입 변경 불가
400 80305 ACTION_BODY_INVALID_TYPE 잘못된 요청 바디 필드 타입
400 80306 ACTION_BODY_MISSING_FIELD 필수 요청 바디 필드 누락
400 80307 ACTION_BODY_INVALID_VALUE 잘못된 요청 바디 필드 값
403 80002 SUB_ACC_NO_PERMISSION 상세 권한 오류
409 80011 RESOURCE_NAME_CONFLICT 중복된 리소스 이름
422 80308 ACTION_COUNT_EXCEED 최대 액션 개수 초과
500 81311 ACTION_NAT_EXCEPTION 서브넷 조회 실패
500 81312 NAT_CREATE_FAIL 서브넷 연결 실패
500 81313 NAT_BEING_CREATED 서브넷 연결 중
500 81314 NAT_RETURN_FAIL 서브넷 연결 해지 중

응답 예시는 다음과 같습니다.

{
    "content": {
        "description": "My action",
        "exec": {
            "binary": false,
            "code": "function main(params) { \nlet name = params.name || \"World\";\nlet place = params.place || \"Naver\"; \n  return {payload:  \"abc\"};\n}",
            "kind": "nodejs:16",
            "main": "main"
        },
        "limits": {
            "memory": 128,
            "timeout": 60000
        },
        "name": "myaction",
        "parameters": {
            "name": "Cloud Functions",
            "place": "NCloud"
        },
        "path": "***QK06kFG8C/mypackage",
        "resourceId": "*****",
        "type": "basic",
        "vpc": [
            {
                "subnetNo": ******,
                "vpcNo": *****
            }
        ]
    }
}
JSON