こんにちは、G-gen の荒井です。今回は Google Cloud の中でも人気プロダクトでもある Cloud Storage をコマンドラインで操作する方法についてご紹介いたします。ユースケースを想定しコマンド例も記載しておりますので、是非ご自身の環境でもお試しください。
はじめに
gcloud storage とは
Cloud Storage をコマンドラインで操作する。と聞くと「gsutil コマンドでの操作」と思い浮かべる方も多いかと思います。しかし今回扱うコマンドは gcloud storage というコマンドです。
gsutil コマンドと同様の操作が可能な gcloud storage ですが、本コマンドは比較的最近(2022/9/13)GA(一般公開)となっております。また gcloud コマンドは、他のほとんどの Google Cloud プロダクトを操作できるコマンドラインツールです。そのため今後 Cloud Storage をコマンドラインで操作する際は gcloud storage コマンドが主流になっていきます。
今のうちから gcloud storage をチェックしておきましょう!
Cloud Storage がどういったサービスか再確認したい方は、以下の記事を確認いただければと思います。
またAWSで同様のサービスである S3 との比較についてはこちらの記事で解説しております。
gcloud storage の特徴
Cloud Storage を利用するユーザーについては、大容量のデータを Cloud Storage に転送することが多いと想定されます。
gcloud storage では、従来の gsutil に比べデータ転送性能が向上しています。Google Cloud 社のテストでは最大94%の高速も確認されています。
- 参考 : gcloud コマンドラインを使用した Cloud Storage の転送速度の向上
- 参考 : Introducing gcloud storage: up to 94% faster data transfers for Cloud Storage
gcloud (CLI) の操作方法
gcloud コマンドを利用するには、大きく分けて2つの方法があります。
Cloud Shell から操作
1つ目の方法は、Google Cloud の Cloud Console (管理コンソール) 上で Cloud Shell を起動し操作する方法です。事前準備が不要で、すぐ使い始められるのが特徴です。
ただし Cloud Shell の実行環境はクラウド上にあり、私たちのパソコンからインターネット経由でアクセスするため、ローカルデータをアップロードするには時間がかかることなどがデメリットといえます。
- 参考 : Cloud Shell を使用する
自身の端末から操作
2つ目の方法は、私たちの端末に gcloud CLI ツールをインストールし、自身の端末から操作する方法です。
こちらの操作方法では、自身の端末に gcloud CLI をインストールしたり、インターネット (Google Cloud) にアクセスできる環境が必要となります。詳細な手順は以下リンクを参照ください。
- 参考 : gcloud CLI をインストールする
- 参考 : gcloud CLI の初期化
gcloud storage メリット・デメリット
さて gcloud storage コマンド(CLI)を利用するにあたり、メリット・デメリットを整理しておきましょう。
システムを専門で扱っていない方にとってはただハードルが高いだけの操作方法なら扱いたくないですよね。しかし gcloud storage(CLI)を味方にすると次のようなメリットがあります。反面デメリットもありますが、それぞれどういったものか確認しましょう。
gcloud storage (CLI) メリット
CLI で操作する際のメリットを3つほどご紹介いたします。
作業時間の短縮・自動化
GUI での作業では画面に表示された項目や説明を確認しながら操作を行います。設定箇所が複数ページに渡っている場合や、対話型ウィザードで [次へ] [次へ] とクリックしていると、単純な設定でも意外と時間がかかってしまうことがあります。
その反面 CLI の gcloud storage では設定したい内容を構文にしたがって作成し、システムに指示するのみです。設定を行う際のページ遷移や対話型ウィザードに比べ、コマンドが設定に直結しているため大幅な作業時間の短縮が期待できます。
また、シェルスクリプト等に組み込むことで、繰り返しの作業や定期実行などを自動化することができます。このような場合に CLI のメリットが最大限に発揮されます。
操作ミスの減少
GUI操作では、マウスを使って操作することが多いと思います。マウスを使って指定のボタンをクリックしようと思ったら、ポップアップが出て間違ったボタンをクリックしてしまった!こういった経験をされたことのある方は多くいらっしゃるのではないでしょうか。(私も時々あります…)
CLI では設定前にコマンドを作成しておきます。その場でポチポチと作業を行う GUI に比べパラメータの確認を事前にじっくりすることができることや、コマンドラインではポップアップのような画面も表示されないため操作ミスの減少につながります。頻繁に設定作業を行う方にとって、CLI は強い味方です。
アップデートに左右されない
昨今IT業界の主流になりつつあるクラウドサービスですが、その特徴の一つとしてメーカー側の都合でシステムがアップデートされることが度々あります。セキュリティ強化による脆弱性の排除などのメリットもありますが、反面 GUI の画面が変更になることも度々あります。
機能追加アップデートによりボタン配置が変わってしまうことをはじめ、画面全体のデザインが変わってしまうこともしばしばあります。
社内にシステム利用方法を浸透させるため、時間をかけてスクリーンショット付きの手順書を作成したのに、アップデートにより使えなくなってしまった経験のある方も多いと思います。CLI 作業ではコマンドを指定箇所に入力するだけなので、こういったデザイン変更やボタン配置に影響されることがありません。
ただし、コマンドラインツールであっても稀に変更が発生することがあります (オプションの増減等)。とはいえ原則的には後方互換性が維持されるので、GUI で手順を作成するよりも、ずっと安定していると言うことができます。
gcloud storage (CLI) デメリット
CLI を使用することのメリットはご理解いただけたかと思いますが、CLI にはデメリットもありますので合わせてご紹介いたします。
学習コストがかかる
普段のPC作業では CLI を利用することはあまり多くありません。そのため CLI 構文の学習や必要なコマンドを探すスキルが必要となり、学習コスト(時間)がかかることが想定されます。
システム状況のイメージが湧きづらい
CLI での操作は基本的にコマンド(テキスト)のみになります。システムが視覚化された GUI では一目瞭然で理解できるシステム状況も、慣れないと操作イメージが湧きづらく作業に時間がかかってしまうこともしばしばあるかもしれません。
例)ディレクトリツリーが常時表示ではないためどこの作業をしているかわからなくなる、ディスクの使用領域がグラフ化されない…など
よく使う gcloud storage コマンド
前置きが長くなりましたが、早速 gcloud storage コマンドを使用していきましょう。今回は基本編のため、Cloud Storage の基本的な操作を gcloud storage コマンドで実施してみようと思います。
<youar-bucket> といった < > で区切られた部分はご自身の環境に沿ってバケット名等のパラメータを入力してください。 ※ コマンド入力の際は < > は入力不要です。
バケットの作成
$ gcloud storage buckets create gs://<your-bucket> --default-storage-class=standard --location=asia-northeast1 --uniform-bucket-level-access
<your-bucket>
というバケットを 東京リージョン に作成します。
バケットレベルのアクセス設定は均一、パブリックに対して非公開のバケットとなります。
<your-bucket>
に入力するバケット名は、全世界でユニークな名称でなければなりません。
ユニークな名称になっていない場合、以下のようなエラーメッセージが出力されます。
エラーが発生した場合は、名称を変更して再度コマンドを実行してみてください。
HTTPError 409: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
またバケット名の命名ガイドラインは下記の通りになります。
- 参考 : Bucket names
バケットにオブジェクトをアップロードする
$ gcloud storage cp <sample.png> gs://<your-bucket>
指定したバケットに、ファイルをアップロードします。<sample.png>
の部分を、お使いの端末上のファイルパスに置き換えてください。また gs://<your-bucket>
の部分は自分のバケット名に置き換えます。gs://<your-bucket>/<folder>
のように、配置先のパスを指定することも可能です。
バケットからオブジェクトをダウンロードする
$ gcloud storage cp gs://<your-bucket>/<sample.png> <sample_download.png>
指定パスに保存されたオブジェクトをダウンロードします。
<sample_download.png>
の部分は、ローカル上のファイル名 (パス) を指定しています。
バケットを削除する
$ gcloud storage rm --recursive gs://<your-bucket>/
指定したバケットを削除します。バケット内のデータも削除されるため、ご注意ください。
オブジェクトを削除する
$ gcloud storage rm gs://<your-bucket>/<sample.png>
指定パスに保存されたオブジェクトを削除します。
ストレージクラスを変更する
$ gcloud storage buckets update gs://<your-bucket> --default-storage-class=NEARLINE
指定バケットのデフォルトストレージクラスを変更します。上記サンプルコマンドでは、デフォルトストレージクラスをNEARLINEに変更しています。
バケットまたはフォルダの内容を一覧表示する
$ gcloud storage ls gs://<your-bucket>
指定バケットの内容を一覧表示します。gs://<your-bucket>/<folder>
のようにフォルダパスを指定することも可能です。
バケットへのアクセス権を付与
$ gcloud storage buckets add-iam-policy-binding gs://<your-bucket> --member=user:<Google アカウント> --role=roles/storage.objectViewer
バケットへのアクセス権(IAM)を付与します。 上記サンプルコマンドでは指定バケットに任意の Google アカウント を指定し、Storage オブジェクト閲覧者の権限を付与しています。
バケットへのアクセス権を削除
$ gcloud storage buckets remove-iam-policy-binding gs://<your-bucket> --member=user:<Google アカウント> --role=roles/storage.objectViewer
上記サンプルコマンドでは指定バケットの任意 Google アカウント に付与されたStorage オブジェクト閲覧者の権限を削除しています。
バケットのラベルを変更する
$ gcloud storage buckets update gs://<your-bucket> --update-labels=<key>=<value>
バケットのラベルを変更します。
ラベルを付与することにより、バケット単位で請求金額を確認することができるようになります。
その他のコマンド(リファレンス)
今回ご紹介したコマンドは基本編となります。
他にも各種コマンドやオプションを使用することで、色々な操作を行うことが可能です。
コマンドリファレンスは以下になりますため、基本編では物足りない方はご確認いただければと思います。
- 参考 : gcloud storage
荒井 雄基 (記事一覧)
クラウドソリューション部
オンプレ環境のネットワーク・サーバーシステムを主戦場としていたが、クラウド領域にシフト。
Google Cloud 認定資格 7冠
現在は Google Workspace を中心に企業の DX 推進をサポート。
最近頑張っていることは、子どもがハマっている戦隊モノの踊りを踊れるようになること。