GCP コマンドメモ

GCP

はじめに

試験に出そうなコマンドをメモ

項目内容
gcloud projectsプロジェクトアクセスポリシーの作成、管理
gcloud servicesAPIとサービスの有効・無効、一覧表示
gcloud info現在のgcloud環境の情報を出力
gcloud configCloud SDKのパラメータを編集、出力
gcloud iamI AM サービスのアカウントと鍵を管理
gcloud computeGCEresourceを作成、操作
gcloud appAppEngineでアプリケーションを作成、操作
gcloud sqlCloud SQLでデータベースを作成、操作
cbtCloud Bigtableのコマンド
bqBigqueryコマンド
gsutilCloud 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  |  Cloud SDK Documentation  |  Google Cloud

コンフィグセット

### コンフィグセットの一覧を表示
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 copycreate a role from an existing role
gcloud iam roles createcreate a custom role for a project or an organization
gcloud iam roles deletedelete a custom role from an organization or a project
gcloud iam roles describeshow metadata for a role
gcloud iam roles list親組織またはプロジェクトで定義されている役割を一覧表示する
gcloud iam roles undelete組織またはプロジェクトからカスタムロールを元に戻す
gcloud iam roles updateIAMカスタムロールを更新する

サービスアカウントの概要

コマンド内容
gcloud iam service-accounts add-iam-policy-bindingIAMサービスアカウントに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 describeshow 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 updateIAMサービスアカウントを更新する

gcloud compute

gcloud computeの中でよく使いそうなコマンド

コマンド内容
gcloud compute instancesGCEインスタンスの読み込み、操作
gcloud compute networksGCEネットワークのリスト、作成、削除
gcloud compute sshGCEインスタンスへのSSH接続
例.
gcloud beta compute ssh \
–zone “asia-northeast1-b” \
–project “test-project-304205” \
“instance-1”
gcloud compute firewall-rulesGCE 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  |  Cloud SDK のドキュメント  |  Google Cloud
### リージョン内にアプリケーション環境を構築
$ 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  |  Google Cloud

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 …]

コメント

タイトルとURLをコピーしました