Action/Trigger 실행
    • PDF

    Action/Trigger 실행

    • PDF

    기사 요약

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

    생성한 액션이나 트리거를 실행할 수 있습니다. 만약 네이버 클라우드 플랫폼의 API Gateway를 이용 중인 경우 원격으로 실행이 가능하도록 외부 연결 주소를 생성할 수도 있습니다.

    콘솔에서 실행

    액션(트리거)을 네이버 클라우드 플랫폼 콘솔에서 실행하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 Region 메뉴에서 이용 중인 리전을 클릭하여 선택해 주십시오.
    2. Platform 메뉴에서 Classic을 클릭하여 선택해 주십시오.
    3. Services > Compute > Cloud Functions 메뉴를 차례대로 클릭해 주십시오.
    4. Action(Trigger) 메뉴를 클릭해 주십시오.
    5. Packages/Actions(Trigger) 에서 실행할 액션을 클릭해 주십시오.
    6. 기본 정보 탭 메뉴를 클릭한 다음 [실행] 버튼을 클릭해 주십시오.
    7. 실행 팝업 창이 나타나면 필요한 정보를 설정해 주십시오.
      • 이름: 실행할 액션(트리거) 이름 확인
      • 런타임 파라미터: 액션(트리거) 실행 시점에 전달하여 액션(트리거) 실행 시 사용할 파라미터를 json 형식으로 작성. 런타임 파라미터는 액션(트리거)에 적용된 디폴트 파라미터나 패키지 파라미터보다 적용 우선순위가 높음
        {
          "name": "Ncloud_2",
          "place": "Cloud Function 2"
        }
        
      • 결과만 보기: 실행 결과 요약 확인 여부를 클릭하여 선택(True: 최종 실행 결과만 요약하여 확인, False: 메타 데이터, 최종 실행 결과 등 전체 확인)
    8. [실행] 버튼을 클릭해 주십시오.
    9. 결과에서 실행 결과를 확인해 주십시오.
      • 액션 실행 결과
        cloudfunctions-action-vpc_01_ko
      • 트리거 실행 결과
        cloudfunctions-action-vpc_02_ko
    10. 결과 코드를 복사하려면 [복사하기] 버튼을 클릭해 주십시오.
    참고

    9.에서 실행 결과와 activationId 값만 확인되는 경우 나머지 상세 내용은 액션(트리거)의 모니터링 탭 메뉴에서 확인할 수 있습니다.

    외부 연결 주소 생성

    네이버 클라우드 플랫폼의 API Gateway를 이용하여 외부 연결 주소를 생성하면 액션(트리거)을 원격으로 실행할 수 있습니다. 단, 외부 연결 주소 생성은 액션과 Basic Trigger, GitHub Trigger만 가능합니다.

    주의
    • API Gateway 이용 신청 시 별도의 요금이 부과됩니다. API Gateway 소개와 요금제에 대한 설명은 네이버 클라우드 플랫폼 포털의 서비스 > Application Services > API Gateway 메뉴를 참조해 주십시오.
    • 외부 연결 주소를 설정한 액션(트리거)을 삭제하면 연결된 API Gateway 리소스도 삭제되며, 해당 API Gateway Stage에 1개 이하의 리소스만 있을 경우 Stage도 삭제되기 때문에 삭제 시 주의해 주십시오.

    외부 연결 주소를 생성하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 Region 메뉴에서 이용 중인 리전을 클릭하여 선택해 주십시오.
    2. Platform 메뉴에서 Classic을 클릭하여 선택해 주십시오.
    3. Services > Compute > Cloud Functions 메뉴를 차례대로 클릭해 주십시오.
    4. Action(Triger) 메뉴를 클릭해 주십시오.
    5. Packages/Actions(Triggers) 에서 원격 실행이 가능하도록 설정할 액션(트리거)을 클릭해 주십시오.
    6. 기본 정보 탭 메뉴를 클릭한 다음 [외부 연결 주소 생성] 버튼을 클릭해 주십시오.
    7. 외부 연결 주소 생성 팝업 창이 나타나면 Product 선택에서 사용할 Product를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
      • 새로운 Product를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
    8. API 선택에서 사용할 API를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
      • 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
    9. Stage 선택에서 배포할 Stage를 클릭하여 선택해 주십시오.
      • 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
    10. 인증에서 API 보안을 위한 IAM 인증 사용 여부를 클릭하여 선택해 주십시오.
    11. [완료] 버튼을 클릭해 주십시오.
    참고
    • API Gateway에 대한 자세한 사용 방법은 API Gateway 사용 가이드를 참조해 주십시오.
    • API Gateway를 이용한 액션(트리거) 연결에는 API Gateway에서 제공하는 IAM 인증을 통한 비공개 호출과 None을 통한 공개 호출 방식을 제공합니다. 자세한 설정 방법은 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로 전달
    주의

    트리거는 비동기 실행 요청만을 지원하며 응답 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};
        }
        
      • 결과 조회하여 로그 확인
        cloudfunctions-dashboard-vpc_04_ko

        {
          ...
            "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로 메시지를 출력하여 로그를 생성하도록 설정할 수 있습니다.


    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.