brunch
매거진 NCE

NCE-20.Cloud Function

by Master Seo

<1> Clound function 개요

<2> 테스트 네트워크 설정

<3 > 트리거 외부 URL 을 통해 호출

<4> 오브젝트 스토리지 이벤트와 cloud functions 연결하기



실습 자료



<1> Clound function 개요



액션을 만들고 트리거를 통해 액션을 실행시키는 방식을 알아봅니다

액션은

독자적인 특정 액션을 실행시킬 수 있지만 트리거에 파라미터를 넣어 액션을 호출할 시 다른

방식으로도 실행이 가능합니다


액션을 단독으로 실행시킬 때와 트리거에 파라미터를 넣어 액션을 실행시킬 때 , 결과 값이 어떻게 달라

지는지에 집중해서 확인해보고 , 외부와 통신할 수 있는 URL 주소를 통해서도 트리거를 작동시키는 것

까지 함께 살펴봅니다 . 마지막으로는 액션에 코드가 아닌 여러 코드파일로 이루어진 압축파일을 이용하

여 네이버 클라 우드 플랫폼 내의 다른 상품과 연동하여 사용하는 방법에 대해서도 실습해봅니다




<2> 테스트 네트워크 설정



1


Action 은 Private Subnet 서버에서 실행할 수 있습니다

Private subnet 사용. (KR-2 Private subnet만 된다. KR-1 Private subnet은 안된다.)

KR-2에 Private subnet을 만들자.


10.0.8.0/23


슬라이드9.JPG


2

Route Table 설정에 외부 통신은 NATGW 사용

VPC - NAT Subnet 로 생성. 10.0.3.0/24

VPC - NAT Gateway 로 생성.




<3> 패키지 생성, 액션 생성



1

패키지 생성

Compute > Cloud Functions 탭 > Action > 패키지 생성 클릭

hello




2

액션 생성

Cloud Functions 탭 > Action > Action 생


패키지 : hello 선택

타입 : 일반 액션

이름 : helloNCP

런타임 : others 선택 > nodejs:8

타입 : 코드


코드 :

function main(params) {

return {payload: 'Hello, ' + params.name + ' from ' + params.place + '?'};

}


디폴트 파라미터

{"name":"stranger","place":"somewhere"}


VPC : vpc 선택

Subnet : lab1 vpc 내 private subnet 선택

옵션 설정 : Default 값 유지



# 옵션은 참고

10 256.png


하단의 생성 버튼 클릭




3

# 트리거 생성 - API Gateway 사용시

Trigger 항목에 추가 클릭

연결 방법 : 신규 생성 선택

타입 : API Gateway 선택 후 하단의 다음 버튼 클릭


30 api.png


40 tri.png
50 re.png



4

타입 : Webhook

Product : 생성 > lab hello > 저장

API : 생성 > labhello > 저장

Resource: 생성 > labhello > 저장

Stage : 생성 > labhello > 저장

API Key 인증 : off 로 유지

인증 : none

생성

저장하고 액션 연결하기 버튼 클릭 후 저장 버튼 클릭



5

# 액션 단일 동작

Cloud Functions 탭 > Action > hello 패키지 > helloNCP 액션 선택

실행

결과만 보기를 True 로 변경


실행

Hello, stranger from somewhere? 가 출력되는지 확인




<3 > 트리거 외부 URL 을 통해 호출



1

Cloud function > Action > helloNCP 클릭

API Gateway 클릭 후 하단의 Trigger 탭으로 이동하여 외부 호출 URL 확인



2

서버에서 외부 연결 호출 URL 로 POST 요청을 전송


명령어 :

curl -X POST <URL 주소> -H "Content-Type:application/json" -d

'{"name":"NCP","place":"Seoul"}'


curl -X POST https://sjky89vfm3.apigw.ntruss.com/labhello/labhello/labhello -H "Content-Type:application/json" -d '{"name":"NCP","place":"Seoul"}'


{"activationId":"5ae2004011b34f1ba2004011b39f1b6e"}



3

HelloNCP 액션 > 모니터링 탭에서 ActionId 선택 후 자세히 보기 클릭 > 결과로

{"payload":" NCP from Seoul?"} 가 노출되었는지 확인


60 action.png






<4> 오브젝트 스토리지 이벤트와 cloud functions 연결하기



1

Storage > Object storage 로 이동

버킷 생성

seo-07-21-1

생성


버킷 생성 후 버킷 우측 메뉴에서 이벤트 관리 클릭

생성

이벤트 이름 :

object-event

객체 생성 전체 선택

대상 : cloud function 선택 > 트리거 생성 클릭

트리거 이름 :

object-trigger

아래에 신규 액션 생성



7

패키지 : hello 선택

일반액션

이름

objectstorage-event

런타임 - others - nodejs 16

타입 : code


function main(params) {

return {payload: "Hello, file is. uploaded!"};

}


VPC : lab1 vpc

Subnet : private subnet

생성



8

이전에 작업하던 페이지로 이동 작업하던 브라우저 탭의 왼쪽 탭으로 이동

'연결 액션 설정' 새로고침

연결 액션에서 방금 만든 ‘objectstorage event’ 선택

생성


오브젝트 스토리지 이벤트 페이 지에서 방금 만든 ‘object trigger’ 선택

재귀 호출 주의 선택 > 생성





9

Services > object storage > 이벤트 설정한 버킷으로 이동

파일 올리기 - 로컬 PC 에 있는 파일 업로드

파일을 업로드한 후 Services > Cloud Functions > Action

objectstorage--eventevent 액션 클릭

모니터링 탭으로 이동

실행된 Action ID 확인


70 id.png




다음

https://brunch.co.kr/@topasvga/4778


keyword
매거진의 이전글NCE-19. Papago Translation