NCP API를 사용하는 방법

Biokim
Cloud Villains
Published in
7 min readJan 5, 2022

클라우드 엔지니어로서 Naver Cloud Platform(이하 NCP)를 사용해보니 서버, 네트워크, CDB(RDS)등의 서비스들에 대한 생성 방법은 타 클라우드(Azure, AWS…)와 큰 차이점이 없었습니다.

NCP에 입문하고 나서, 서비스 카테고리를 둘러보던 도중 친숙한 이름의 서비스들이 있었는데, 그건 바로 네이버에서 제공하는 Clova AI 솔루션들이었습니다.

NCP에서 제공하는 CLOVA 관련 솔루션

NCP의 AI.Application Service 카테고리에서 다양한 서비스들을 사용할 수 있었는데, 한 가지 특이한 점은 해당 서비스를 사용하기 위해서는 서비스를 생성 후 API를 통해 사용할 수 있다는 점이었습니다.

AI . Naver API 서비스 이미지

Application Programming Interface, 줄여서 API는 간략하게 설명하자면, 특정 서버 혹은 서비스에서 제공하는 기능을 쉽게 사용하기 위한 것 이라고 이해하시면 될 것 같습니다.

그렇다면, 이제부터 NCP에서 특정 서비스를 이용하기 위해 API를 사용하는 General한 방법을 살펴보도록 하겠습니다.

API를 사용하는 서비스들 중 NCP의 *SENS 서비스 구축을 진행해보도록 하겠습니다.

(*Simple & Easy Notification Service, 문자 발송 서비스)

SENS 서비스의 경우 포탈에서 Project를 생성합니다.

  • 문자만 발송할 예정이므로 서비스 Type은 SMS으로 지정합니다.

프로젝트를 생성했다면 웹 포탈에서 SMS 메시지를 발송하는 것이 가능합니다.

  • 문자 발송을 위해서는 발신번호를 등록해야 하며 개인 소유 번호와 계정 생성 시 인증한 번호가 동일해야 합니다.
  • 사업자의 경우 별도의 서류 심사를 통해 회사 번호를 등록할 수 있습니다.

이번에는 포탈에서 SMS 문자 메시지를 발송하지 않고 API를 통해 발송할 예정이므로 NCP SENS API 공식 문서를 통해 아래와 같은 내용을 확인합니다.

출처 : https://api.ncloud-docs.com/docs/ai-application-service-sens-smsv2

API 공식 문서에서는 API를 사용하기 위한 공통적인 헤더를 확인할 수 있고 실제로 호출할 API URL을 확인할 수 있습니다.

SESN 서비스에 대해 Curl 명령어로 호출할 경우 다음과 같은 형태가 됩니다.

curl -X POST “https://sens.apigw.ntruss.com/sms/v2/services/{serviceId}/messages"

위의 명령어에 API Header를 추가하게 되면 아래와 같은 형태가 됩니다.

curl -X POST “https://sens.apigw.ntruss.com/sms/v2/services/{serviceId}/messages" -H “x-ncp-apigw-timestamp: {Timestamp}” -H “x-ncp-iam-access-key: {Sub Account Access Key}” -H “x-ncp-apigw-signature-v2: {API Gateway Signature}” -H “Content-Type: application/json; charset=utf-8”

이제 해당 명령어를 사용하기 위해 필요한 헤더 값인 Timestamp, Sub Account Access Key, API Gateway Signature, Service ID를 채워야 합니다.

먼저 Service ID의 경우 해당 서비스가 가진 아이디로 Project 생성 시 서비스 ID 컬럼을 클릭하면 확인할 수 있습니다.

  • NCP의 Resource Manager를 통해서도 Service ID 확인이 가능합니다.

Sub Account Access Key의 경우 NCP 포탈(www.ncloud.com)에 메인 계정으로 인증키를 생성하면 확인할 수 있습니다.

  • 메인 계정 로그인 후 마이페이지 > 인증키 관리로 이동합니다.
  • 신규 API 인증키 생성을 클릭하면 Access Key ID와 Secret Key를 확인할 수 있습니다.

Timestamp는 https://www.unixtimestamp.com/ 해당 홈페이지에서 확인할 수 있으며, time 메서드를 이용해서도 확인할 수 있습니다.

  • 한 가지 주의할 점은 API를 사용하는 시점이 Timestamp 정보값과 5분 이상 차이나면 안됩니다.

API Gateway Signature는 특정 API를 사용할 때 body를 Access Key Id와 맵핑되는 Secret Key로 암호화한 서명(HMAC 암호화 알고리즘은 HmacSHA256 사용)으로 Access key와 함께 확인할 수 있는 Secret Key를 별도의 작업을 거쳐 사용해야 합니다.

필요한 Header 값들을 모두 확인한 결과 Curl 명령어로 바로 사용하기에는 API Gateway Signature 값을 필요로 하므로, 별도의 코드 작성을 통해 API를 호출해야 합니다.

NCP API를 사용하기 위해 python 코드를 작성하는 단계는 다음과 같습니다.

  1. Visual studio Code를 통해 코드를 작성할 폴더를 생성합니다.

2. main.py를 작성하여 Header 값으로 전달할 Access Key, Secret Key, Timestamp 값을 입력 후 실질적으로 api를 호출할 메서드에 전달 합니다.

3. 다음으로는 main에서 전달받은 매개변수를 통해 SENS API를 호출할 코드를 작성합니다.

요청 header 및 body에 대한 자세한 정보는 아래 링크를 통해 확인할 수 있습니다.

  • SMS API — SENS (ncloud-docs.com)
  • body 부분에는 더 다양한 옵션이 있지만 이번에는 문자 발송을 위해 필요한 값들을 넣어서 진행하였습니다.

4. main.py를 실행시키게되면 정상적으로 문자 메세지가 발송된 것을 확인할 수 있습니다.

현재 SENS 문자 발송의 경우 월 50건까지 무료로 지원하니 해당 게시글을 보고 테스트 해보시면 좋을 것 같습니다.

블로그 글을 통해 여기까지 잘 따라오셨다면, NCP API 공식 문서를 통해 대부분의 API를 사용하실 수 있을 듯 합니다.

아직 다양한 NCP 서비스들이 많이 있으니, 차차 소개해드릴 수 있도록 하겠습니다.

긴 글 읽어주셔서 감사합니다. :)

출처 : www.ncloud.com(NCP 서비스 관련 이미지)

https://clova.ai/ko(클로바 이미지)

--

--