arrow_back

Google Cloud Storage での費用の最適化

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Google Cloud Storage での費用の最適化

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP649

Google Cloud セルフペース ラボ

概要

このラボでは、Cloud FunctionsCloud Scheduler を使用して、活用されていないクラウド リソースを特定してクリーンアップします。具体的には、Cloud Monitoring アラート ポリシーから Cloud Functions の関数をトリガーすることで、ストレージ バケットをより安価なストレージ クラスに移行します。

Google Cloud では、ストレージ オブジェクトのライフサイクル ルールが適用されており、作成日やライブ状態などの複数の属性に基づいて、オブジェクトが別のストレージ クラスに自動的に移動されます。ただし、これらのルールではオブジェクトがアクセスされたかどうかは考慮されません。一定の期間、アクセスのない新しいオブジェクトは、Nearline Storage に移したほうが良いこともあります。

演習内容

  • 2 つのストレージ バケットを作成し、ファイルを serving-bucket に追加して、トラフィックを生成する。
  • バケット使用率を可視化する Cloud Monitoring ダッシュボードを作成する。
  • アイドル状態のバケットをより安価なストレージ クラスに移行するために、Cloud Functions の関数をデプロイして、Cloud アラート ポリシーから受信した通知をシミュレートするためのペイロードでトリガーする。

設定と要件

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

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

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

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

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

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

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

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

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

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

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

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

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

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

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

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

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

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

出力:

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

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

アーキテクチャ

次の図では、Cloud Monitoring アラート ポリシーから Cloud Functions の関数をトリガーし、ストレージ バケットをより安価なストレージ クラスに移行しています。

ストレージ バケットの移行に関する図

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

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

    gcloud services enable cloudscheduler.googleapis.com

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

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

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

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) WORKDIR=$(pwd)
  3. オープンソースの負荷生成ツールである Apache Bench をインストールします。

    sudo apt-get install apache2-utils -y

タスク 2. Cloud Storage バケットの作成とファイルの追加

  1. Cloud Shell で、migrate-storage ディレクトリに移動します。

    cd $WORKDIR/migrate-storage
  2. Cloud Storage バケット serving-bucket を作成します。このバケットは、後でストレージ クラスを変更するために使用します。

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) gsutil mb -c regional -l {{{project_0.default_region|REGION}}} gs://${PROJECT_ID}-serving-bucket

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

Cloud Storage バケットを作成する
  1. バケットを公開します。

    gsutil acl ch -u allUsers:R gs://${PROJECT_ID}-serving-bucket
  2. バケットにテキスト ファイルを追加します。

    gsutil cp $WORKDIR/migrate-storage/testfile.txt gs://${PROJECT_ID}-serving-bucket
  3. ファイルを公開します。

    gsutil acl ch -u allUsers:R gs://${PROJECT_ID}-serving-bucket/testfile.txt
  4. ファイルにアクセスできることを確認します。

    curl http://storage.googleapis.com/${PROJECT_ID}-serving-bucket/testfile.txt

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

    this is a test

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

Cloud Storage バケットを公開する
  1. データを提供しない、idle-bucket という名前の 2 番目のバケットを作成します。

    gsutil mb -c regional -l {{{project_0.default_region|REGION}}} gs://${PROJECT_ID}-idle-bucket

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

Cloud Storage バケットをもう 1 つ作成する

タスク 3. モニタリング ダッシュボードの作成

Monitoring の指標スコープを作成する

Google Cloud プロジェクトに関連付けられた Monitoring の指標スコープを設定します。次の手順に沿って、Monitoring を無料でお試しいただける新しいアカウントを作成します。

  • Cloud コンソール で、ナビゲーション メニューナビゲーション メニュー アイコン) > [Monitoring] をクリックします。

Monitoring の [概要] ページが開いたら、指標スコープのプロジェクトの準備は完了です。

  1. 左側のパネルで、[ダッシュボード] > [+ CREATE DASHBOARD] をクリックします。

  2. ダッシュボードに「Bucket Usage」と名前を付けます。

  3. [ウィジェットを追加] をクリックします。

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

  5. [ウィジェットのタイトル] に「Bucket Access」と入力します。

  6. [指標] > [指標を選択] でリソースとして「gcs_bucket」と入力し、指標として [GCS Bucket] > [Api] > [Request count] を選択して [適用] をクリックします。

注: [Request count] の指標が見つからない場合は、[アクティブなリソースと指標のみを表示] をオフにします。

[指標を選択] ダッシュボード

  1. [フィルタを追加] をクリックします。

次のようにして、メソッド名でフィルタします。

  • [Label] で [method] を選択します。
  • [Comparison] で [=(equals)] を選択します。
  • [Value] に「ReadObject」と入力します。
  • [適用] をクリックします。
  1. [by] プルダウン リストで [bucket_name] を選択して [OK] をクリックし、バケット名で指標をグループ化します。

バケット内のオブジェクト アクセスを監視できるよう、Cloud Monitoring を構成しました。Cloud Storage バケットへのトラフィックがないため、グラフにはデータが表示されません。

タスク 4. 提供バケットでの負荷の生成

Monitoring が構成されたので、Apache Bench を使用してトラフィックを serving-bucket に送信します。

  1. Cloud Shell で、提供バケット内のオブジェクトにリクエストを送信します。
ab -n 10000 http://storage.googleapis.com/$PROJECT_ID-serving-bucket/testfile.txt
  1. 左側のパネルで [ダッシュボード] をクリックし、先ほど作成したダッシュボードの名前(Bucket Usage)をクリックして Bucket Access グラフを表示します。
注: このタブをすでに閉じてしまった場合は、ナビゲーション メニュー > [Monitoring] を選択してから、左側のパネルの [ダッシュボード] > [Bucket Usage] をクリックします。 注: [Bucket Usage] ダッシュボードにグラフが表示されるまで、少なくとも 1 分間待機する必要があります。
  1. トラフィックの詳細を表示します。

[Bucket Usage] ダッシュボード

タスク 5. Cloud Function の関数の確認とデプロイ

  1. Cloud Shell で次のコマンドを入力して、ストレージ バケットを Nearline Storage クラスに移行するための Cloud Functions のコードを表示します。

    cat $WORKDIR/migrate-storage/main.py | grep "migrate_storage(" -A 15

    次のように出力されます。

    def migrate_storage(request): # process incoming request to get the bucket to be migrated: request_json = request.get_json(force=True) # bucket names are globally unique bucket_name = request_json['incident']['resource_name'] # create storage client storage_client = storage.Client() # get bucket bucket = storage_client.get_bucket(bucket_name) # update storage class bucket.storage_class = "NEARLINE" bucket.patch()

    この関数はリクエストで渡されたバケット名を使用して、ストレージ クラスを Nearline に変更します。

  2. Cloud Functions の関数をデプロイします。

    gcloud functions deploy migrate_storage --trigger-http --runtime=python37 --region {{{project_0.default_region | Region}}}

    プロンプトが表示されたら「Y」と入力して、未認証の呼び出しを許可します。

  3. 次のセクションで使用する環境変数にトリガー URL を取得します。

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

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

Cloud Functions の関数をデプロイする

タスク 6. アラート自動化のテストと検証

  1. アイドル状態のバケットに名前を付けます。

    export IDLE_BUCKET_NAME=$PROJECT_ID-idle-bucket
  2. incident.json ファイルを使用して、デプロイした Cloud Function の関数にテスト通知を送信します。

    envsubst < $WORKDIR/migrate-storage/incident.json | curl -X POST -H "Content-Type: application/json" $FUNCTION_URL -d @-

    次のように出力されます。

    OK

    出力は改行で終了せずに、すぐにコマンド プロンプトが続きます。

  3. アイドル状態のバケットが Nearline Storage に移行されたことを確認します。

    gsutil defstorageclass get gs://$PROJECT_ID-idle-bucket

    次のように出力されます。

    gs://-idle-bucket: NEARLINE

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

バケットが Nearline Storage に移行されたことを確認する

お疲れさまでした

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

  • 2 つの Cloud Storage バケットを作成する。
  • バケットの 1 つにオブジェクトを追加する。
  • バケット オブジェクト アクセスを監視するように Cloud Monitoring を構成する。
  • オブジェクトを Regional バケットから Nearline バケットに移行するための Cloud Functions コードを確認する。
  • Cloud Functions の関数をデプロイする。
  • Cloud Monitoring アラートを使用して Cloud Functions の関数をテストする。

クエストを完了する

このセルフペース ラボは、「Optimizing your Google Cloud Costs」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、こちらのクエストに登録すれば、すぐにクレジットを受け取ることができます。
受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

ネットワーク ティア - ネットワーク コストの最適化」に進んでクエストを続けるか、以下のおすすめのラボをご確認ください。

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

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

マニュアルの最終更新日: 2023 年 10 月 25 日

ラボの最終テスト日: 2023 年 10 月 26 日

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