🔬

GAになった gcloud storage コマンドと gsutil コマンドのサブコマンドを比較してみた

2022/09/14に公開

こんにちは、クラウドエースの阿部です。
今年9/13にgcloud storageコマンドが一般公開(GA)になりました。
参考: Google Cloud release notes, September 13, 2022

オブジェクト転送速度の改善については、gcloud storageコマンドの評価版が2021年7月に公開され、下記ブログにて紹介されていました。
https://cloud.google.com/blog/ja/products/storage-data-transfer/new-gcloud-storage-enables-super-fast-data-transfers

この記事では、GAになったgcloud storageコマンドとgsutilコマンドとの、サブコマンド差分について調査してみました。

比較したコマンドのバージョン

  • Google Cloud CLI(gcloud): 402.0.0
  • gsutil: 5.13

サブコマンド比較表

gsutilgcloud storageで、実装状況を比較してみました。
helpupdateのような本質的な比較に意味の無いものも機械的に載せてしまってます

こうして一覧にしてみると、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

参考

https://cloud.google.com/storage/docs/gsutil

https://cloud.google.com/sdk/gcloud/reference/storage

gcloud storageのサブコマンドの特徴

  • gsutilは機能→get/setというサブコマンド階層だったが、gcloud storageではdescribeサブコマンドで参照系をまとめており、更新系はcreate,update,deleteとしている
    • コマンド体系がgcloudの他のプロダクトと統一されたので平仄が合って分かりやすいかも知れない
    • gsutilから移行しようと思うとサブコマンド書式やオプション構成が全く違うので苦労しそうな印象
  • gcloud storageはgcloud共通の--formatオプションが使えるため、コマンド結果をCSVやJSON形式で出力できる
    • 他のツールと連携させるときはgsutilより便利になりそう

gcloud storage未実装のサブコマンドで気になった点

  1. IAM/ACLを操作するサブコマンドが存在しない
    • コマンドラインだけでIAMやACLの操作を完結させたい場合は代替できなさそうです
  2. gsutil rsyncgsutil duのような便利なコマンドが実装されていない
    • このあたりはgcloud storageでも実装して欲しいですね
  3. Uniform Bucket Level Access/Bucket Policy Onlyを操作するコマンドが存在しない
    • gcloud storage buckets createのオプションで、バケット作成時にUniform Bucket Level Accessを有効にするオプションは使用可能

まとめ

最低限必要な機能は揃っているものの、一部欲しい機能はまだ実装されてないなという印象です。
こうした機能はgcloud storage側にも実装されると嬉しいなと思います。
gcloudコマンドは--format--filterオプションを使う事で他ツールとの連携がやりやすいので、今後もgcloud storageコマンドが拡充されていくことを願っております。

Discussion