Google Cloud Platformに戻る

Cloud SDK

Cloud SDKとは

Cloud SDK(Software Development Kit)は、Google Cloud Platform (GCP) のリソースを管理するためのツールセットです。コマンドラインインターフェース、ライブラリ、APIを提供し、開発者やIT管理者がGCPサービスを効率的に操作、自動化、管理できるようにします。Cloud SDKを使用することで、GCPリソースの作成、設定、デプロイ、監視などの操作をローカル環境から簡単に実行できます。

Cloud SDKの主な特徴

Cloud SDKのインストール

Cloud SDKは、様々なプラットフォームにインストールできます:

インストール方法

macOSへのインストール

# Homebrewを使用したインストール
brew install --cask google-cloud-sdk

# インタラクティブインストーラを使用したインストール
curl https://sdk.cloud.google.com | bash

Linuxへのインストール

# Debian/Ubuntuの場合
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update && sudo apt-get install google-cloud-sdk

# インタラクティブインストーラを使用したインストール
curl https://sdk.cloud.google.com | bash

Windowsへのインストール

# インストーラを使用したインストール
# https://cloud.google.com/sdk/docs/install-sdk#windows からインストーラをダウンロードして実行

# Chocolateyを使用したインストール
choco install gcloudsdk

Dockerを使用したインストール

# 公式Dockerイメージの使用
docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:latest
docker run -ti gcr.io/google.com/cloudsdktool/google-cloud-cli:latest

初期設定

Cloud SDKをインストールした後、初期設定を行います:

初期化コマンド

gcloud init

認証の設定

gcloud auth login

プロジェクトの設定

gcloud config set project PROJECT_ID

デフォルトリージョンとゾーンの設定

gcloud config set compute/region REGION
gcloud config set compute/zone ZONE

gcloudコマンドラインツール

gcloudは、Cloud SDKの主要なコマンドラインツールで、GCPリソースを管理するための様々なコマンドを提供します:

基本的なgcloudコマンド

ヘルプの表示

gcloud help
gcloud COMMAND --help

コンポーネントの管理

# インストール済みコンポーネントの一覧表示
gcloud components list

# コンポーネントのインストール
gcloud components install COMPONENT_ID

# コンポーネントの更新
gcloud components update

構成の管理

# 現在の構成の表示
gcloud config list

# 構成の設定
gcloud config set PROPERTY VALUE

# 構成のエクスポート
gcloud config configurations export CONFIG_FILE

主要なgcloudコマンドグループ

コマンドグループ 説明
gcloud compute Compute Engineリソース(VM、ディスク、ネットワークなど)の管理
gcloud app App Engineアプリケーションの管理とデプロイ
gcloud functions Cloud Functionsの管理とデプロイ
gcloud container Google Kubernetes Engineクラスタの管理
gcloud storage Cloud Storageの管理(gsutilの代替)
gcloud iam Identity and Access Management(IAM)の設定
gcloud kms Cloud Key Management Serviceの管理
gcloud sql Cloud SQLインスタンスの管理
gcloud pubsub Pub/Subトピックとサブスクリプションの管理
gcloud run Cloud Runサービスの管理とデプロイ

gcloudコマンドの例

Compute Engineインスタンスの作成

gcloud compute instances create my-instance \
  --machine-type=e2-medium \
  --zone=us-central1-a \
  --image-family=debian-10 \
  --image-project=debian-cloud

App Engineアプリケーションのデプロイ

gcloud app deploy app.yaml

Cloud Functionsのデプロイ

gcloud functions deploy my-function \
  --runtime=nodejs14 \
  --trigger-http \
  --entry-point=helloWorld

GKEクラスタの作成

gcloud container clusters create my-cluster \
  --num-nodes=3 \
  --zone=us-central1-a

bqコマンドラインツール

bqは、BigQueryを操作するためのコマンドラインツールです:

基本的なbqコマンド

クエリの実行

bq query --use_legacy_sql=false 'SELECT * FROM `project.dataset.table` LIMIT 10'

データセットの作成

bq mk --dataset project:dataset

テーブルの作成

bq mk --table project:dataset.table field1:STRING,field2:INTEGER

データのロード

bq load --source_format=CSV dataset.table data.csv field1:STRING,field2:INTEGER

gsutilコマンドラインツール

gsutilは、Cloud Storageを操作するためのコマンドラインツールです:

基本的なgsutilコマンド

バケットの作成

gsutil mb gs://my-bucket

ファイルのアップロード

gsutil cp local-file.txt gs://my-bucket/

ファイルのダウンロード

gsutil cp gs://my-bucket/remote-file.txt local-file.txt

バケット内のファイル一覧表示

gsutil ls gs://my-bucket

ファイルの削除

gsutil rm gs://my-bucket/file-to-delete.txt

Cloud SDKのプログラム的な使用

Cloud SDKは、様々なプログラミング言語向けのクライアントライブラリを提供しています:

クライアントライブラリの例

Pythonでの使用例

from google.cloud import storage

# クライアントの初期化
storage_client = storage.Client()

# バケットの一覧表示
buckets = storage_client.list_buckets()
for bucket in buckets:
    print(bucket.name)

# バケットからファイルのダウンロード
bucket = storage_client.bucket('my-bucket')
blob = bucket.blob('my-file.txt')
blob.download_to_filename('local-file.txt')

Node.jsでの使用例

const {Storage} = require('@google-cloud/storage');

// クライアントの初期化
const storage = new Storage();

async function listBuckets() {
  const [buckets] = await storage.getBuckets();
  console.log('Buckets:');
  buckets.forEach(bucket => {
    console.log(bucket.name);
  });
}

listBuckets();

Javaでの使用例

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class StorageExample {
  public static void main(String[] args) {
    // クライアントの初期化
    Storage storage = StorageOptions.getDefaultInstance().getService();
    
    // バケットの一覧表示
    System.out.println("Buckets:");
    for (Bucket bucket : storage.list().iterateAll()) {
      System.out.println(bucket.getName());
    }
  }
}

Cloud SDKのローカルエミュレータ

Cloud SDKには、一部のGCPサービスをローカルでエミュレートするためのエミュレータが含まれています:

主要なエミュレータ

Datastoreエミュレータの起動

gcloud beta emulators datastore start

Pub/Subエミュレータの起動

gcloud beta emulators pubsub start

環境変数の設定

$(gcloud beta emulators datastore env-init)

Cloud SDKのベストプラクティス

Cloud SDKを効果的に活用するためのベストプラクティス:

一般的なベストプラクティス

自動化のベストプラクティス

トラブルシューティングのヒント

Cloud SDKのユースケース

Cloud SDKは以下のようなユースケースに適しています:

ユースケース例:自動デプロイスクリプト

アプリケーションの自動デプロイスクリプト

#!/bin/bash
# アプリケーションの自動デプロイスクリプト

# 変数の設定
PROJECT_ID="my-project"
REGION="us-central1"
SERVICE_NAME="my-service"
IMAGE_NAME="gcr.io/${PROJECT_ID}/${SERVICE_NAME}:latest"

# プロジェクトの設定
gcloud config set project ${PROJECT_ID}

# Dockerイメージのビルドとプッシュ
docker build -t ${IMAGE_NAME} .
docker push ${IMAGE_NAME}

# Cloud Runへのデプロイ
gcloud run deploy ${SERVICE_NAME} \
  --image=${IMAGE_NAME} \
  --platform=managed \
  --region=${REGION} \
  --allow-unauthenticated

echo "デプロイが完了しました!"

まとめ

Cloud SDK は、Google Cloud Platform のリソースを管理するための強力なツールセットです。コマンドラインインターフェース、ライブラリ、API を提供し、開発者や IT 管理者が GCP サービスを効率的に操作、自動化、管理できるようにします。

Cloud SDK の主な利点は以下の通りです:

Cloud SDK を効果的に活用するには、定期的な更新、構成プロファイルの活用、サービスアカウントの使用、フィルタリングの活用、出力形式の指定などのベストプラクティスを適用することが重要です。また、繰り返し行うタスクはスクリプトで自動化し、CI/CD パイプラインに統合することで、開発と運用の効率を向上させることができます。