1. Micro 타입 서버에서 사용할 수 없는 서비스
네이버 클라우드 Micro 타입 서버에서 사용할 수 없는 서비스
써드아이시스템이 네이버 클라우드 프리미엄 파트너사로 활동하면서 보유하게 된 네이버 클라우드와 관련된 여러 기술 노하우들을 많은 분들께 공유하려고 합니다.
네이버 클라우드 Cloud Functions에서 Action을 만들 수 있는 언어로는 Node.js, Python, Java, Swift, PHP, .Net, Go Language 등이 있는데
다른 언어들은 네이버 클라우드 콘솔에서 직접 코드를 입력하면 되지만, Java는 로컬에서 작업 후 jar 파일로 .Net은 zip 파일로 압축해서 따로 등록해야 합니다.
여기서는 Visual Studio에서 .Net 그 중에서도 C#으로 Action을 만들고 zip 파일로 압축 후에 콘솔에 등록하고 테스트 하는 과정까지 정리해보겠습니다.
네이버 클라우드 Cloud Functions는 .Net Standard 2.0 규격을 요구하는데, 이 규격을 지원하는 버전을 설치하려면 .Net 5.0 또는 .Net Core 2.1 이상을 설치하면 됩니다.
가장 간단한 방법은 Visual Studio를 설치하는 방법이고 그 외에는 .Net 또는 .Net Core SDK만 별도로 설치하는 방법이 있습니다.
여기서는 Visual Studio를 이용할 것이기 때문에 Visual Studio를 설치하면 됩니다.
Visual Studio에서 제공하는 템플릿 중에서 C# Class library를 선택하니다.
프로젝트 이름과 저장 위치 등을 입력합니다. 여기서는 CloudFunctionsTestVisualStudio 라는 이름으로 시작합니다.
대상 프레임워크는 .NET Standard 2.0으로 지정합니다.
프로젝트 생성 후에 CloudFunctionsTestVisualStudio.csproj 파일을 열어보면 TargetFramework 값이 netstandard2.0으로 되어 있는 것을 확인할 수 있습니다.
네이버 클라우드 Cloud Functions은 json 형식으로 파라미터를 입력받고 결과를 출력하기 때문에 NuGet 패키지 관리자를 이용해서 json 패키지를 설치합니다.
프로젝트 선택하고 마우스 오른쪽 버튼을 클릭해서 NuGet 패키지 관리 메뉴를 선택합니다.
NuGet 패키지 관리자 화면에서 json을 검색하고 Newtonsoft.Json 패키지를 선택, 설치를 합니다.
패키지 설치가 완료된 상태입니다.
이제 name이라는 파라미터를 json 형태로 받아서 출력해주는 Hello.cs 스크립트를 작성합니다.
using System;
using Newtonsoft.Json.Linq;
namespace CloudFunctionsTestConsole
{
public class Hello
{
public JObject Main(JObject args)
{
string name = "no name";
if (args.ContainsKey("name")) {
name = args["name"].ToString();
}
JObject message = new JObject();
message.Add("greeting", new JValue($"Hello, {name}!"));
return (message);
}
}
}
이제 위에서 작성한 스크립트를 게시하고, zip 파일로 압축합니다.
여기서 만든 zip 파일을 네이버 클라우드 콘솔에서 등록하게 됩니다.
[빌드]-[게시] 메뉴를 선택합니다.
게시 대상은 폴더를 선택합니다.
게시할 준비가 되었고 게시를 시작합니다.
게시가 완료되었습니다.
게시된 폴더에 가보면 .nupkg 파일이 생성되는데 저희는 이것을 이용하지 않고 상위 폴더에 있는 dll 파일을 사용합니다.
publish 상위 폴더에 가면 .deps.json, .dll, .pdb 이렇게 3개 파일이 생성되어 있는 것을 확인할 수 있는데 Cloud Functions에서는 이 파일을 사용합니다.
탐색기에서 3개의 파일을 선택하고 압축합니다.
네이버 클라우드 콘솔에서 Cloud Functions에 들어가 이용신청을 합니다.
버튼을 선택해 액션을 생성합니다.
액션을 생성하기 전에 트리거 조건을 설정해야 하는데, 여기서는 트리거 설정 없이 액션 만들기를 선택하겠습니다.
액션의 이름은 특별한 규칙이 없으니 알아보기 쉬운 것으로 입력하면 됩니다.
소스코드 언어 중에서 저희는 dotnet:2.2를 선택합니다.
소스코드 타입은 코드와 파일이 있지만, java와 .Net은 파일 업로드만 가능합니다. 앞에서 만든 소스코드를 선택하고 업로드 합니다.
소스코드가업로드 되었습니다. 등록된 소스코드는 나중에 다운로드 할 수도 있고 다른 파일을 재업로드 할 수도 있습니다.
VPC 환경에서는 연결할 VPC와 Subnet을 선택해야 합니다. Classic 환경에서는 다음 단계로 바로 이동하시면 됩니다.
실행할 Main 함수의 이름을 {Assembly}::{Class Full Name}::{Method} 형태의 풀네임으로 입력합니다. 위에서 만든 Hello.cs에서는 CloudFunctionsTestVisualStudio::CloudFunctionsTestVisualStudio.Hello::Main 으로 입력합니다.
액션 메모리와 Timeout은 기본으로 두셔도 되고 익숙해진 이후에 상황에 맞게 조정하시면 됩니다.
입력할 Main 함수 이름을 어떻게 적으면 되는지 한번 더 살펴보겠습니다.
아래 소스코드 화면에서 보시면 namespace, class, Main 이렇게 이름이 적혀 있는 곳에서
{ 1 }::{ 1 }.{ 2 }::{ 3 } 이렇게 연결해서 적으면 CloudFunctionsTestVisualStudio::CloudFunctionsTestVisualStudio.Hello::Main 이렇게 완성이 되고
이 이름을 Main 함수 이름 칸에 입력하시면 됩니다.
디폴트 파라미터의 경우 필요하실 경우 설정하시면 됩니다.
모든 준비가 끝났으면 생성 버튼을 클릭하여 액션을 생성합니다.
이제 생성된 액션을 실행해보겠습니다. 액션의 기본정보 화면에서는 액션 실행과 수정, 삭제를 할 수 있고, 모니터링 화면에서는 액션이 실행된 통계 정보를 확인할 수 있습니다.
액션 실행화면 왼쪽에는 파라미터를 입력할 수 있고,
오른쪽에는 결과가 나오는데 전체 결과 메시지를 확인하거나 결과만 보기 옵션으로 최종 성공 실패에 대한 결과 메시지만 볼 수도 있습니다.
우선은 파라미터 없이 실행해 보았고, 무사히 성공한 결과가 나왔습니다.
이번에는 파라미터를 입력하고 액션을 실행해보았습니다. 파라미터는 json 형태로 입력하면 됩니다.
왼쪽 창에서 입력한 파라미터가 결과에 잘 반영되어 나왔습니다.
결과만 보기 옵션을 끄고 실행하면 이렇게 스크롤 해야만 전체를 확인할 수 있을 정도로 긴 결과 메시지가 나타납니다.
위의 순서대로 진행을 하면 문제 없이 사용 가능한데, 이미 다른 방법으로 진행해보면서 오류 메시지를 경험하는 경우도 있을 듯하여 가장 많이 겪게 되는 오류 상황 2가지를 정리해보겠습니다.
위에서 설명한 액션 Main 함수 이름을 올바르게 입력하지 않으면 다음과 같은 오류 메시지가 나타납니다.
"error" : "main required format is \"Assembly::Type::Function\"."
상단에 설명한 [CF Action 생성] - [옵션 설정]에서 Main 함수 입력하는 부분을 참고하셔서 정확하게 입력하시면 문제가 해결됩니다.
네이버 클라우드 Cloud Functions은 .Net Standard 2.0 규약을 지원하고 있습니다.
그런데 이 대상 프레임워크가 맞지 않으면 다음과 같은 오류 메시지가 나타납니다.
"error" : "Unable to locate requested type (\"CloudFunctionsTestVisualStudio.Hello\")."
위 [프로젝트 생성]에서 설명한 것처럼 프로젝트 생성할 때 대상 프레임워크를 .NET Standard 2.0으로 지정해야 합니다.
https://guide.ncloud-docs.com/docs/compute-compute-15-2-6.html
문서 최종 수정일 : 2021-03-12
네이버 클라우드 Server 관련 문서들입니다.
네이버 클라우드 Micro 타입 서버에서 사용할 수 없는 서비스
네이버 클라우드 서버 스펙 변경
네이버 클라우드 서버 정지 시 요금할인 횟수와 기한 등을 대한 안내입니다
네이버 클라우드 Auto Scaling 서비스 제한사항
네이버 클라우드 스토리지 추가 생성 기본 가이드
네이버 클라우드 ACG(Access Control Group) 가이드
네이버 클라우드 Linux 스토리지(디스크) 추가 상세 가이드
네이버 클라우드 백업 서비스 가이드와 신청 절차
네이버 클라우드 서버 접속 가이드 - 공인IP 없을 때
네이버 클라우드 서버 접속 가이드 - 공인IP 있을 때
네이버 클라우드 VPC 환경에서 서버 생성
네이버 클라우드 AutoScaling 그룹 이벤트 설정하는 방법
네이버 클라우드 Cloud Functions Action을 .Net (C#)을 사용하여 윈도우 명령프롬프트(cmd)에서 만드는 방법
네이버 클라우드 Cloud Functions Action을 .Net (C#)을 사용하여 Visual Studio에서 만드는 방법
네이버 클라우드 Cloud Functions에서 PHPMailer를 사용하여 gmail을 통해 SMTP로 메일 발송하는 방법
네이버 클라우드 리눅스 서버에 SSH로 접속할 때 필요한 보안 설정입니다.
네이버 클라우드 Classic 환경에서 서버 이미지를 다른 계정에 공유하는 방법을 소개합니다.
네이버 클라우드 Classic 환경 Windows 서버 이미지를 VPC 환경으로 복제하는 방법을 소개합니다.
네이버 클라우드 리눅스 서버의 Block Storage를 LVM으로 구성하는 방법입니다
네이버 클라우드 Kubernetes Service 클러스터 생성 및 제어 가이드입니다
네이버 클라우드 Classic 환경에서 AutoScaling 설정하는 방법입니다.
네이버 클라우드 서버 모니터링 서비스 Monitoring 설정 가이드입니다
네이버 클라우드 모니터링 서비스 Cloud Insight 설정 가이드입니다
네이버 클라우드 Classic 환경 vs VPC 환경 비교 가이드입니다
네이버 클라우드 Secure Zone이나 Private Network 환경에서 Repository를 변경해 리눅스 패키지 설치하는 방법입니다.
네이버 클라우드 서비스에서 X-Forwarded-For를 이용해 Proxy, Load Balancer 환경에서 Client IP를 Apache access_log에 기록하는 방법입니다
네이버 클라우드 CentOS에서 NginX 설치, 설정하는 방법입니다