Help us understand the problem. What is going on with this article?

Google Cloud SDKコマンド チートシート

自分メモです

実際に使ったコマンドを随時更新していきます。
詳細は公式リファレンスをご参照下さい。

INDEX

gcloudコマンド

公式リファレンス

$ gcloud init

初期化

gcloud init


$ gcloud auth ~

ログイン

gcloudコマンドをつかってGCPへアクセスするための認証

gcloud auth login

ログアウト

gcloud auth revoke


$ gcloud projects ~

プロジェクトの一覧

gcloud projects list

プロジェクト作成

gcloud projects create プロジェクトID --name プロジェクト名

プロジェクト削除

gcloud projects delete プロジェクトID

サービスアカウントへ権限付与 / 削除

gcloud projects add-iam-policy-binding プロジェクトID \
--member serviceAccount:サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com \
--role roles/storage.admin # <- 例えばストレージ管理者
gcloud projects remove-iam-policy-binding プロジェクトID \
--member serviceAccount:サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com \
--role roles/storage.admin # <- 例えばストレージ管理者

スクリーンショット 2020-02-10 0.16.18.png

roleリスト

https://cloud.google.com/iam/docs/understanding-roles?hl=ja#service-accounts-roles


プロジェクトに紐付いている権限を一覧表示

gcloud projects get-iam-policy プロジェクトID


$ gcloud config ~

プロジェクトの切り替え

gcloud config set project プロジェクトID

リージョン設定

gcloud config set compute/region us-central1

ゾーン設定

gcloud config set compute/zone us-central1-a

Cloud ML Engineの設定

ローカルで予測/トレーニングジョブに使用するPythonインタープリタ

gcloud config set ml_engine/local_python $(which python3)

設定解除

gcloud config unset ml_engine/local_python

プロジェクトのプロパティを表示

gcloud config list

# [compute]
# region = us-central1
# zone = us-central1-a
# [core]
# account = anata_no_address@gmail.com
# disable_usage_reporting = True
# project = anata_no_project_id
# 
# Your active configuration is: [default]
gcloud config list project

# [core]
# project = anata_no_project_id
# 
# Your active configuration is: [default]

ログイン中のアカウントリスト

gcloud config list account

# [core]
# account = anata_no_address@gmail.com
# 
# Your active configuration is: [default]

$ gcloud iam ~

サービスアカウント作成

※ サービスアカウントネームとサービスアカウントディスプレイネームに注意
スクリーンショット 2020-02-10 0.10.39.png

gcloud iam service-accounts create サービスアカウントネーム \
                                   --display-name サービスアカウントディスプレイネーム \
                                   --description  説明文

サービスアカウント削除

gcloud iam service-accounts delete サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com

サービスアカウントキー作成

gcloud iam service-accounts keys create path/to/キー名.json \
--iam-account サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com

$ gcloud services ~

API(サービス)のリストを表示

プロジェクトで利用可能なAPIのリスト

gcloud services list --available

プロジェクトで有効になっているAPIのリスト

gcloud services list --enabled

API(サービス)を有効化

gcloud services enable ml.googleapis.com # <- APIネーム

API(サービス)を無効化

gcloud services disable ml.googleapis.com # <- APIネーム

$ gcloud ai-platform ~

https://cloud.google.com/sdk/gcloud/reference/ai-platform/?hl=ja

ローカルでトレーニング

gcloud ai-platform local train \
  --package-path working \ # トレーニングのファイルが入ったディレクトリのパス
  --module-name working.predict \ # ディレクトリ名.ファイル名(--package-pathを指定していない場合は、ターミナル上のカレントディレクトリから記述。指定した場合はターミナル上のカレントディレクトリ配下から記述。)
  --job-dir local-training-output # プログラム内で利用する場合に使う。

※ モジュールファイル内に記述したsys.path[0]にモジュールファイルのディレクトリではなく、ターミナルのカレントディレクトリが入ってくる。import時にfromのパスに注意

トレーニングジョブの送信

gcloud ai-platform jobs submit training $JOB_NAME \
  --package-path working/ \
  --module-name working.predict \
  --region us-central1 \
  --python-version 3.5 \
  --runtime-version 1.13 \
  --job-dir gs://バケット名/ディレクトリ名 \
  --stream-log

モデルリソース作成

gcloud ai-platform models create モデルリソース名 \
  --regions us-central1 \

モデルリソース削除

gcloud ai-platform models delete モデルリソース名 \

バージョンリソース作成

gcloud ai-platform versions create バージョンリソース名 \
--model モデルリソース名 \
--runtime-version 1.14 \
--python-version 3.5 \
--framework xgboost \
--origin gs://バケット名/path/to/dir/ # <- model.pklなどがあるディレクトリ

ローカルで予測

gcloud ai-platform local predict \
--model-dir path/to/local/models/dir/ \
--json-instances path/to/local/jsondir/predict.json \ # <- 予測対象となるインプットデータ
--framework xgboost \
--signature-name model.pkl

.pycファイルでエラー吐くのでこうしておくと便利

rm /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/*.pyc && \
gcloud ai-platform local predict \
--model-dir path/to/local/models/dir/ \
--json-instances path/to/local/jsondir/predict.json \
--framework xgboost \
--signature-name model.pkl

ai-platformで予測

gcloud ai-platform predict \
--model モデルリソース名 \
--version バージョンリソース名 \
--json-instances ローカルのjsonパス # <- 予測対象となるインプットデータ


gsutilコマンド

公式リファレンス

$ gsutil mb

バケット作成

gsutil mb -l us-central1 gs://バケット名

$ gsutil rm

バケット削除

gsutil rm -r gs://バケット名

$ gsutil ls

バケット内を表示

gsutil ls -la gs://バケット名

$ gsutil cp

ファイルのアップロード

gcs上にディレクトリがない場合は作成される。

gsutil cp ローカルファイルのパス gs://バケット名/ディレクトリ名/ファイル名

-m オプションで複数ファイルをマルチスレッドで並列アップロード

gsutil -m cp local/path/*.csv gs://バケット名/ディレクトリ名/

ファイルのダウンロード

gsutil cp gs://バケット名/ディレクトリ名/ファイル名 ローカルファイルのパス

ファイルの削除

gsutil rm -f gs://バケット名/ディレクトリ名/ファイル名

ディレクトリの削除

gsutil rm -r gs://バケット名/ディレクトリ名/

こんなエラー出たら

ml_engine/ 配下の.pycファイルを削除
※パスは環境により変わることがあります

ERROR: (gcloud.ai-platform.local.predict) RuntimeError: Bad magic number in .pyc file

rm /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/*.pyc


bqコマンド

公式リファレンス

$ bq mk

データセット作成

bq --location US mk --dataset(-d) プロジェクトID:データセットID

$ bq rm

データセット削除

bq rm --dataset(-d) プロジェクトID:データセットID

テーブル削除

bq rm --table(-t) データセットID.テーブル名

$ bq ls

テーブルの確認

bq ls

プロジェクトの確認

bq ls -p

$ bq load

csv読み込み

--autodetect -> 自動でスキーマ設定
データセット名.テーブル名 -> テーブル名はファイル名と同じがよいか??

bq load \
--autodetect \
--source_format CSV \
データセット名.テーブル名 \
gs://バケット名/path/to/file.csv

bq query

GUIでクエリを発行する際はmaximum bytes billedを設定しておく
-> クエリが制限を超えたバイト数を読み取ると、課金されずにクエリが失敗する
※ limit句は表示を制御するだけなので費用は変わらない
BigQuery のおすすめの方法: 費用を抑える

クエリ結果からテーブル作成

デフォルト プロジェクト以外のプロジェクトにあるテーブルにクエリ結果を書き込むには、project_id:dataset.table の形式でプロジェクトIDを先頭に追記

bq query \
--destination_table データセット名.テーブル名 \
--use_legacy_sql=false \
'
SELECT
  *
FROM
  hoge
'
komiya_____
https://twitter.com/rescued_cat BOTで保護猫情報を撒き散らかしてます。 Python + Selenium + Heroku 実装です。 Kaggle銅 × 1
data-learning-guild
データ分析人材のキャリア構築を支援するためのオンラインコミュニティです
https://data-learning.com/guild
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした