Functions 에뮬레이터를 사용하여 함수 실행
Google Cloud CLI Functions 에뮬레이터를 사용하면 gcloud alpha functions local 명령어를 통해 Cloud Run Functions의 로컬 인스턴스를 관리할 수 있습니다. 이렇게 하면 Google Cloud 환경에 배포하기 전에 로컬 시스템에서 함수를 배포하고 테스트할 수 있습니다.
Functions 에뮬레이터는 Google Cloud의 빌드팩을 사용하여 함수 코드를 로컬에서 실행 가능한 컨테이너 이미지로 패키징합니다. 그런 다음 Docker를 사용하여 이러한 이미지를 로컬에서 실행합니다.
설치 기본 요건
계속하기 전에 다음이 설치되어 있는지 확인합니다.
로컬에서 함수 배포
Functions 에뮬레이터를 사용하여 함수를 로컬에 배포하려면 gcloud functions
명령어를 사용합니다.
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=nodejs20
Python
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=python312
Go
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=go121
자바
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=java17
C#
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=dotnet6
Ruby
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=ruby32
PHP
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=php82
다음과 같이 바꿉니다.
- LOCAL_DEPLOYMENT_NAME: 함수를 로컬로 배포하는 데 사용하는 이름입니다.
- ENTRY_POINT: 함수의 진입점입니다.
다음 선택적 플래그를 사용하여 배포 명령어를 추가로 구성할 수 있습니다.
플래그 | 설명 |
---|---|
--port |
요청을 리슨할 포트입니다(기본값: 8080 ). |
--builder |
사용할 빌드팩 빌더의 이름입니다. |
--builder
값은 기본적으로 함수의 언어에 맞는 App Engine 빌더로 설정됩니다. 예를 들어 Python의 경우 기본값은 gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder
입니다.
gcloud alpha
명령어를 처음 사용하면 gcloud
명령어에서 gcloud alpha 명령어 세트를 설치하라는 메시지를 표시합니다.
로컬 함수 호출
데이터 없이 로컬 함수를 호출하려면 다음 명령어를 사용합니다.
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
LOCAL_DEPLOYMENT_NAME을 함수를 로컬 배포에 사용할 이름으로 바꿉니다.
로컬 함수 호출에 데이터를 포함하려면 함수 유형과 일치하는 탭을 선택합니다.
HTTP 함수
다음과 같이 로컬 HTTP 함수를 호출합니다.
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--data='{"message": "MESSAGE"}'
다음과 같이 바꿉니다.
- LOCAL_DEPLOYMENT_NAME: 함수를 로컬로 배포할 이름입니다.
- ENTRY_POINT: 함수의 진입점입니다.
- MESSAGE: HTTP 요청의 본문으로 전달할 텍스트 문자열입니다.
CloudEvent 함수
로컬 CloudEvent 함수를 호출하려면 트리거 이벤트를 설명하는 CloudEvent
JSON 객체를 제공해야 합니다.
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--cloud-event="CLOUD_EVENT_JSON"
다음과 같이 바꿉니다.
- LOCAL_DEPLOYMENT_NAME: 함수를 로컬로 배포할 이름입니다.
- ENTRY_POINT: 함수의 진입점입니다.
- CLOUD_EVENT_JSON: 트리거 이벤트를 설명하는 구조화된 콘텐츠 모드의 JSON 인코딩 문자열입니다. 자세한 내용과 예시는 CloudEvents - JSON 이벤트 형식을 참조하세요.
다음은 명령줄 예시입니다.
gcloud alpha functions local call my-function --cloud-event='{
"specversion" : "1.0",
"type" : "com.github.pull.create",
"source" : "https://github.com/cloudevents/spec/pull",
"subject" : "123",
"id" : "ce",
"time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
}'
CloudEvents에 JSON 형식이 정의되는 방식에 관한 자세한 내용은 CloudEvent 사양을 참고하세요.
로컬 함수 배포 삭제
다음 명령어를 사용하여 로컬 함수 배포를 삭제합니다.
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
LOCAL_DEPLOYMENT_NAME을 함수 로컬 배포에 사용한 이름으로 바꿉니다.
이 명령어는 함수 배포를 취소하지만 함수 코드는 삭제하지 않습니다.
다음 단계
- Google Cloud에서 Cloud Run 함수를 배포하는 방법 알아보기