- 인쇄
- PDF
Action/Trigger 실행
- 인쇄
- PDF
생성한 액션이나 트리거를 실행할 수 있습니다. 만약 네이버 클라우드 플랫폼의 API Gateway를 이용 중인 경우 원격으로 실행이 가능하도록 외부 연결 주소를 생성할 수도 있습니다.
콘솔에서 실행
액션(트리거)을 네이버 클라우드 플랫폼 콘솔에서 실행하는 방법은 다음과 같습니다.
- Services > Compute > Cloud Functions 메뉴를 차례대로 클릭해 주십시오.
- Action(Trigger) 메뉴를 클릭해 주십시오.
- Packages/Actions(Trigger) 에서 실행할 액션을 클릭해 주십시오.
- 기본 정보 탭 메뉴를 클릭한 다음 [실행] 버튼을 클릭해 주십시오.
- 실행 팝업 창이 나타나면 필요한 정보를 설정해 주십시오.
- 이름: 실행할 액션(트리거) 이름 확인
- 런타임 파라미터: 액션(트리거) 실행 시점에 전달하여 액션(트리거) 실행 시 사용할 파라미터를 json 형식으로 작성. 런타임 파라미터는 액션(트리거)에 적용된 디폴트 파라미터나 패키지 파라미터보다 적용 우선순위가 높음
{ "name": "Ncloud_2", "place": "Cloud Function 2" }
- 결과만 보기: 실행 결과 요약 확인 여부를 클릭하여 선택(True: 최종 실행 결과만 요약하여 확인, False: 메타 데이터, 최종 실행 결과 등 전체 확인)
- [실행] 버튼을 클릭해 주십시오.
- 결과에서 실행 결과를 확인해 주십시오.
- 액션 실행 결과
- 트리거 실행 결과
- 액션 실행 결과
- 결과 코드를 복사하려면 [복사하기] 버튼을 클릭해 주십시오.
9.에서 실행 결과와 activationId
값만 확인되는 경우 나머지 상세 내용은 액션(트리거)의 모니터링 탭 메뉴에서 확인할 수 있습니다.
외부 연결 주소 생성
네이버 클라우드 플랫폼의 API Gateway를 이용하여 외부 연결 주소를 생성하면 액션(트리거)을 원격으로 실행할 수 있습니다. 단, 외부 연결 주소 생성은 액션과 Basic Trigger만 가능합니다.
- API Gateway 이용 신청 시 별도의 요금이 부과됩니다. API Gateway 소개와 요금제에 대한 설명은 네이버 클라우드 플랫폼 포털의 서비스 > Application Services > API Gateway 메뉴를 참고해 주십시오.
- 외부 연결 주소를 설정한 액션(트리거)을 삭제하면 연결된 API Gateway 리소스도 삭제되며, 해당 API Gateway Stage에 1개 이하의 리소스만 있을 경우 Stage도 삭제되기 때문에 삭제 시 주의해 주십시오.
외부 연결 주소를 생성하는 방법은 다음과 같습니다.
- Services > Compute > Cloud Functions 메뉴를 차례대로 클릭해 주십시오.
- Action(Triger) 메뉴를 클릭해 주십시오.
- Packages/Actions(Triggers) 에서 원격 실행이 가능하도록 설정할 액션(트리거)을 클릭해 주십시오.
- 기본 정보 탭 메뉴를 클릭한 다음 [외부 연결 주소 생성] 버튼을 클릭해 주십시오.
- 외부 연결 주소 생성 팝업 창이 나타나면 Product 선택에서 사용할 Product를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
- 새로운 Product를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
- API Gateway는 2가지 Zone을 지원
- 비공개(Private) : 금융 VPC 또는 SSL VPN을 통해서만 접근할 수 있습니다.
- 공개(Public) : 어디에서든 접근할 수 있습니다.
- API 선택에서 사용할 API를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
- 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
- Stage 선택에서 배포할 Stage를 클릭하여 선택해 주십시오.
- 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
- 인증에서 API 보안을 위한 IAM 인증 사용 여부를 클릭하여 선택해 주십시오.
- [완료] 버튼을 클릭해 주십시오.
- API Gateway에 대한 자세한 사용 방법은 API Gateway 사용 가이드를 참고해 주십시오.
- API Gateway를 이용한 액션(트리거) 연결에는 API Gateway에서 제공하는 IAM 인증을 통한 비공개 호출과 None을 통한 공개 호출 방식을 제공합니다. 비공개 호출이 필요한 경우 API Gateway 내 IAM 인증 방식을 적용할 수 있습니다. 자세한 설정 방법은 API Gateway 사용 가이드를 참고해 주십시오.
URL 구성
액션과 트리거는 호출할 수 있는 URL 정보를 포함하고 있습니다. 일반적인 액션과 트리거의 경우 POST 요청 형태를 지원합니다. 반면 웹 속성이 True인 웹 액션은 GET, POST, PUT, DELETE, OPTION 등 REST 요청 형태를 모두 지원하기 때문에 API Gateway를 통해 생성되는 URL에 Type을 명시할 수 있는 구간이 추가됩니다. type 값은 명시적으로 추가해야 합니다. URL 파라미터는 Type 뒤에 ?key=value
형태로 추가할 수 있습니다.
API Gateway를 이용하여 생성한 외부 연결 주소의 기본적인 형태와 구성에 대한 설명은 다음과 같습니다.
https://{product_id}.apigw.ntruss.com/{api_name}/{stage_name}/{resource_name}/{type+}
- product_id: API Gateway로 생성한 Product ID
- api_name: API Gateway로 생성한 API 이름
- stage_name: API Gateway로 생성하고 배포한 stage 이름
- resource_name: API Gateway로 생성한 resource 이름으로 리소스 덮어 씌우기로 인한 문제를 방지하기 위해 랜덤 생성
- type+: 웹 액션에 대한 외부 연결 주소인 경우 요청에 대한 응답을 구성하는 형태.
/json
,/http
,/svg
,/html
,/text
등을 지원 - 액션 쿼리 스트링
- blocking
- true: 동기 실행 요청. 액션 실행이 완료된 후에 HTTP 응답을 받을 수 있고 액션 실행 결과가 응답 Body 값으로 전달. 액션 실행이 1분을 초과하면 비동기 호출로 전환되어 바로 HTTP 응답 전달
- false: 비동기 실행 요청(기본값). 액션의 실행 성공/실패 여부와 관련없이 바로 HTTP 응답. 응답 Body에는 실행 결과 고유 ID(activationId) 값만 전달
- result
- true: 실행 결과 중 액션(트리거) 실행에 대한 최종 리턴값(response.result)만 HTTP 응답 Body로 전달
- false: 기본값. 전체 실행 결과를 HTTP 응답 Body로 전달
- blocking
트리거는 비동기 실행 요청만을 지원하며 응답 body에 실행 결과가 포함되지 않습니다.
터미널에서 실행
Curl을 이용하여 터미널에서 실행할 수 있습니다. 실행 시 result 값을 true로 설정한 경우 최종 실행 결과만 요약하여 보여 주며, false로 설정한 경우 최종 실행 결과를 포함하여 실행과 관련된 여러 메타 데이터를 함께 보여 줍니다.
액션/트리거
일반적인 앱션이나 트리거는 ActionURL과 json 형식으로 작성한 파라미터를 입력하여 실행할 수 있습니다. 이 경우 HTTP POST로만 실행이 가능합니다.
$curl -X POST -d "{전달할 파라미터}" -H "Content-Type: application/json" "{action_url}?blocking=true&result=true"
ActionURL 값이 "https://zzz"이고, 전달할 파라미터가 {"info":"qqq"}인 경우 예시는 다음과 같습니다.
$curl -X POST -d "{/"info/":/"qqq/"}" -H "Content-Type: application/json" -H "https://zzz?blocking=true&result=true"
웹 액션
웹 속성의 액션은 HTTP POST만 아니라 REST 형태로 제공하는 모든 형태의 요청 처리가 가능합니다.
$curl -X GET -d "{전달할 파라미터}" -H "Content-Type: application/json" "{action_url}{type+}?blocking=true&result=true"
ActionURL 값이 "https://zzz"이고, 전달할 파라미터가 {"info":"qqq"}인 경우 예시는 다음과 같습니다.
$curl -X GET -d "{/"info/":/"qqq/"}" -H "Content-Type: application/json" "https://zzz/http?blocking=true&result=true"
실행 결과
액션이나 트리거를 실행한 결과를 확인하고 관리할 수 있습니다.
모니터링
액션 및 트리거를 실행한 결과는 콘솔의 Dashboard나 실행한 액션이나 트리거의 모니터링 화면에서 확인할 수 있습니다.
Dashboard는 액션 실행 결과만 확인 가능합니다.
로그 설정
액션 실행에 대한 로그를 생성하도록 설정할 수 있습니다. 모든 액션 컨테이너는 stdout
이나 stderr
로 출력된 정보에 Timestamp 정보를 추가하여 logs
필드로 반환합니다. 로그를 생성하도록 설정하고 확인하는 Node.js와 Python 액션 예제 코드는 다음과 같습니다.
Node.js
로그 설정
function main(params) { var name = params.name || 'World'; var place = params.place || 'Naver'; var payload = 'Hello, ' + name + ' in ' + place + '!'; console.log(payload) console.error(payload) return {payload: payload}; }
결과 조회하여 로그 확인
{ ... "logs": [ "2018-02-01T06:50:26.134193098Z stdout: Hello, World in Naver!", "2018-02-01T06:50:26.134293524Z stderr: Hello, World in Naver!" ], ... }
Python
- 로그 설정
from __future__ import print_function import sys def main(args): name = args.get("name", "stranger") greeting = "Hello " + name + "!" print (greeting) print (greeting, file=sys.stderr) return {"greeting": greeting}
- 결과 조회하여 로그 확인
{ ... "logs": [ "2018-02-01T07:16:33.847246459Z stderr: Hello stranger!", "2018-02-01T07:16:33.847308738Z stdout: Hello stranger!" ], ... }
- 로그 설정
유사한 방식으로 다른 언어의 액션에서도 stdout
이나 stderr
로 메시지를 출력하여 로그를 생성하도록 설정할 수 있습니다.