概要
GCPのCompute Engineのインスタンスの起動、停止、接続。Cloud Storageへのファイルの追加、削除を行う。
バージョン情報
- Google Cloud SDK 268.0.0
- gsutil version: 4.45
Cloud SDKのインストール
下記参照
https://cloud.google.com/sdk/downloads?hl=ja
init
下記を実行して認証を行う。
実行する前にプロジェクトを作っておくと選択肢に表示される。
$ gcloud init
途中でデフォルトのリージョンを設定する選択肢が表示される。日本のリージョンを使いたい場合はasia-northeast1(東京)かasia-northeast2(大阪)の中から選ぶ。
https://cloud.google.com/compute/docs/regions-zones/
設定した内容はconfig listで見られる。
$ gcloud config list
表示内容例
[compute] region = asia-northeast1 zone = asia-northeast1-b [core] account = hoge@example.com disable_usage_reporting = True project = your_project_name Your active configuration is: [default]
インスタンスの立ち上げ
参考ページ
https://cloud.google.com/ai-platform/deep-learning-vm/docs/quickstart-cli?hl=ja
上記ページではこんな設定がされている。
export IMAGE_FAMILY="tf-latest-cu92" export ZONE="us-west1-b" export INSTANCE_NAME="my-new-instance" export INSTANCE_TYPE="n1-standard-8" gcloud compute instances create $INSTANCE_NAME \ --zone=$ZONE \ --image-family=$IMAGE_FAMILY \ --image-project=deeplearning-platform-release \ --maintenance-policy=TERMINATE \ --accelerator="type=nvidia-tesla-v100,count=8" \ --machine-type=$INSTANCE_TYPE \ --boot-disk-size=120GB \ --metadata="install-nvidia-driver=True"
例文がTensorFlow向けになっているあたりがGoogleらしい。
image-familyで利用するイメージを決定する。
一般的なイメージは下記で取得できる。CentOSとかUbuntuとかRHELとか。
$ gcloud compute images list --standard-images --uri
ここではcentos7を利用してみる。上記コマンドでFAMILYがcentos-7、PROJECTがcentos-cloudという名前で表示されたのでそれを指定する。
machine-typeは一番安いn1-standard-1(1時間6円強)を指定します。
projectとzoneは先ほどのinitでデフォルトが指定されているものとして省略します。
maintenance-policyはTERMINATE(default)で。詳細は下記。
https://cloud.google.com/compute/docs/instances/live-migration
gcloud compute instances create example-instance \ --image-family="centos-7" \ --image-project="centos-cloud" \ --machine-type="n1-standard-1" \ --boot-disk-size=10GB
これでインスタンスが立ち上がった。
ssh接続
GCPではIPアドレス等を指定しなくてもgcloudコマンドで接続できる。
$ gcloud compute ssh example-instance
上記コマンドを実行すると ~/.ssh/google_compute_engine に鍵が生成されて、インスタンスのauthorized_keysに登録される。
なので下記のように実行しても入れる。gcloudコマンドを使った方がIPが変わっても使えるところが便利。
$ ssh -i ~/.ssh/google_compute_engine {インスタンスのIP}
IPアドレスは下記コマンドなどで確認できる。
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
example-instance asia-northeast1-b n1-standard-1 10.xxx.xxx.xxx xxx.xxx.xxx.xxx RUNNING
describeでもっと詳細な情報も確認できる。
$ gcloud compute instances describe example-instance
インスタンスの停止、再開、リセット、削除
stopで停止。
$ gcloud compute instances stop example-instance
startで再開。
$ gcloud compute instances start example-instance
resetで再起動。
$ gcloud compute instances reset example-instance
deleteで削除。
$ gcloud compute instances delete example-instance
Cloud Storageのバケット操作
Cloud Storageの操作はgsutilを使う。SDKインストール時に一緒に入れられている。
バケットの生成はmb(Make buckets)。
gsutilでのパス指定は gs:// で始まるuriで指定する。
$ gsutil mb gs://example_20191025031407
バケットの削除はrb(Remove buckets)。
$ gsutil rb gs://example_20191025031407
ファイルのアップロード/ダウンロード
ファイルのアップロード/ダウンロードはどちらもcpで実行できる。
まずはローカルにexample.txtというファイルを作って、先ほど生成したバケットの直下に置く例。Cloud Storage上の置きたい場所をuriで指定するだけ。
# アップロードするファイルを作成 echo "example text" > example.txt # アップロード gsutil cp example.txt gs://example_20191025031407/
ダウンロードも同じ。
# ダウンロード
gsutil cp gs://example_20191025031407/example.txt example2.txt
ls
lsで指定パス配下の一覧が見れる。
$ gsutil ls gs://example_20191025031407/ gs://example_20191025031407/example.txt
ls -lでサイズやタイムスタンプ等も見れる。
$ gsutil ls -l gs://example_20191025031407/ 13 2019-10-24T18:46:29Z gs://example_20191025031407/example.txt TOTAL: 1 objects, 13 bytes (13 B)
このあたりはlinuxのコマンドにかなり近い作りになっているので助かる。cpやlsだけでなくcat、du、mv、rmなどもそのまんまだし。
大文字の -L で指定するとさらに詳細な結果が取れる。
ファイルの中身を標準出力
catでファイルの中身が表示できる。
$ gsutil cat gs://example_20191025031407/example.txt example text
ファイルの移動
mvで移動。
$ gsutil mv gs://example_20191025031407/example.txt gs://example_20191025031407/example2.txt $ gsutil ls gs://example_20191025031407/ example text
ファイルの削除
rm。
$ gsutil rm gs://example_20191025031407/example2.txt
-r オプションでディレクトリの削除もできる。
ちなみにバケット直下(gs://example_20191025031407)を -r で削除するとバケットの削除もできるらしい。ちょっと怖い。
改定履歴
Author: Masato Watanabe, Date: 2019-11-02, 記事投稿