はじめに
試験に出そうなコマンドをメモ
項目 | 内容 |
gcloud projects | プロジェクトアクセスポリシーの作成、管理 |
gcloud services | APIとサービスの有効・無効、一覧表示 |
gcloud info | 現在のgcloud環境の情報を出力 |
gcloud config | Cloud SDKのパラメータを編集、出力 |
gcloud iam | I AM サービスのアカウントと鍵を管理 |
gcloud compute | GCEresourceを作成、操作 |
gcloud app | AppEngineでアプリケーションを作成、操作 |
gcloud sql | Cloud SQLでデータベースを作成、操作 |
cbt | Cloud Bigtableのコマンド |
bq | Bigqueryコマンド |
gsutil | Cloud Storage コマンド |
gcloud beta | ベータバージョンのgcloudコマンド |
プロジェクト管理
### 新規プロジェクトの作成
gcloud projects create [ProjectID]
例.
gcloud projects create example-foo-bar-1 --name="Happy project" --labels=type=happy
ロールやサービスアカウントの管理はgcloud iam roles/service-accounts
メンバーの管理についてはgcloud projects add-iam-policy-bindingを使う
### プロジェクトのIAMポリシーバインディングを追加する
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=ROLE \
[--condition=[KEY=VALUE,…] | --condition-from-file=CONDITION_FROM_FILE] [GCLOUD_WIDE_FLAG …]
API管理
APIの管理
### 現在有効化のAPI
$ gcloud services list
NAME TITLE
bigquery.googleapis.com BigQuery API
bigquerystorage.googleapis.com BigQuery Storage API
cloudapis.googleapis.com Google Cloud APIs
clouddebugger.googleapis.com Cloud Debugger API
cloudtrace.googleapis.com Cloud Trace API
compute.googleapis.com Compute Engine API
datastore.googleapis.com Cloud Datastore API
logging.googleapis.com Cloud Logging API
monitoring.googleapis.com Cloud Monitoring API
oslogin.googleapis.com Cloud OS Login API
servicemanagement.googleapis.com Service Management API
serviceusage.googleapis.com Service Usage API
sql-component.googleapis.com Cloud SQL
sqladmin.googleapis.com Cloud SQL Admin API
storage-api.googleapis.com Google Cloud Storage JSON API
storage-component.googleapis.com Cloud Storage
storage.googleapis.com Cloud Storage API
### 利用可能な一覧表示
$ gcloud services list --available
NAME TITLE
abusiveexperiencereport.googleapis.com Abusive Experience Report API
acceleratedmobilepageurl.googleapis.com Accelerated Mobile Pages (AMP) URL API
accessapproval.googleapis.com Access Approval API
accesscontextmanager.googleapis.com Access Context Manager API
actions.googleapis.com Actions API
(大量に出てくるので省略)
### APIの有効化、無効化
$ gcloud services enable/disable gkeconnect.googleapis.com
gcloud環境情報
gcloud環境の詳細情報を表示。
gcloud config listと比較し、もっと全体的な内容が詳細に表示される。
$ gcloud info
Google Cloud SDK [327.0.0]
Platform: [Linux, x86_64] uname_result(system='Linux', node='cs-935311840682-default-boost-6txpd', release='5.4.89+', version='#1 SMP Thu Feb 4 19:44:58 PST 2021', machine='x86_64', processor='')
Locale: ('en_US', 'UTF-8')
Python Version: [3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0]]
Python Location: [/usr/bin/python3]
Site Packages: [Disabled]
Installation Root: [/usr/lib/google-cloud-sdk]
Installed Components:
gsutil: [4.58]
app-engine-java: [1.9.85]
beta: [2021.02.05]
kind: [0.7.0]
skaffold: [1.19.0]
app-engine-go: [1.9.71]
app-engine-python-extras: [1.9.91]
kpt: [0.37.1]
…
Cloud SDK設定

コンフィグセット
### コンフィグセットの一覧を表示
gcloud config configurations list
### コンフィグセット(testconfig)を作成
gcloud config configurations create testconfig
### 任意の設定の有効化
gcloud config configurations activate CONFIGURATION_NAME [GCLOUD_WIDE_FLAG …]
gcloud configの変更
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
cloudshell-4474 False test-project-304205
testconfig True
$ gcloud config configurations activate cloudshell-4474
Activated [cloudshell-4474].
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
cloudshell-4474 True test-project-304205
testconfig False
gcloud configの設定内容
$ gcloud config list
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 30
[core]
account = xxx@gmail.com
disable_usage_reporting = True
project = test-project-304205
[metrics]
environment = devshell
gcloud config set でコンフィグセットの設定を変更する。
### アカウントの変更
$ gcloud config set core/account アカウント名
### プロジェクトの変更
$ gcloud config set project プロジェクト名
### デフォルトリージョンの設定
$ gcloud config set compute/region asia-northeast1
### デフォルトゾーンの設定
$ gcloud config set compute/zone asia-northeast1-a
### 変更後の確認
$ gcloud config list
(省略)
[compute]
gce_metadata_read_timeout_sec = 30
region = asia-northeast1
zone = asia-northeast1-a
権限管理関連
I AMサービスのコマンドは大きく以下の2種類
コマンド | 内容 |
gcloud iam roles | 役割(ロール)の作成、操作 |
gcloud iam service-accounts | サービスアカウントの作成、操作 |
rolesの概要
コマンド | 内容 |
gcloud iam roles copy | create a role from an existing role |
gcloud iam roles create | create a custom role for a project or an organization |
gcloud iam roles delete | delete a custom role from an organization or a project |
gcloud iam roles describe | show metadata for a role |
gcloud iam roles list | 親組織またはプロジェクトで定義されている役割を一覧表示する |
gcloud iam roles undelete | 組織またはプロジェクトからカスタムロールを元に戻す |
gcloud iam roles update | IAMカスタムロールを更新する |
サービスアカウントの概要
コマンド | 内容 |
gcloud iam service-accounts add-iam-policy-binding | IAMサービスアカウントにIAMポリシーバインディングを追加する |
gcloud iam service-accounts remove-iam-policy-binding | サービスアカウントからIAMポリシーバインディングを削除する |
gcloud iam service-accounts set-iam-policy | サービスアカウントのIAMポリシーを設定する |
gcloud iam service-accounts create | プロジェクトのサービスアカウントを作成する |
gcloud iam service-accounts delete | プロジェクトからサービスアカウントを削除する |
gcloud iam service-accounts describe | show metadata for a service account from a project |
gcloud iam service-accounts get-iam-policy | サービスアカウントのIAMポリシーを取得する |
gcloud iam service-accounts keys | サービスアカウントキーを管理する gcloud iam service-accounts keys create gcloud iam service-accounts keys delete gcloud iam service-accounts keys list |
gcloud iam service-accounts list | プロジェクトのすべてのサービスアカウントを一覧表示します |
gcloud iam service-accounts sign-blob | マネージドサービスアカウントキーでBLOBに署名する |
gcloud iam service-accounts update | IAMサービスアカウントを更新する |
gcloud compute
gcloud computeの中でよく使いそうなコマンド
コマンド | 内容 |
gcloud compute instances | GCEインスタンスの読み込み、操作 |
gcloud compute networks | GCEネットワークのリスト、作成、削除 |
gcloud compute ssh | GCEインスタンスへのSSH接続 例. gcloud beta compute ssh \ –zone “asia-northeast1-b” \ –project “test-project-304205” \ “instance-1” |
gcloud compute firewall-rules | GCE FWルールのリスト、作成、更新、削除 |
フィルター式は覚えておくこと。
By default, instances from all zones are listed.
The results can be narrowed down using a filter: --filter="zone:( ZONE … )"
.
インスタンス関連
### 4 vCPUs and 5 GB MEMORY のインスタンスを作成
$ gcloud compute instances create my-vm --custom-cpu 4 --custom-memory 5
### プリエンプティブルVMを作成する際のオプション(--preemptible)
$ gcloud compute instances create my-vm --zone us-central1-b --preemptible
### インスタンスの一覧を表示。(フィルター付き)
$ gcloud compute instances list --filter="zone:(us-central1-b asia-northeast1-a)"
ディスクのアタッチ
gcloud compute instances attach-disk INSTANCE_NAME --disk=DISK \
[--boot] \
[--csek-key-file=FILE] \
[--device-name=DEVICE_NAME] \
[--disk-scope=DISK_SCOPE; default="zonal"] \
[--force-attach] \
[--mode=MODE; default="rw"] \
[--zone=ZONE] \
[GCLOUD_WIDE_FLAG …]
VM作成時のオプション例
オプションに複数のキーバリューを取る場合、カンマで繋げる。
gcloud beta compute --project=test-project-11223 instances create instance-1 \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=default \
--network-tier=PREMIUM \
--maintenance-policy=MIGRATE \
--service-account=xxx@developer.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \
--image=debian-10-buster-v20210217 \
--image-project=debian-cloud \
--boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=instance-1 \
--create-disk=mode=rw,size=500,type=projects/test-project-11223/zones/us-central1-a/diskTypes/pd-balanced,name=disk-1,device-name=disk-1 \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any
サブネット
gcloud compute networks subnets list --filter="region:(asia-northeast1 asia-northeast2)"
App Engine
App Engineはgcloudから操作を行う。
ここでは代表的なコマンドを記載しておく。

### リージョン内にアプリケーション環境を構築
$ gcloud app create [--region=REGION] [GCLOUD_WIDE_FLAG …]
### アプリケーションのデプロイ
$ gcloud app deploy app.yaml \
--project test-project-11223
Cloud SQL
Databaseの操作はgcloudでもある程度実施は可能
### connects to a Cloud SQL instance
gcloud sql connect INSTANCE \
[--database=DATABASE, -d DATABASE] \
[--user=USER, -u USER] \
[GCLOUD_WIDE_FLAG …]
### creates a database for a Cloud SQL instance
gcloud sql databases create DATABASE --instance=INSTANCE, -i INSTANCE \
[--async] \
[--charset=CHARSET] \
[--collation=COLLATION] \
[GCLOUD_WIDE_FLAG …]
### lists databases for a Cloud SQL instance
gcloud sql databases list --instance=INSTANCE, -i INSTANCE \
[--filter=EXPRESSION] \
[--limit=LIMIT] \
[--page-size=PAGE_SIZE] \
[--sort-by=[FIELD,…]] \
[--uri] \
[GCLOUD_WIDE_FLAG …]
実行例.
$ gcloud sql databases list --instance=testsql
NAME CHARSET COLLATION
information_schema utf8 utf8_general_ci
mysql utf8 utf8_general_ci
performance_schema utf8 utf8_general_ci
sys utf8 utf8_general_ci
### creates a backup of a Cloud SQL instance
gcloud sql backups create --instance=INSTANCE, -i INSTANCE \
[--async] \
[--description=DESCRIPTION] \
[--location=LOCATION] \
[GCLOUD_WIDE_FLAG …]
### 高可用性のCloudSQLインスタンスをフェイルオーバーします(要高可用性オプション)
gcloud sql instances failover INSTANCE \
[--async] \
[GCLOUD_WIDE_FLAG …]
Cloud Bigtable
########
初期化
########
### 最初のクラスタでインスタンスを作成する
cbt createinstance <instance-id> <display-name> <cluster-id> <zone> <num-nodes> <storage type>
########
作成
########
### テーブルを作成する
cbt createtable <table> [families=family[:(maxage=<d> | maxversions=<n>)],...] [splits=split,...]
例.
cbt createtable my-table
### 列ファミリーを作成する
cbt createfamily <table> <family>
########
表示
########
### テーブル内の行数を数える
cbt count <table>
### テーブルと列ファミリーを一覧表示する
cbt ls List tables
cbt ls <table> List column families in <table>
########
設定
########
### セルの値を設定する。
cbt set <table> <row> family:column=val
########
削除
########
### 列内のすべてのセルを削除する
cbt deletecolumn <table> <row> <family> <column> [app-profile=<app profile id>]
### 列ファミリーを削除する
cbt deletefamily <table> <family>
### 行を削除する
cbt deleterow <table> <row> [app-profile=<app profile id>]
### テーブルを削除する
cbt deletetable <table>
Bigqueryコマンド

Bigqueryにはグローバルフラグとコマンド固有フラグがあり、順序を守らないといけない。
以下のような順番でコマンドをつなげる必要がある。
bq \
--global_flag argument \
--global_flag argument \
bq_command \
--command-specific_flag argument \
--command-specific_flag argument
bq mk コマンド (makeの略称?)
mk コマンドを実行すると、データセット、テーブル、ビュー、マテリアライズド ビュー、
転送構成など、さまざまな BigQuery リソースが作成されます。
### データセットを作成します
bq mk --dataset
### テーブルを作成します
bq mk --table
### 転送構成を作成します。
bq mk --transfer_config
### 指定されたデータ転送構成を使用して、指定された時間または時間範囲でデータ転送実行を作成します。
bq mk --transfer_run
### ビューを作成します。
bq mk --view
bq queryコマンド
指定された SQL クエリを実行するクエリジョブが作成されます。
よく出題されるのは、dryrunオプション。
テーブルの情報を出力するもの、基本はクエリを書いてbq queryで実行する。
--dry_run
指定すると、クエリは検証されますが実行されません。
bq --location=location query \
--use_legacy_sql=false \
'query'
例.
bq query \
--destination_table mydataset.mytable \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC'
bq lsコマンド
Bigqueryのリソースを表示するコマンド
### デフォルトプロジェクトのデータセット一覧を表示
bq ls
### 匿名データセットも含めてすべて表示
bq ls -a
### デフォルトプロジェクトのデータセット一覧を表示(整形された出力)
bq ls --format=pretty
### デフォルトプロジェクトのデータセット一覧を表示(整形された出力)(プロジェクト指定)
bq ls --format=prettyjson --project_id project名
gsutilコマンド
gsutilコマンド
バケットの作成
### Bucketの作成 mb - Make buckets
gsutil mb -c standard -l us-east1 -b on gs://my-awesome-bucket/
オプション | 内容 |
-c | ストレージクラスを指定. Default is “Standard”. |
-l | ロケーション |
-b | 均一なバケットレベルのアクセス設定を指定. Default is “off” 従来、「IAM」と「GCSのACL設定」の2つで管理しているところ、 「IAM」の管理のみに一本化するオプション |
ファイルのアップロード、ダウンロード
### ローカルファイルのアップロード
gsutil cp *.txt gs://my-bucket
### ローカルへのダウンロード
gsutil cp gs://my-bucket/*.txt .
### フォルダを再帰的にアップロード
gsutil cp -r dir gs://my-bucket
ファイル一覧の表示
### デフォルトプロジェクトのバケットを表示
gsutil ls
### バケットの中のファイルを表示
gsutil ls gs://bucket
バージョニングはバケットに対して設定する必要がある。
また、設定はgsutilコマンドを使ってAPIから実施する。
### バージョニング有効化
gsutil versioning set on gs://BUCKET_NAME
### バージョニング無効化
gsutil versioning set off gs://BUCKET_NAME
### バージョニング設定状況確認
gsutil versioning get gs://BUCKET_NAME
### ファイルの世代情報を確認するにはgsutil ls に -a オプションをつける
gsutil ls -a gs://BUCKET_NAME
ベータバージョンのコマンド
試験で出題されるかは不明だが、念のため
### プロジェクトを請求先アカウントにリンクする
gcloud beta billing projects link PROJECT_ID \
--billing-account=ACCOUNT_ID \
[GCLOUD_WIDE_FLAG …]
コメント