Cloud Run 함수 (HTTP) 시작하기

1. 소개

개요

Cloud Run Functions는 친숙한 GCF 이벤트 패러다임과 함수 서명을 사용하여 워크로드를 배포하는 새로운 방법입니다. Cloud Run Functions를 사용하면 Google의 의견이 반영된 빌드 프로세스 및 배포 구성을 사용하는 대신 Cloud Run에서 생성된 기본 서비스를 직접 제어할 수 있습니다.

Cloud Run Functions는 Cloud Run 소스 배포의 간단한 UX를 제공하여 개발자가 Cloud Run 구성을 사용하여 워크로드를 완벽하게 제어할 수 있도록 지원합니다.

이 Codelab에서는 아래 예의 nodejs 샘플을 사용합니다. 하지만 원하는 언어로 Cloud Functions 2세대 코드 샘플을 사용할 수 있습니다.

학습할 내용

  • HTTP 요청에 의해 트리거되는 Cloud Run 함수를 배포하는 방법

2. 환경 변수 설정 및 API 사용 설정

gcloud CLI 업그레이드

먼저 최신 버전의 gcloud CLI가 설치되어 있어야 합니다. 다음 명령어를 실행하여 CLI를 업데이트할 수 있습니다.

gcloud components update

환경 변수 설정

이 Codelab 전체에서 사용할 환경 변수를 설정할 수 있습니다.

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

API 사용 설정

이 Codelab을 시작하기 전에 사용 설정해야 하는 API가 몇 가지 있습니다. 이 Codelab에서는 다음 API를 사용해야 합니다. 다음 명령어를 실행하여 이러한 API를 사용 설정할 수 있습니다.

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. HTTP 함수 만들기

먼저 소스 코드 디렉터리를 만들고 해당 디렉터리로 cd합니다.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

그런 다음 다음 콘텐츠로 package.json 파일을 만듭니다.

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

그런 다음 다음 콘텐츠로 index.js 파일을 만듭니다.

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. 함수 배포하기

이제 다음 명령어를 실행하여 Cloud Run 함수를 배포할 수 있습니다.

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

이 명령어는 빌드팩을 사용하여 함수 소스 코드를 프로덕션에 즉시 사용 가능한 컨테이너 이미지로 변환합니다.

다음 사항을 참고하세요.

  • --source 플래그는 Cloud Run에 함수를 실행 가능한 컨테이너 기반 서비스로 빌드하도록 지시하는 데 사용됩니다.
  • –function 플래그 (신규)는 호출할 함수 서명이 되도록 새 서비스의 진입점을 설정하는 데 사용됩니다.
  • (선택사항) 함수가 공개적으로 호출되지 않도록 하려면 –no-allow-unauthenticated를 사용합니다.

5. 함수 테스트

배포가 완료되면 서비스 URL이 표시됩니다. 함수를 호출하려면 아래와 같이 ID 토큰 또는 Cloud Run 호출자 역할이 있는 주 구성원의 ID 토큰으로 인증된 요청을 전송해야 합니다.

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

6. 축하합니다.

축하합니다. Codelab을 완료했습니다.

Cloud Run Functions에 관한 문서를 검토하는 것이 좋습니다.

학습한 내용

  • HTTP 요청에 의해 트리거되는 Cloud Run 함수를 배포하는 방법

7. 삭제

의도치 않은 요금이 청구되지 않도록 하려면(예: Cloud Run 서비스가 무료 등급의 월별 Cloud Run 호출 할당량보다 더 많이 호출되는 경우) Cloud Run을 삭제하거나 2단계에서 만든 프로젝트를 삭제하면 됩니다.

Cloud Run 함수를 삭제하려면 https://console.cloud.google.com/run에서 Cloud Run Cloud Console로 이동하여 crf-http-codelab 서비스를 삭제합니다.

전체 프로젝트를 삭제하려면 https://console.cloud.google.com/cloud-resource-manager로 이동하여 2단계에서 만든 프로젝트를 선택하고 삭제를 선택합니다. 프로젝트를 삭제하면 Cloud SDK에서 프로젝트를 변경해야 합니다. gcloud projects list를 실행하여 사용 가능한 모든 프로젝트의 목록을 볼 수 있습니다.