Compute Engine VM 시작 또는 중지 예약


이 튜토리얼에서는 리소스 라벨을 사용해서 정기적으로 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 Scheduler의 환경을 설정합니다.

    환경 설정

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

    API 사용 설정

애플리케이션 아키텍처

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

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

위치 요구사항

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

  • Compute Engine 인스턴스: 리전 및 영역에 나열된 모든 리전에서 지원됩니다.
  • Cloud Functions: 위치에 나열된 리전에서 지원됩니다.
  • Pub/Sub 메시지: Pub/Sub이 글로벌 서비스이므로 전역적으로 지원됩니다.
  • Pub/Sub 대상을 사용하는 Cloud Scheduler 작업: 모든 Google Cloud 위치에서 지원됩니다.

Pub/Sub 대신에 HTTP는 어떤가요?

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

이 튜토리얼에서는 이전에 이 메서드가 HTTP를 사용하는 것보다 더 안전했기 때문에 Pub/Sub를 Cloud Functions 트리거로 사용합니다. 하지만 HTTP도 유효한 선택이며 이제 인증을 요구하여 보안을 유지할 수 있습니다.

Cloud Functions 보안에 대한 자세한 내용은 Cloud Functions 보안 개요를 참조하세요. HTTP 트리거와 Pub/Sub 트리거 간의 비교는 Cloud Functions 트리거 문서를 참조하세요.

Compute Engine 인스턴스 설정

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.
  2. 인스턴스 만들기를 클릭합니다.
  3. 이름dev-instance로 설정합니다.
  4. 라벨에서, 라벨 추가를 클릭합니다.
  5. 라벨 추가를 클릭합니다.
  6. env를 입력하고 dev를 입력합니다.
  7. 리전에서 us-west1을 선택합니다.
  8. 영역에서 us-west1-b를 선택합니다.
  9. 저장을 클릭합니다.
  10. 페이지 하단에 있는 만들기를 클릭합니다.

gcloud

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

Pub/Sub에서 트리거한 함수를 Cloud Functions를 통해 배포

함수 만들기 및 배포

Console

시작 함수를 만듭니다.

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

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * 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 project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.start({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // 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 = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      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": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^8.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^16.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.0.0"
      }
    }
    
  17. 페이지 하단의 배포를 클릭합니다.

중지 함수를 만듭니다.

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

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * 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 project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.stop({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // 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 = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      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": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^8.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^16.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.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 nodejs18 \
    --allow-unauthenticated
gcloud functions deploy stopInstancePubSub \
    --trigger-topic stop-instance-event \
    --runtime nodejs18 \
    --allow-unauthenticated

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

Console

인스턴스 중지

  1. Google Cloud 콘솔에서 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. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
    VM 인스턴스 페이지로 이동합니다.

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

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

인스턴스 시작

  1. Google Cloud 콘솔에서 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. Google Cloud 콘솔에서 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 Scheduler 작업 설정

작업 만들기

Console

시작 작업을 만듭니다.

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

중지 작업을 만듭니다.

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

gcloud

시작 작업을 만듭니다.

gcloud 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' \
    --location us-central1

중지 작업을 만듭니다.

gcloud 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' \
    --location us-central1

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

Console

인스턴스 중지

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

인스턴스 시작

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.
    Cloud Scheduler 페이지로 이동
  2. 이름이 startup-dev-instances인 작업에 대해 페이지 오른쪽 끝에 있는 지금 실행 버튼을 클릭합니다.
  3. Google Cloud 콘솔에서 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
    

삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

Cloud Scheduler 작업 삭제

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다.

    Cloud Scheduler 페이지로 이동

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

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

Pub/Sub 주제 삭제

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

    Pub/Sub 페이지로 이동

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

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

Cloud Functions를 통해 배포된 함수 삭제

  1. Google Cloud 콘솔에서 Cloud Functions 페이지로 이동합니다.

    Cloud Functions 페이지로 이동.

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

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

Compute Engine 인스턴스 삭제

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

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

    VM 인스턴스로 이동

  2. 삭제할 인스턴스.
  3. 인스턴스를 삭제하려면 추가 작업을 클릭하고, 삭제를 클릭한 후 안내를 따르세요.

프로젝트 삭제

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

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

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

    리소스 관리로 이동

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

다음 단계

  • Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기 Cloud 아키텍처 센터 살펴보기