Node.js를 사용하여 HTTP Cloud 함수 만들기 및 배포
이 문서에서는 간단한 Cloud Functions HTTP 함수를 만드는 과정을 설명합니다. 이는 Cloud Functions의 두 가지 유형 중 하나입니다.
- 표준 HTTP 요청에서 호출하는 HTTP 함수
- Pub/Sub 주제의 메시지나 Cloud Storage 버킷의 변경사항과 같이 Cloud 인프라의 이벤트에서 트리거하는 이벤트 기반 함수
자세한 내용은 HTTP 함수 작성 및 이벤트 기반 함수 작성을 참조하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
- gcloud CLI를 설치하고 초기화합니다.
gcloud
구성요소를 업데이트 및 설치합니다.gcloud components update
-
개발 환경을 준비합니다.
함수 만들기
로컬 시스템에 함수 코드를 저장할 디렉터리를 만듭니다.
Linux 또는 Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
다음 콘텐츠로
helloworld
디렉터리에index.js
파일을 만듭니다.이 예시 함수는 모든 요청에 쾌활한 'Hello World!'를 반환합니다.
종속 항목 지정
Node.js의 종속 항목은 npm으로 관리되며 package.json
이라는 메타데이터 파일로 표현됩니다. 이 파일은 수동으로 또는 npm
명령어를 사용하여 만들 수 있습니다.
npm
명령어로package.json
파일을 만들려면 다음 안내를 따르세요.helloworld 디렉터리에서
npm init
명령어를 실행합니다.Enter
를 눌러 질문에 대한 기본 답변을 수락합니다.npm init
package.json
파일을 수정하여 함수 프레임워크 종속 항목을 추가합니다."dependencies": { "@google-cloud/functions-framework": "^3.1.0" }
package.json
파일을 수동으로 만들려면 다음 콘텐츠를 파일에 복사하세요.
많은 Node.js 클라이언트 라이브러리를 Google Cloud 제품에서 사용할 수 있으며 종속 항목으로 설치할 수 있습니다.
로컬에서 함수 빌드 및 테스트
함수를 배포하기 전에 로컬에서 테스트하려면 함수 프레임워크를 로컬로 설치한 후 함수를 실행해야 합니다.
helloworld
디렉터리에서 다음 명령어를 실행하여 로컬 머신에 함수 프레임워크를 설치합니다.npm install @google-cloud/functions-framework
helloworld
디렉터리에서 이 명령어를 실행하여 로컬에서 함수를 실행합니다.npx @google-cloud/functions-framework --target=helloGET
브라우저에서
http://localhost:8080
을 방문하거나 다른 창에서curl localhost:8080
을 실행하여 함수를 테스트합니다.자세한 내용은 로컬 함수에 요청 보내기를 참조하세요.
이 함수는 'Hello World!'라는 메시지를 반환합니다.
함수 배포하기
함수를 배포하려면 helloworld
디렉터리에서 gcloud functions deploy
명령어를 실행합니다.
gcloud functions deploy hello-node-function \
--gen2 \
--runtime=nodejs20 \
--region=REGION \
--source=. \
--entry-point=helloGET \
--trigger-http \
--allow-unauthenticated
REGION을 함수를 배포할 Google Cloud 리전 이름으로 바꿉니다(예: us-west1
).
이렇게 하면 선택한 리전에 nodejs20 런타임을 사용하여 샘플 함수가 배포됩니다.
선택사항인 --allow-unauthenticated
플래그를 사용하면 인증 없이 함수에 도달할 수 있습니다.
배포된 함수 테스트
함수가 배포되면
gcloud functions deploy
명령어 결과에서uri
속성을 기록하거나 다음 명령어로 검색합니다.gcloud functions describe hello-node-function \ --region=REGION
REGION을 함수를 배포한 Google Cloud 리전의 이름으로 바꿉니다(예:
us-west1
).다음
curl
명령어를 사용하거나 브라우저에서 이 URL을 방문합니다.curl FUNCTION_URL
FUNCTION_URL을 방금 검색한
uri
속성으로 바꿉니다.이 함수는 'Hello World!'라는 메시지를 반환합니다.
함수 로그 보기
명령줄 도구를 사용하여 로그 보기
Cloud Logging UI 또는 Google Cloud CLI를 사용하여 함수의 로그를 검토할 수 있습니다.
gcloud CLI를 사용하여 함수 로그를 보려면 gcloud functions logs read
명령어를 사용합니다.
gcloud functions logs read \
--gen2 \
--region=REGION \
--limit=10 \
hello-node-function
REGION을 함수를 배포한 Google Cloud 리전의 이름으로 바꿉니다(예: us-west1
).
다음과 유사한 결과가 출력됩니다.
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:24.956
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:01.692
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:47.711
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:46.542
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:27.390
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.
로깅 대시보드로 로그 보기
로깅 대시보드를 사용하여 함수 로그를 보려면 Cloud Functions 개요 페이지를 열고 목록에서 함수 이름을 클릭한 다음 로그 탭을 클릭합니다.