CLI

Quick links:

Cloud SDK

https://cloud.google.com/sdk/docs?hl=ja

gcloud, gsutil, bq CLIもこれに含まれる。

Install

https://cloud.google.com/sdk/install

Docker Image

https://cloud.google.com/sdk/docs/downloads-docker

参考:

bq

BigQuery操作CLI

リファレンス: https://cloud.google.com/bigquery/docs/reference/bq-cli-reference?hl=ja

cp

Examples:

bq --location=LOCATION cp [OPTIONS] \
  project_id:dataset.source_table project_id:dataset.destination_table
Optionデフォルト機能
-a, --append_tablefalse指定すると元のテーブルがコピーされて既存の宛先テーブルに追加される
-f, --forcefalse指定すると宛先テーブルが存在する場合にプロンプト表示なしで上書きされる
-n, --no_clobberfalse指定すると宛先テーブルが存在する場合は上書きしない

load

ドキュメント:

Examples:

# TSVファイルをロードする
bq load --source_format=CSV --encoding=UTF-8 --field_delimiter="\t" [dataset].[table] SOURCE [SCHEMA]
# ↑SOURCEはファイルでもGCSバケットでもいい

Specs:

  • 要素が改行を含むデータを取り込むには、該当要素を --quote 文字(デフォルトは " )で囲み、 --allow_quoted_newlines (デフォルトfalse)を指定する
    • 更に、該当要素が元々 " を含む場合、 "" でエスケープする必要がある。

参考:

ls

Examples:

# 現在のユーザのジョブを表示
bq ls -j myproject
# すべてのユーザのジョブを表示
bq ls -j -a myproject
# 直近10件のジョブを表示
bq ls -j -a -n 10 myproject

mk

Syntax:

bq mk \
--table \
--expiration integer \
--description description \
--label key:value, key:value \
project_id:dataset.table \
schema
  • schema … field:data_type,field:data_type という形式のインラインスキーマ定義か、ローカルマシン上のJSONスキーマファイルのパス

show

# schemaをJSON形式で表示
bq show --schema --format=prettyjson PROJECT_ID:DATASET.TABLE

# ジョブの詳細情報を取得
bq show --format=prettyjson -j JOB_ID

参考:

cbt

Bigtable操作CLI

gcloud

NOTE:

  • 新しめの機能の場合、 gcloud beta ...gcloud alpha ... にしかコマンドがなかったり、 beta ...alpha ... を付けることで結果が変わることがある

認証

See also #auth

## 初期設定(認証込)
gcloud init

参考:

環境変数

Variable用途
CLOUDSDK_ACTIVE_CONFIG_NAME利用するconfigurationを設定する。See #configurations

全体で使えるオプション

リファレンスで「GCLOUD WIDE FLAGS」とされているもの。

https://cloud.google.com/sdk/gcloud/reference に簡単な説明がある。

例:

  • --configuration … コマンドを実行するconfiguration. See #configurations
  • --project … コマンドの対象となるプロジェクトをプロジェクトIDで指定する
  • --verbosity=VERBOSITY … ログレベルの設定。デフォルトは warning. 他に、debug, info, error, critical, noneが設定可能

filter

https://cloud.google.com/sdk/gcloud/reference/topic/filters

結果をリストで出力するコマンドに対し、フィルタ条件を記すことができる。

Examples:

gcloud compute instances list --filter="machineType:f1-micro"
gcloud compute instances list \
  --filter="zone ~ ^us AND -machineType:f1-micro"
gcloud compute instances list --filter="tags.items=my-tag"

gcloud projects list \
  --format="table(projectNumber,projectId,createTime)" \
  --filter="createTime>=2018-01-15"

gcloud config configurations list --filter='IS_ACTIVE=true'

format

https://cloud.google.com/sdk/gcloud/reference/topic/formats

結果を出力するコマンドに対し、出力フォーマットや、抽出するプロパティ、ヘッダの有無などを指定できる。

Examples:

# デフォルトのテーブル表示にボックス装飾を付ける
gcloud ... --format='[box]'
# JSON形式
gcloud ... --format=json
# YAML形式
gcloud ... --format=yaml
# ヘッダ無しCSV形式
gcloud ... --format='csv[no-heading]'

# ヘッダ無しCSVで、特定のカラム値だけ取得
gcloud config list --format="csv[no-heading](core.project,core.account)"

# 特定の値だけ取得
gcloud config configurations list --format='value(name)'
gcloud info --format='value(config.paths.global_config_dir)'

auth

https://cloud.google.com/sdk/gcloud/reference/auth

Examples:

# ログイン認証
gcloud auth login
# 現在認証済みのアカウント一覧
gcloud auth list
# サービスアカウントの認証
gcloud auth activate-service-account --key-file <KEYFILE>
# アクセストークンの表示
gcloud auth print-access-token

compute

https://cloud.google.com/sdk/gcloud/reference/compute

Examples:

## ssh
gcloud compute ssh [--project=<PROJECT>] [--zone=<ZONE>] [--internal-ip | --tunnel-through-iap] \
  <INSTANCE> [-- <SSH_ARGS>]

## scp
gcloud compute scp [--project=<PROJECT>] [--zone=<ZONE>] [--internal-ip | --tunnel-through-iap] \
  [--recurse] host:/path/to/dir path/to/local

## イメージの作成
gcloud compute images create my-image --source-disk my-vm-disk

instances

VM操作

Examples:

## 一覧
gcloud compute instances list
## 起動
gcloud compute instances start <INSTANCE> --zone=<ZONE>
## 停止
gcloud compute instances stop <INSTANCE> --zone=<ZONE>

## 作成
gcloud compute instances create my-instance \
  --project=my-project --zone=asia-northeast1-b \
  --no-address \ # 外部IPなし
  --custom-vm-type=n1 \ # N1インスタンス
  --custom-cpu=4 --custom-memory=8GB \ # リソースをカスタマイズする場合
  --image-project=another-project --image=my-image # 別プロジェクトのイメージを使う

参考:

regions

https://cloud.google.com/sdk/gcloud/reference/compute/regions

GCEリージョンの表示。

SYNPSIS:

gcloud compute regions list
gcloud compute regions describe REGION

ssl-certificates

https://cloud.google.com/sdk/gcloud/reference/compute/ssl-certificates

証明書の管理。マネージド証明書が作れる。

# 一覧表示
gcloud compute ssl-certificates list

# 詳細表示
gcloud compute ssl-certificates describe <name>

# 作成
gcloud compute ssl-certificates create <name> --domains=<fqdn1>,...

# 削除
gcloud compute ssl-certificates delete <name>

zones

https://cloud.google.com/sdk/gcloud/reference/compute/zones

GCEゾーンの表示。

SYNPSIS:

gcloud compute zones list
gcloud compute zones describe ZONE

config

https://cloud.google.com/sdk/gcloud/reference/config

Subcommands:

configurationという単位でプロパティ値のセットを管理できる。
configurations以外のサブコマンドは現在のconfigurationに対する操作を行う。

SYNOPSIS:

# 設定プロパティ値一覧表示
gcloud config list

# プロパティ値の取得
gcloud config get-value account
gcloud config get-value artifacts/location

# プロパティ値の設定
gcloud config set project my-project
gcloud config set compute/region asia-northeast1
gcloud config set compute/zone asia-northeast1-a

参考:

configurations

https://cloud.google.com/sdk/gcloud/reference/config/configurations

設定プロファイルの管理。各プロファイルでは、プロパティ値のセットを管理することができる。

SYNOPSIS:

# プロファイル一覧表示
gcloud config configurations list

# 表示
gcloud config configurations describe プロファイル名
# 作成
gcloud config configurations create プロファイル名
# 削除
gcloud config configurations delete プロファイル名
# 有効化
gcloud config configurations activate プロファイル名

Tips:

  • gcloudコマンドは現在アクティブなconfigurationの設定プロパティをデフォルト値として参照する
  • アクティブなconfigurationは --configuration 引数か、環境変数 CLOUDSDK_ACTIVE_CONFIG_NAME で上書き指定することもできる

参考:

container

https://cloud.google.com/sdk/gcloud/reference/container

GKEなどコンテナサービスに関する操作。

clusters

https://cloud.google.com/sdk/gcloud/reference/container/clusters

GKEクラスタの操作。

Examples:

gcloud container clusters list

# $KUBECONFIG or ~/.kube/config に認証情報を取得
gcloud container clusters get-credentials クラスタ名 [--region=REGION] [--project=PROJECT_ID]
create

https://cloud.google.com/sdk/gcloud/reference/container/clusters/create

オプション意味
–enable-master-authorized-networksMaster Authorized Networksの有効化
–master-authorized-networks=NETWORK,[NETWORK,…]Master Authorized Networksの設定
beta版(2020-05-13更新)

https://cloud.google.com/sdk/gcloud/reference/beta/container/clusters/create

オプション意味
–release-channel=CHANNELrapid, regular, stableのどれか。リリースチャネルの設定。

images

Examples:

# イメージ一覧
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

# イメージのタグ一覧
gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]

## 完全なダイジェストを表示
gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

# 既存イメージに別のタグをつける(下記いずれか)
gcloud container images add-tag \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

gcloud container images add-tag \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

Tips:

  • gcloud container images add-tag コマンドは、別プロジェクトのリポジトリへのイメージのコピーにも使える

関連ドキュメント:

endpoints

https://cloud.google.com/sdk/gcloud/reference/endpoints

APIサービスの作成・有効化・管理を行う。

services

https://cloud.google.com/sdk/gcloud/reference/endpoints/services

サービスの管理を行う。

Examples:

gcloud endpoints services list
gcloud endpoints services delete ENDPOINT

functions

https://cloud.google.com/sdk/gcloud/reference/functions

Cloud Functionsの操作

deploy

https://cloud.google.com/sdk/gcloud/reference/functions/deploy

Cloud Functionのデプロイ(作成・更新)

Example:

## cloud-buildsイベントをフックに動くFunctionのデプロイ
gcloud functions deploy <Function Name> \
  --trigger-topic cloud-builds \
  --runtime nodejs10 \
  --set-env-vars "FOO=foo,BAR=bar" \
  --project my-project

info

https://cloud.google.com/sdk/gcloud/reference/info

gcloudのconfigファイルのパスなど環境構成情報を表示する。

Examples:

gcloud info
# 特定の値を抽出
gcloud info --format='value(config.paths.global_config_dir)'
# ネットワーク接続や隠し属性のチェック
gcloud info --run-diagnostics
# 直近のログを表示
gcloud info --show-log

logging

https://cloud.google.com/sdk/gcloud/reference/logging

NOTE:

  • read, listなどのコマンド利用時には serviceusage.services.use 権限が必要

read

https://cloud.google.com/sdk/gcloud/reference/logging/read

Examples:

gcloud logging read --format json
gcloud logging read --limit=10 --order=asc
gcloud logging read 'timestamp>="2020-03-19T05:28:00Z" timestamp<="2020-03-25T05:33:28Z"'

※2020-04-20現在、 tail -f 相当のオプションはなさそう

projects

https://cloud.google.com/sdk/gcloud/reference/projects/

SYNOPSIS:

## プロジェクト一覧
gcloud projects list

参考

gsutil

Cloud Storage用のPython製CLI

バケット操作

Examples:

# バケット作成
gsutil mb -l asia gs://mybucket
# バケット削除
gsutil rb [-f] gs://<bucket_name>

iam

https://cloud.google.com/storage/docs/gsutil/commands/iam

# bucket/objectのIAM権限を取得
gsutil iam get gs://bucket[/path]
# bucket/objectにIAM権限を設定
gsutil iam set [-afRr] [-e <etag>] file gs://bucket[/path] ...
# bucket/objectにIAM権限を設定。メンバー単位で個々に設定
gsutil iam ch [-fRr] binding ... gs://bucket

関連項目:

ls

https://cloud.google.com/storage/docs/gsutil/commands/ls

バケットやオブジェクトのリスト表示。

Examples:

gsutil ls gs://my-bucket/

# 古いバージョンも含める
gsutil ls -a gs://my-bucket/

rm

https://cloud.google.com/storage/docs/gsutil/commands/rm

オブジェクトの削除。

Examples:

# subdir/ 直下のオブジェクトを削除
gsutil rm gs://bucket/subdir/*
# subdir/ 下の全てのオブジェクトを削除
gsutil rm gs://bucket/subdir/**
# 上と同じ
gsutil rm -r gs://bucket/subdir/

# 古いバージョンも含めて削除
gsutil rm -a gs://bucket/path/to/object
最終更新 2020-10-23: [gcp/{bq,cli}] Add memo (92a17252a)