概要
Cloud Storage のソフト削除機能を組織やフォルダ全体のプロジェクトを対象に無効化する手順を記載します。
プロジェクト単位で無効化する
プロジェクト単位のソフト削除の無効化は、管理コンソールやgcloudコマンドで可能です。
gcloudコマンドを使う場合は、以下のようになります。
(--project hoge-project
は環境に合わせて変更)
$ gcloud storage buckets update --clear-soft-delete 'gs://*' --project hoge-project
組織単位・フォルダ単位で無効化する
公式の手順では、プロジェクト単位での操作は記載がありましたが、組織やフォルダなどの広いスコープを対象にした手順は探した限りありませんでした。
そのため、シェルで一括実行する手順をとりました。
まず、対象のプロジェクトを精査します。
(対象に含みたくないものもあるため、事前にリストを作る手順となっています)
PARENT_ID
には、任意のフォルダIDが入ります。
組織全体のプロジェクトを取得したい場合は、--filterなしで実行すれば全てが対象になります。
$ PARENT_ID=123456
$ gcloud projects list --filter="parent.id: ${PARENT_ID}" --format json | jq -r '.[].projectId' | sort > project-list.txt
$ cat project-list.txt
hoge-project
fuga-project
piyo-project
参考情報
作成したリストとxargsコマンドにより、ソフト削除の無効化を一括適用します。
一括適用の際は、以下に注意してください。
- 対象にするプロジェクトが正しいかリストを確認する
- コマンドが正しいか確認する(リストを編集し、事前に1プロジェクトのみで試すと確実です)
$ cat project-list.txt | xargs -I{} gcloud storage buckets update --clear-soft-delete 'gs://*' --project {}
まとめ
ソフト削除の無効化にあたり公式の手順を調べていましたが、フォルダや組織単位で実行する手順がなかったので今回まとめてみました。
公式の手順でもっとスマートに実現できる方法があるかもしれませんので、もしあればそちらがいいかと思います。