🔬
GAになった gcloud storage コマンドと gsutil コマンドのサブコマンドを比較してみた
こんにちは、クラウドエースの阿部です。
今年9/13にgcloud storageコマンドが一般公開(GA)になりました。
参考: Google Cloud release notes, September 13, 2022
オブジェクト転送速度の改善については、gcloud storageコマンドの評価版が2021年7月に公開され、下記ブログにて紹介されていました。
この記事では、GAになったgcloud storageコマンドとgsutilコマンドとの、サブコマンド差分について調査してみました。
比較したコマンドのバージョン
- Google Cloud CLI(
gcloud): 402.0.0 -
gsutil: 5.13
サブコマンド比較表
gsutilとgcloud storageで、実装状況を比較してみました。
※helpやupdateのような本質的な比較に意味の無いものも機械的に載せてしまってます
こうして一覧にしてみると、GAになったとは言えgcloud storageで未実装の機能は多く感じます。
| gsutil | gcloud storage | 代替 | |
|---|---|---|---|
| acl | get | gcloud storage buckets describe gcloud storage objects describe |
○ |
| set | - | × | |
| ch | - | × | |
| autoclass | get | - | × |
| set | - | × | |
| bucketpolicyonly | get | gcloud storage buckets describe | ○ |
| set | - | × | |
| cat | gcloud storage cat | ○ | |
| compose | gcloud storage objects compose | ○ | |
| config | - | × | |
| cors | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --cors-file gcloud storage buckets update --clear-cors |
○ | |
| cp | gcloud storage cp | ○ | |
| defacl | get | gcloud storage buckets describe | ○ |
| set | - | × | |
| defstorageclass | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --default-storage-class | ○ | |
| du | - | × | |
| hash | - | × | |
| help | - | × | |
| hmac | create | - | × |
| delete | - | × | |
| get | - | × | |
| list | - | × | |
| update | - | × | |
| iam | get | - | × |
| set | - | × | |
| ch | - | × | |
| kms | authorize | - | × |
| encryption | gcloud storage buckets update --default-encryption-key gcloud storage buckets update --clear-default-encryption-key |
○ | |
| serviceaccount | gcloud storage service-agent | ○ | |
| label | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --labels-file | ○ | |
| ch | gcloud storage buckets update --update-labels gcloud storage buckets update --remove-labels |
○ | |
| lifecycle | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --lifecycle-file gcloud storage buckets update --clear-lifecycle |
○ | |
| logging | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --log-bucket gcloud storage buckets update --clear-log-bucket |
○ | |
| ls | gcloud storage ls | ○ | |
| mb | gcloud storage buckets create | ○ | |
| mv | gcloud storage mv | ○ | |
| notification | create | gcloud storage buckets notifications create | ○ |
| delete | gcloud storage buckets notifications delete | ○ | |
| list | gcloud storage buckets notifications list | ○ | |
| watchbucket | - | × | |
| stopchannel | - | × | |
| pap | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --pap gcloud storage buckets update --public-access-prevention |
○ | |
| perfdiag | - | × | |
| rb | gcloud storage buckets delete | ○ | |
| requesterpays | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --requester-pays | ○ | |
| retention | get | gcloud storage buckets describe | ○ |
| set | - | × | |
| clear | - | × | |
| lock | - | × | |
| event-default | - | × | |
| event | - | × | |
| temp | - | × | |
| rewrite | - | × | |
| rm | gcloud storage rm | ○ | |
| rpo | get | gcloud storage buckets describe | ○ |
| set | - | × | |
| rsync | - | × | |
| setmeta | gcloud storage objects update --custom-metadata | ○ | |
| signurl | - | × | |
| stat | gcloud storage objects list --stat | ○ | |
| test | - | × | |
| ubla | get | gcloud storage buckets describe | ○ |
| set | - | × | |
| update | - | × | |
| version | gcloud version | ○ | |
| versioning | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --versioning | ○ | |
| web | get | gcloud storage buckets describe | ○ |
| set | gcloud storage buckets update --web-main-page-suffix --web-error-page | ○ |
参考
gcloud storageのサブコマンドの特徴
-
gsutilは機能→get/setというサブコマンド階層だったが、gcloud storageではdescribeサブコマンドで参照系をまとめており、更新系はcreate,update,deleteとしている- コマンド体系が
gcloudの他のプロダクトと統一されたので平仄が合って分かりやすいかも知れない -
gsutilから移行しようと思うとサブコマンド書式やオプション構成が全く違うので苦労しそうな印象
- コマンド体系が
-
gcloud storageはgcloud共通の--formatオプションが使えるため、コマンド結果をCSVやJSON形式で出力できる- 他のツールと連携させるときは
gsutilより便利になりそう
- 他のツールと連携させるときは
gcloud storage未実装のサブコマンドで気になった点
- IAM/ACLを操作するサブコマンドが存在しない
- コマンドラインだけでIAMやACLの操作を完結させたい場合は代替できなさそうです
-
gsutil rsyncやgsutil duのような便利なコマンドが実装されていない- このあたりは
gcloud storageでも実装して欲しいですね
- このあたりは
- Uniform Bucket Level Access/Bucket Policy Onlyを操作するコマンドが存在しない
-
gcloud storage buckets createのオプションで、バケット作成時にUniform Bucket Level Accessを有効にするオプションは使用可能
-
まとめ
最低限必要な機能は揃っているものの、一部欲しい機能はまだ実装されてないなという印象です。
こうした機能はgcloud storage側にも実装されると嬉しいなと思います。
gcloudコマンドは--formatや--filterオプションを使う事で他ツールとの連携がやりやすいので、今後もgcloud storageコマンドが拡充されていくことを願っております。
Discussion