|

2023-10-19

Tips

Google Cloudで使えるCLIコマンドリスト Cloud Storage編

Google CloudCLIGoogle Cloud Storage

CLIでのGoogle Cloud Storage操作について

Google CloudとCLI

皆さんクラウドサービス使ってますか?

クラウドサービスを使う上で欠かせないもの、それは何か…

そう、CLI操作ですね。

 

属人化回避のためにはIaC(Infrastructure as Code)に持ち込むのが鉄板かと思いますが、その前段であったり、PoCレベルのもので、そこまでしなくても…な時もあるかと思います。

最近はなんでもかんでもGUIベースで設定が出来てしまいますが、CLI操作が癖づけられていれば作業ログも残しやすいですよね。

 

これは個人的な感覚ですが、その中でもGoogle Cloudは特にCLI操作を癖づけておいたほうが何かと便利に感じます。

というわけで、これから定期的によく使うCLIコマンドをまとめたものを備忘録を兼ねて記事にしていこうと思います。

本記事はGoogle Cloud Storage編です。

 

Google Cloud Storageに対してのCLI操作

Google Cloud Storageに対してCLI操作を行う場合は、一応2つの選択肢があります。

一つは、gcloudツールの gcloud storage コマンドを使う方法。

もう一つは、gsutilツールの gsutil コマンドを使う方法です。

 

それぞれのドキュメントは下記の通りです。

 

gsutilツールの公式ドキュメントをちゃんと読んでいる聡明な皆さんにおいては常識かと思いますが、

「gsutilを使用するべきかどうか」という項目がちゃんとあって、

通常は、gsutil コマンドの代わりに gcloud storage コマンドを使用する必要があります。

と優しく記述してあります。

 

さらにいうと、

gsutil ツールは従来の Cloud Storage CLI であり、最小限のメンテナンスが行われます。

gsutil ツールは、Cloud Storage の新機能の使用をサポートしていません。

最速のアップロードとダウンロードを達成するには、gcloud storage コマンドで手動での最適化を少なくする必要があります。

とも記述してくださっています。

 

そもそも、 gcloud storage コマンド自体のGAが2022年9月だったこともあり、多くのCLI戦士達が未だに gsutil コマンドを使用していますが、これからCLI戦士を目指す方は基本的に gcloud storageコマンドを覚えれば良いです。

( gsutil のほうがコマンドが短くて好き…な人もいるかもしれませんが)

 

そういった歴史もあり、 gsutil はただの gcloud storage のwrapperというわけでなく、別実装のような状態です。オープンソースで公開されていて、コードを見ると普通に勉強になります。(たとえば gsutil mb コマンドはgustilのリポジトリのmb.pyの実装を参照すればわかります。)

 

先ほどの引用の中でアップロード・ダウンロードの速度についても言及されていますが、これはGoogle Cloud公式ブログの「gcloud コマンドラインを使用した Cloud Storage の転送速度の向上」の記事に下記言及があります。

10 GB のファイルでは、gcloud storage は gsutil よりもダウンロードで 94%、アップロードで 57% 高速でした。

思っている以上の差がありますね。

 

まあ色々書きましたが、要するに、「gcloud storage」コマンド使おうぜということです。

gsutil とともに生きてきた方には、 gsutilgcloud storage の比較表をまとめてくださっているZennの「GAになった gcloud storage コマンドと gsutil コマンドのサブコマンドを比較してみた」の記事がウルトラおすすめです。

 

よく使うコマンドリスト

そんなわけで、よく使うコマンドを3つ厳選してまとめてます。

いっぱい書いたらそれはもうgcloud storageのドキュメントを読めという話になるので、このシリーズでは基本的に3〜5つに絞ることにします。頑張って覚えてみようというきっかけになれば幸いです。

 

gcloud sotrage buckets create

バケット作成用のコマンドです。

gcloud storage buckets create gs://my-bucket --location=asia-northeast1

のように使用します。 gs://URLを複数記述してまとめて作成することも可能です。

location指定がないと us になっていることには注意が必要です。バケットにはcoldline, nearlineといったストレージクラスの設定等もありますが、これらも当然オプションで指定できます。費用にも直結するかと思うので、オプションに気を配るべきコマンドですね。

オプション等はgcloud storage buckets createの公式ドキュメントもご参照下さい。

 

gcloud storage cp

オブジェクトアップロード/ダウンロードに使える優れものです。マスト中のマストだと思います。

gcloud storage cp *.txt gs://my-bucket

のように使用します。

bash等のcp コマンド同様に、コピー元(source)、コピー先(destination)の順で指定を行います。

ここでいくつかポイントがあります。

S3のような外部クラウドベンダもサポートしていること

gcloud storage cp gs://my-bucket/*.txt s3://my-bucket

--recursive オプションを付与することでディレクトリをコピーできること

gcloud storage cp --recursive dir gs://my-bucket

などです。

このあたり、やりたいことが出てきた場合にgoogle storage cp の公式ドキュメントを参照されると良いかと思います。

 

gcloud storage ls

ストレージの内容を表示するコマンドです。

特定のプロジェクトのバケットのリストが見たければ( --project の指定がない場合はデフォルトプロジェクト)

gcloud storage ls --project=my-project

バケットの中身を覗きたければ

gcloud storage ls gs://my-bucket

*** によるワイルドカード指定も可能です!(下記は txt ファイルを全て抜き出す例)

gcloud storage ls gs://my-bucket/**/*.txt

のように使用します。

オプション等はgoogle storage ls の公式ドキュメントもご参照下さい。

 

その他

そのほかでこれは知っておいてもいいかも、というところでいうと、

ファイル削除を行う gcloud storage rm やファイル移動…というか主にprefix変更に使う gcloud storage mv はぜひ知っておくと便利なシーンがあると思います。

特定の拡張子や条件に合致するファイルに対しての操作が手軽に行えるのが何よりの魅力ですね。

 

まとめ

今回はGoogle Cloud Storageを扱う上でよく使うCLIコマンドをまとめてみました。

 

gsutil を普段使っていた…という方々は、ぜひこの機会に gcloud storage コマンドへ移行を進めてみていただけると良いかと思います。

まだ全然GUIでやってたわ…という方々もぜひトライしてみてはいかがでしょうか。

 

いずれもふだんのShellの感覚で操作が出来るようにコマンドが組み立てられているので、慣れたら gcloud storageコマンドなしの生活は考えられなくなるはず…です。

 

はじめのうちはChat GPT等活用してコマンドを引き出していく、でもいいと思うので、少しずつ慣れていけると良いですね。(情報が古かったりする場合もあるので注意が必要ですが)

私自身も可能な限りクセづけていければと思っています。使わないと覚えられないですからね…

 


この記事の著者

プロフィール画像

伴 拓也

朝日放送グループホールディングス株式会社 DX・メディアデザイン局 デジタル・メディアチーム

アプリケーションからインフラ、ネットワーク、データエンジニアリングまで幅広い守備範囲が売り。最近はデータ基盤の構築まわりに力を入れて取り組む。 主な実績として、M-1グランプリ敗者復活戦投票システムのマルチクラウド化等。