Cloud Scheduler로 Compute 인스턴스 예약

이 가이드에서는 리소스 라벨을 사용해서 정기적으로 Compute Engine 인스턴스를 자동 시작 및 중지하기 위해 Cloud Scheduler 및 Cloud Functions를 사용하는 방법을 보여줍니다.

목표

  • Cloud Functions를 사용하여 Compute Engine 인스턴스를 시작하고 중지하는 함수 집합을 작성하고 배포합니다.
  • 일반적인 업무 시간에 맞게 월-금 오전 9시-오후5시까지 실행되도록 dev 리소스 라벨을 사용해서 인스턴스를 예약하는 Cloud Scheduler로 작업 집합을 만듭니다.

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Cloud 스케줄러
  • Cloud Functions
  • Pub/Sub
  • Compute Engine

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Cloud 스케줄러의 환경을 설정합니다.

    환경 설정하기

  2. Cloud Functions, Pub/Sub, and Compute Engine API를 사용 설정합니다.

    API 사용 설정

애플리케이션 아키텍처

이 솔루션에는 다음과 같은 Google Cloud 구성요소가 포함됩니다.

  1. Compute Engine 인스턴스: 정기적으로 실행하려고 하는 Compute Engine 인스턴스
  2. Cloud Functions 함수: 예약하려는 인스턴스를 시작하고 중지하는 함수
  3. Pub/Sub 메시지: 시작 및 중지 이벤트마다 전송되거나 수신되는 메시지
  4. Cloud 스케줄러 작업: 인스턴스를 시작하거나 중지하기 위해 정해진 일정에 따라 호출을 실행하는 작업

Pub/Sub를 통해 Compute Engine 인스턴스를 예약하는 Cloud Scheduler가 표시된 시스템 아키텍처 다이어그램

위치 요구사항

일부 구성요소는 특정 리전에서만 지원됩니다.

  1. Compute Engine 인스턴스: Compute Engine 리전 및 영역 아래에 나열된 모든 리전에서 지원됩니다.
  2. Cloud Functions 함수: Cloud Functions 위치에 나열된 리전에서 지원됩니다.
  3. Pub/Sub 메시지: Pub/Sub가 글로벌 서비스이므로 전 세계에서 지원됩니다.
  4. Cloud 스케줄러 작업: 모든 현재 App Engine 위치에서 지원됩니다.

권장사항: Pub/Sub 대신에 HTTP는 어떤가요?

Pub/Sub 트리거 대신 HTTP 트리거를 사용하여 이 아키텍처를 간소화하는 것이 좋습니다.

Cloud 스케줄러를 이용하여 HTTP를 통해 Compute Engine 인스턴스를 예약하는 과정을 보여주는 시스템 아키텍처 다이어그램

HTTP를 통해 예약할 경우 누구든지 Compute Engine 인스턴스를 예약할 수 있음을 보여주는 시스템 아키텍처 다이어그램

보다 안전한 설정을 만들기 위해서는 대신 Pub/Sub 함수를 사용하는 것이 좋습니다.

Compute Engine 인스턴스 설정

콘솔

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.
  2. 인스턴스 만들기를 클릭합니다.
  3. 이름dev-instance로 설정합니다.
  4. 리전에서 us-west1을 선택합니다.
  5. 영역에서 us-west1-b를 선택합니다.
  6. 관리, 보안, 디스크, 네트워킹, 단독 임대 섹션을 펼칩니다.
  7. 관리에서 라벨 추가를 클릭합니다. env를 입력하고 dev를 입력합니다.
  8. 페이지 하단에 있는 만들기를 클릭합니다.

gcloud

gcloud compute instances create dev-instance \
    --network default \
    --zone us-west1-b \
    --labels=env=dev

Pub/Sub에 Cloud Functions 함수 설정

함수 만들기 및 배포

Console

시작 함수를 만듭니다.

  1. Cloud Console에서 Cloud Functions 페이지로 이동합니다.
    Cloud Functions 페이지로 이동합니다.
  2. 함수 만들기를 클릭합니다.
  3. 함수 이름startInstancePubSub로로 설정합니다.
  4. 리전을 기본값으로 둡니다.
  5. 트리거 유형으로 Cloud Pub/Sub를 선택합니다.
  6. Cloud Pub/Sub 주제 선택에서 Create a topic...을 선택합니다.
  7. 새 Pub/Sub 주제 대화상자가 나타납니다.
    1. 주제 IDstart-instance-event를 입력합니다.
    2. 주제 만들기를 클릭하여 대화상자를 닫습니다.
  8. 트리거 상자 아래에서 저장을 클릭합니다.
  9. 페이지 하단에서 다음을 클릭합니다.
  10. 런타임으로 Node.js 10을 선택합니다.
  11. 진입점startInstancePubSub를 입력합니다.
  12. 코드 편집기 왼쪽에서 index.js를 선택합니다.
  13. 시작 코드를 다음 코드로 바꿉니다.

    const Compute = require('@google-cloud/compute');
    const compute = new Compute();
    
    /**
     * Starts Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to start.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating
     *  completion.
     */
    exports.startInstancePubSub = async (event, context, callback) => {
      try {
        const payload = _validatePayload(
          JSON.parse(Buffer.from(event.data, 'base64').toString())
        );
        const options = {filter: `labels.${payload.label}`};
        const [vms] = await compute.getVMs(options);
        await Promise.all(
          vms.map(async instance => {
            if (payload.zone === instance.zone.id) {
              const [operation] = await compute
                .zone(payload.zone)
                .vm(instance.name)
                .start();
    
              // Operation pending
              return operation.promise();
            }
          })
        );
    
        // Operation complete. Instance successfully started.
        const message = 'Successfully started instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = payload => {
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  14. 코드 편집기 왼쪽에서 package.json를 선택합니다.

  15. 시작 코드를 다음 코드로 바꿉니다.

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=12.0.0"
      },
      "scripts": {
        "test": "mocha test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "mocha": "^8.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^9.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^2.0.0"
      }
    }
    
  16. 페이지 하단의 배포를 클릭합니다.

중지 함수를 만듭니다.

  1. Cloud Console에 Cloud Functions 페이지가 표시됩니다.
  2. 함수 만들기를 클릭합니다.
  3. 함수 이름stopInstancePubSub로로 설정합니다.
  4. 리전을 기본값으로 둡니다.
  5. 할당 메모리를 기본값으로 그대로 둡니다.
  6. 트리거 유형으로 Cloud Pub/Sub를 선택합니다.
  7. Cloud Pub/Sub 주제 선택에서 Create a topic...을 선택합니다.
  8. 새 Pub/Sub 주제 대화상자가 나타납니다.
    1. 주제 IDstop-instance-event를 입력합니다.
    2. 주제 만들기를 클릭하여 대화상자를 닫습니다.
  9. 트리거 상자 아래에서 저장을 클릭합니다.
  10. 페이지 하단에서 다음을 클릭합니다.
  11. 런타임으로 Node.js 10을 선택합니다.
  12. 진입점stopInstancePubSub를 입력합니다.
  13. 코드 편집기 왼쪽에서 index.js를 선택합니다.
  14. 시작 코드를 다음 코드로 바꿉니다.

    const Compute = require('@google-cloud/compute');
    const compute = new Compute();
    
    /**
     * Stops Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to stop.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating completion.
     */
    exports.stopInstancePubSub = async (event, context, callback) => {
      try {
        const payload = _validatePayload(
          JSON.parse(Buffer.from(event.data, 'base64').toString())
        );
        const options = {filter: `labels.${payload.label}`};
        const [vms] = await compute.getVMs(options);
        await Promise.all(
          vms.map(async instance => {
            if (payload.zone === instance.zone.id) {
              const [operation] = await compute
                .zone(payload.zone)
                .vm(instance.name)
                .stop();
    
              // Operation pending
              return operation.promise();
            } else {
              return Promise.resolve();
            }
          })
        );
    
        // Operation complete. Instance successfully stopped.
        const message = 'Successfully stopped instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = payload => {
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  15. 코드 편집기 왼쪽에서 package.json를 선택합니다.

  16. 시작 코드를 다음 코드로 바꿉니다.

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=12.0.0"
      },
      "scripts": {
        "test": "mocha test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "mocha": "^8.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^9.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^2.0.0"
      }
    }
    
  17. 페이지 하단의 배포를 클릭합니다.

gcloud

Pub/Sub 주제를 만듭니다.

gcloud pubsub topics create start-instance-event
gcloud pubsub topics create stop-instance-event

코드 가져오기

  1. 코드를 다운로드합니다.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.

  2. 해당 디렉토리로 이동합니다.

    cd nodejs-docs-samples/functions/scheduleinstance/
    

시작 및 중지 함수를 만듭니다.

nodejs-docs-samples/functions/scheduleinstance/ 디렉토리가 표시됩니다.

gcloud functions deploy startInstancePubSub \
    --trigger-topic start-instance-event \
    --runtime nodejs10 \
    --allow-unauthenticated
gcloud functions deploy stopInstancePubSub \
    --trigger-topic stop-instance-event \
    --runtime nodejs10 \
    --allow-unauthenticated

(선택사항) 함수 작동 확인

Console

인스턴스 중지

  1. Cloud Console에서 Cloud Functions 페이지로 이동합니다.
    Cloud Functions 페이지로 이동합니다.
  2. 이름이 stopInstancePubSub인 함수를 클릭합니다.
  3. 다음과 같은 여러 개의 탭이 표시됩니다. 일반, 트리거, 소스, 권한, 테스트. 테스트 탭을 클릭합니다.
  4. 트리거 이벤트에 다음을 입력합니다.

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • 이것은 단순히 {"zone":"us-west1-b", "label":"env=dev"}를 위한 base64 인코딩 문자열입니다.

    • 문자열을 직접 인코딩하려면 온라인 base64 인코딩 툴을 자유롭게 사용해도 좋습니다.

  5. 함수 테스트 버튼을 클릭합니다.

  6. 실행이 완료되면 출력Successfully stopped instance dev-instance가 표시됩니다. 실행이 완료되려면 최대 60초가 소요될 수 있습니다.

    • error: 'Error: function failed to load.'가 표시될 경우, 10초 또는 함수가 배포를 완료할 때까지 기다린 후 다시 시도하세요.

    • 대신 error: 'Error: function execution attempt timed out.'이 표시되면 다음 단계로 이동해서 인스턴스가 종료되는 시간이 오래 걸리는지 확인합니다.

    • 실행이 완료되었지만 아무것도 표시되지 않는다면 시간이 초과되었을 것입니다. 다음 단계로 이동하여 인스턴스가 종료되는 데 오래 걸리는지 확인합니다.

  7. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.

  8. dev-instance라는 인스턴스의 이름 옆에 인스턴스가 중지되었음을 의미하는 회색 사각형이 있는지 확인합니다. 종료를 완료하는 데 최대 30초가 소요될 수 있습니다.

    • 완료가 안 되는 것처럼 보일 경우, 페이지 상단의 새로고침을 클릭해 보세요.

인스턴스 시작

  1. Cloud Console에서 Cloud Functions 페이지로 이동합니다.
    Cloud Functions 페이지로 이동합니다.
  2. 이름이 startInstancePubSub인 함수를 클릭합니다.
  3. 다음과 같은 여러 개의 탭이 표시됩니다. 일반, 트리거, 소스, 권한, 테스트. 테스트 탭을 클릭합니다.
  4. 트리거 이벤트에 다음을 입력합니다.

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • 마찬가지로 이것은 단순히 {"zone":"us-west1-b", "label":"env=dev"}를 위한 base64 인코딩 문자열입니다.
  5. 함수 테스트 버튼을 클릭합니다.

  6. 실행이 완료되면 출력Successfully started instance dev-instance가 표시됩니다.

  7. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.

  8. 이름이 dev-instance인 인스턴스의 이름 옆에 실행 중임을 나타내는 녹색 체크표시가 있는지 확인합니다. 시작을 완료하는 데 최대 30초가 소요될 수 있습니다.

gcloud

인스턴스 중지

  1. 인스턴스를 중지하는 함수를 호출합니다.

    gcloud functions call stopInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • 이것은 단순히 {"zone":"us-west1-b", "label":"env=dev"}를 위한 base64 인코딩 문자열입니다.

    • 문자열을 직접 인코딩하려면 필요한 툴을 자유롭게 사용해도 좋습니다. 다음은 base64 명령줄 도구를 사용한 예시입니다.

      echo '{"zone":"us-west1-b", "label":"env=dev"}' | base64
      
      eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo=
      

    함수가 완료되면 다음과 같이 표시됩니다.

    result: Successfully stopped instance dev-instance
    

    실행이 완료되려면 최대 60초가 소요될 수 있습니다.

    • 다음과 같은 오류가 표시될 경우:

      error: 'Error: function failed to load.`
      

      10초 또는 함수가 배포를 완료할 때까지 기다린 후 다시 시도하세요.

    • 다음과 같은 오류가 표시될 경우:

      error: `Error: function execution attempt timed out.`
      

      다음 단계로 이동하여 인스턴스가 종료되는 데 오래 걸리는지 확인합니다.

    • 아무 결과도 표시되지 않는 경우, 함수의 실행 시간이 초과되었을 것입니다. 다음 단계로 이동하여 인스턴스가 종료되는 데 오래 걸리는지 확인합니다.

  2. 인스턴스의 상태가 TERMINATED인지 확인합니다. 종료를 완료하는 데 최대 30초가 소요될 수 있습니다.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

인스턴스 시작

  1. 인스턴스를 시작하는 함수를 호출합니다.

    gcloud functions call startInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • 마찬가지로 이것은 단순히 {"zone":"us-west1-b", "label":"env=dev"}를 위한 base64 인코딩 문자열입니다.

    함수가 완료되면 다음과 같이 표시됩니다.

    result: Successfully started instance dev-instance
    
  2. 인스턴스의 상태가 RUNNING인지 확인합니다. 시작을 완료하는 데 최대 30초가 소요될 수 있습니다.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

Pub/Sub를 호출하는 Cloud 스케줄러 작업 설정

작업 만들기

Console

시작 작업을 만듭니다.

  1. Cloud Console에서 Cloud Scheduler 페이지로 이동합니다.
    Cloud Scheduler 페이지로 이동합니다.
  2. 작업 만들기를 클릭합니다.
  3. 기본 리전은 그대로 두고 페이지 하단에서 다음을 클릭합니다.
  4. 이름startup-dev-instances로 설정합니다.
  5. 빈도0 9 * * 1-5를 입력합니다.
    • 이는 월요일~금요일, 매일 오전 9시에 실행됩니다.
  6. 시간대에서, 원하는 국가와 시간대를 선택합니다. 이 예시에서는 United StatesLos Angeles가 사용됩니다.
  7. 대상으로 Pub/Sub를 선택합니다.
  8. 주제start-instance-event를 입력합니다.
  9. 페이로드에 다음을 입력합니다.
    {"zone":"us-west1-b","label":"env=dev"}
    
  10. 만들기를 클릭합니다.

중지 작업을 만듭니다.

  1. Cloud Console에 Cloud Scheduler 페이지가 표시됩니다.
  2. 작업 만들기를 클릭합니다.
  3. 기본 리전은 그대로 두고 페이지 하단에서 다음을 클릭합니다.
  4. 이름shutdown-dev-instances로 설정합니다.
  5. 빈도0 17 * * 1-5를 입력합니다.
    • 이는 월요일~금요일, 매일 오후 5시에 실행됩니다.
  6. 시간대에서, 원하는 국가와 시간대를 선택합니다. 이 예시에서는 United StatesLos Angeles가 사용됩니다.
  7. 대상으로 Pub/Sub를 선택합니다.
  8. 주제stop-instance-event를 입력합니다.
  9. 페이로드에 다음을 입력합니다.
    {"zone":"us-west1-b","label":"env=dev"}
    
  10. 만들기를 클릭합니다.

gcloud

시작 작업을 만듭니다.

gcloud beta scheduler jobs create pubsub startup-dev-instances \
    --schedule '0 9 * * 1-5' \
    --topic start-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles'

중지 작업을 만듭니다.

gcloud beta scheduler jobs create pubsub shutdown-dev-instances \
    --schedule '0 17 * * 1-5' \
    --topic stop-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles'

(선택사항) 작업이 작동하는지 확인

Console

인스턴스 중지

  1. Cloud Console에서 Cloud Scheduler 페이지로 이동합니다.
    Cloud Scheduler 페이지로 이동합니다.
  2. 이름이 shutdown-dev-instances인 작업에 대해 페이지 오른쪽 끝에 있는 지금 실행 버튼을 클릭합니다.
  3. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.
  4. dev-instance라는 인스턴스의 이름 옆에 인스턴스가 중지되었음을 의미하는 회색 사각형이 있는지 확인합니다. 종료를 완료하는 데 최대 30초가 소요될 수 있습니다.

인스턴스 시작

  1. Cloud Console에서 Cloud Scheduler 페이지로 이동합니다.
    Cloud Scheduler 페이지로 이동합니다.
  2. 이름이 startup-dev-instances인 작업에 대해 페이지 오른쪽 끝에 있는 지금 실행 버튼을 클릭합니다.
  3. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.
  4. 이름이 dev-instance인 인스턴스의 이름 옆에 실행 중임을 나타내는 녹색 체크표시가 있는지 확인합니다. 시작을 완료하는 데 최대 30초가 소요될 수 있습니다.

gcloud

인스턴스 중지

  1. 인스턴스를 중지하는 스케줄러 작업을 실행합니다.

    gcloud beta scheduler jobs run shutdown-dev-instances
    
  2. 인스턴스의 상태가 TERMINATED인지 확인합니다. 종료를 완료하는 데 최대 30초가 소요될 수 있습니다.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

인스턴스 시작

  1. 인스턴스를 시작하는 스케줄러 작업을 실행합니다.

    gcloud beta scheduler jobs run startup-dev-instances
    
  2. 인스턴스의 상태가 RUNNING인지 확인합니다. 시작을 완료하는 데 최대 30초가 소요될 수 있습니다.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

삭제

인스턴스 예약 가이드를 완료한 후에는 Google Cloud에서 만든 리소스가 할당량을 차지하여 이후에 요금이 청구되지 않도록 이 리소스를 삭제할 수 있습니다. 다음 섹션에서는 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

Cloud 스케줄러 작업 삭제

  1. Cloud Console에서 Cloud Scheduler 페이지로 이동합니다.

    Cloud 스케줄러 페이지로 이동.

  2. 작업 옆에 있는 체크박스를 클릭합니다.

  3. 페이지 상단의 삭제 버튼을 클릭하고 삭제를 확인합니다.

Pub/Sub 주제 삭제

  1. Cloud Console에서 Pub/Sub 페이지로 이동합니다.

    Pub/Sub 페이지로 이동

  2. 주제 옆에 있는 체크박스를 클릭합니다.

  3. 페이지 상단의 삭제를 클릭하고 삭제를 확인합니다.

Cloud Functions 함수 삭제

  1. Cloud Console에서 Cloud Functions 페이지로 이동합니다.

    Cloud Functions 페이지로 이동.

  2. 함수 옆에 있는 체크박스를 클릭합니다.

  3. 페이지 상단의 삭제 버튼을 클릭하고 삭제를 확인합니다.

Compute Engine 인스턴스 삭제

Compute Engine 인스턴스를 삭제하려면 다음 안내를 따르세요.

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 삭제할 인스턴스의 체크박스를 클릭합니다.
  3. 삭제를 클릭하여 인스턴스를 삭제합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

  • 다른 Google Cloud 기능을 직접 사용해보세요. 가이드 살펴보기.