Action/Trigger 실행
    • PDF

    Action/Trigger 실행

    • PDF

    Article Summary

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

    콘솔에서 실행

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

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

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

    외부 연결 주소 생성

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

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

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

    1. Services > Compute > Cloud Functions 메뉴를 차례대로 클릭해 주십시오.
    2. Action(Triger) 메뉴를 클릭해 주십시오.
    3. Packages/Actions(Triggers) 에서 원격 실행이 가능하도록 설정할 액션(트리거)을 클릭해 주십시오.
    4. 기본 정보 탭 메뉴를 클릭한 다음 [외부 연결 주소 생성] 버튼을 클릭해 주십시오.
    5. 외부 연결 주소 생성 팝업 창이 나타나면 Product 선택에서 사용할 Product를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
      • 새로운 Product를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
      • API Gateway는 2가지 Zone을 지원
        • 비공개(Private) : 금융 VPC 또는 SSL VPN을 통해서만 접근할 수 있습니다.
        • 공개(Public) : 어디에서든 접근할 수 있습니다.
    6. API 선택에서 사용할 API를 클릭하여 선택하고 [다음] 버튼을 클릭해 주십시오.
      • 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
    7. Stage 선택에서 배포할 Stage를 클릭하여 선택해 주십시오.
      • 새로운 API를 생성하여 선택하려는 경우 새로 만들기 클릭 후 입력
    8. 인증에서 API 보안을 위한 IAM 인증 사용 여부를 클릭하여 선택해 주십시오.
    9. [완료] 버튼을 클릭해 주십시오.
    참고
    • 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로 전달
    주의

    트리거는 비동기 실행 요청만을 지원하며 응답 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.