Put Action

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

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

요청

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

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

요청 헤더

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

요청 경로 파라미터

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

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

요청 쿼리 파라미터

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

필드 타입 필수 여부 설명
platform String Optional 플랫폼 구분
  • vpc (기본값) | classic
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.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 '<하단 참조>'
{
    "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" : *****
        }
    ]
}

응답

응답 형식을 설명합니다.

응답 바디

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

공통 필드

필드 타입 설명
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 80102 PACKAGE_PLATFORM_MISMATCH 액션 상위 패키지의 플랫폼 변경 불가
400 80302 ACTION_PLATFORM_MISMATCH 액션의 플랫폼 변경 불가
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": *****
            }
        ]
    }
}