Enable the Cloud Scheduler API

進行状況を確認

/ 10

Create two static IP addresses

進行状況を確認

/ 20

Create an instance with static IP address created earlier.

進行状況を確認

/ 20

Deploy cloud function

進行状況を確認

/ 20

Create App Engine Application

進行状況を確認

/ 10

Run a cloud schedular job

進行状況を確認

/ 10

Confirm the deletion of unused IP address

進行状況を確認

/ 10

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP646

Google Cloud セルフペース ラボ

概要

このラボでは、Cloud Run functionsCloud Scheduler を使用して、活用されていないクラウド リソースを特定してクリーンアップします。Google Cloud では、ロードバランサまたは仮想マシン(VM)インスタンスに接続されている静的 IP アドレスには課金されません。静的 IP アドレスが予約されている場合、それが使用されていなくても、1 時間単位で課金されます。静的 IP アドレスと大規模な動的プロビジョニングが不可欠なアプリでは、このコストが時間の経過とともに極めて大きくなる可能性があります。

演習内容

  • 静的外部 IP アドレスを使用する Compute Engine VM と、それとは別の未使用の静的外部 IP アドレスを作成する
  • Cloud Run 関数をデプロイして未使用のアドレスを特定する
  • HTTP トリガーで起動する関数のスケジュールを設定するために、Cloud Scheduler ジョブを作成する

アーキテクチャ

次の図は、このラボの最初のセクションで使用するアーキテクチャを示しています。このラボでは、Cloud Run 関数のスケジュールを設定し、未使用の IP アドレスを特定してクリーンアップします。

アーキテクチャの図

設定と要件

このセクションでは、ラボの実施に必要なインフラストラクチャと ID を構成します。

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. API の有効化とリポジトリのクローン作成

  1. Cloud Shell で、Cloud Scheduler API を有効にします。

    gcloud services enable cloudscheduler.googleapis.com : Cloud Scheduler API が有効になるまでには少し時間がかかります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

Cloud Scheduler API を有効にする
  1. リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/gcf-automated-resource-cleanup.git && cd gcf-automated-resource-cleanup/
  2. 環境変数を設定し、リポジトリ フォルダを $WORKDIR にします。このラボに関連するすべてのコマンドを $WORKDIR で実行します。

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) export region={{{project_0.default_region | Region}}} WORKDIR=$(pwd)

タスク 2. IP アドレスの作成

  1. Cloud Shell で unused-ip ディレクトリに移動します。

    cd $WORKDIR/unused-ip
  2. IP アドレスの名前を変数としてエクスポートします。

    export USED_IP=used-ip-address export UNUSED_IP=unused-ip-address
  3. 2 つの静的 IP アドレスを作成します。

    gcloud compute addresses create $USED_IP --project=$PROJECT_ID --region={{{project_0.default_region | Region}}} gcloud compute addresses create $UNUSED_IP --project=$PROJECT_ID --region={{{project_0.default_region | Region}}}

    このラボでは リージョンを使用しますが、別のリージョンを選択することもできます。その場合、このラボの以降の操作で、指定したリージョンを一貫して参照してください。

  4. 2 つのアドレスが作成されたことを確認します。

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

    出力にある RESERVED ステータスは、この IP アドレスが使用されていないことを示しています。

    NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS unused-ip-address 35.232.144.85 EXTERNAL {{{project_0.default_region | Region}}} RESERVED used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} RESERVED

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

2 つの静的 IP アドレスを作成する
  1. 使用されている IP アドレスを環境変数として設定します。

    export USED_IP_ADDRESS=$(gcloud compute addresses describe $USED_IP --region={{{project_0.default_region | Region}}} --format=json | jq -r '.address')

タスク 3. VM の作成

  1. Cloud Shell でインスタンスを作成します。

    gcloud compute instances create static-ip-instance \ --zone={{{project_0.default_zone | Zone}}} \ --machine-type=e2-medium \ --subnet=default \ --address=$USED_IP_ADDRESS

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

作成した静的 IP アドレスを使うインスタンスを作成する。
  1. IP アドレスの 1 つが現在使用中であることを確認します。

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

    出力は次のようになります。

    NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS unused-ip-address 35.232.144.85 EXTERNAL {{{project_0.default_region | Region}}} RESERVED used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} IN_USE

タスク 4. Cloud Run 関数のコードの確認

  • Cloud Shell でコードのメインの部分を出力します。

    cat $WORKDIR/unused-ip/function.js | grep "const compute" -A 31

出力は次のとおりです。

const compute = new Compute(); compute.getAddresses(function(err, addresses){ // gets all addresses across regions if(err){ console.log("there was an error: " + err); } if (addresses == null) { console.log("no addresses found"); return; } console.log("there are " + addresses.length + " addresses"); // iterate through addresses for (let item of addresses){ // get metadata for each address item.getMetadata(function(err, metadata, apiResponse) { // if the address is not used: if (metadata.status=='RESERVED'){ // compute age by converting ISO 8601 timestamps to Date var creationDate = new Date(metadata.creationTimestamp); var currDate = new Date(); var addressAge = Math.floor((currDate - creationDate)/86400e3);; // delete address item.delete(function(err, operation, apiResponse2){ if (err) { console.log("could not delete address: " + err); } }) }

上のコードサンプルでは、次の点が重要になります。

  • compute.getAddresses(function(err, addresses) では、getAddresses メソッドを使用して、プロジェクト内のすべてのリージョンの IP アドレスを取得します。

  • item.getMetadata(function(err, metadata, apiResponse) では、各 IP アドレスのメタデータを取得して、その STATUS フィールドを確認します。

  • if ((metadata.status=='RESERVED') & (calculateAge(metadata.creationTimestamp) >= ageToDelete)){ では、IP アドレスが使用中かどうかを確認し、ヘルパー関数を使用して期間を計算し、その期間を定数(ラボでは 0 に設定)と比較します。

  • item.delete(function(err, operation, apiResponse2){ では、IP アドレスを削除します。

タスク 5. Cloud Run 関数のデプロイ

  1. Cloud Functions API を無効にします。

    gcloud services disable cloudfunctions.googleapis.com
  2. Cloud Functions API を再度有効にします。

    gcloud services enable cloudfunctions.googleapis.com
  3. appspot サービス アカウントに artifactregistry.reader 権限を追加します。[PROJECT_ID] は Qwiklabs のプロジェクト ID に置き換えてください。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member="serviceAccount:[PROJECT_ID]@appspot.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
  4. Cloud Shell で Cloud Run 関数をデプロイします。

    gcloud functions deploy unused_ip_function --gen2 --trigger-http --runtime=nodejs20 --region={{{project_0.default_region | Region}}}
    • プロンプトが表示されたら、「Y」と入力して未承認の呼び出しを許可します。
    注: Cloud Run 関数のデプロイには 2~5 分ほどかかります。所要時間はリージョンによって異なります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

Cloud Run 関数をデプロイする
  1. トリガー URL を環境変数として設定します。

    export FUNCTION_URL=$(gcloud functions describe unused_ip_function --region={{{project_0.default_region | Region}}} --format=json | jq -r '.url')

タスク 6. Cloud Run 関数のスケジュール設定とテスト

  1. Cloud Scheduler を使用するために、Cloud Shell で App Engine アプリを作成します。

    gcloud app create --region {{{project_0.startup_script.app_region | REGION}}}
  2. Cloud Shell で、毎日午前 2 時に Cloud Run 関数を実行する Cloud Scheduler タスクを作成します。

    gcloud scheduler jobs create http unused-ip-job \ --schedule="* 2 * * *" \ --uri=$FUNCTION_URL \ --location={{{project_0.default_region | Region}}}

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

App Engine アプリケーションを作成する
  1. ジョブを手動でトリガーしてテストします。

    gcloud scheduler jobs run unused-ip-job \ --location={{{project_0.default_region | Region}}}

出力は表示されません。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

Cloud Scheduler のジョブを実行する
  1. 未使用の IP アドレスが削除されたことを確認します。

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

出力は次のようになります。

NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} IN_USE

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。

未使用の IP アドレスが削除されたことを確認する

お疲れさまでした

このラボでは、次のタスクを実行しました。

  • 静的外部 IP アドレスを使用する Compute Engine VM と、それとは別の未使用の静的外部 IP アドレスを作成しました。
  • 未使用のアドレスを特定するために、Cloud Run 関数をデプロイしました。
  • HTTP トリガーで起動する関数のスケジュールを設定するために、Cloud Scheduler ジョブを作成しました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 1 月 15 日

ラボの最終テスト日: 2025 年 1 月 15 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。

ラボを開始するには、この簡単な手順を完了してください。