Azure Container Registry の論理削除機能がプレビュー利用出来るようになったので使ってみた

2022.09.17

いわさです。

先日のアップデートで Azure Container Registry で論理削除を有効化して誤った削除操作をした場合でもリポジトリやイメージが一定期間復元出来るようになったらしいので使ってみました。

本機能は投稿日時点でパブリックプレビューです。
プレビュー機能利用時の使用条件や注意事項はこちらをご確認ください。

有効化状況はレジストリの概要欄で確認出来る

まずはコンテナレジストリを作成します。
プレビュー時点では SKU はどれでも利用できるらしいので、今回は Basic を使いました。
Premium SKU のみ利用出来る機能というパターンも多いので、このまま Basic で利用出来るようであれば結構嬉しい気がしますね。

作成されたレジストリの設定を確認してみると、Overview でSoft Delete (Preview)が確認出来ると思います。
デフォルトは無効化されていました。
また、コンテナレジストリの作成時には有効化出来るオプションは無さそうでした。

無効状態で削除

まずは、無効状態のまま削除したときの動きを比較用に確認してみましょう。

適当な Dockerfile を作成し、リポジトリへプッシュします。
今回の機能とは無関係ですが Azure Container Registory では クラウド上でイメージのビルドを行う機能があって、ローカルに Docker 環境なしでも使えるのは結構便利だなーと思いました。

Dockerfile

FROM scratch
CMD echo "hoge"

Visual Studio Code の ACR 拡張機能でBuild Image in Azureを選択します。

クラウド上でビルドされそのままリポジトリへ登録されていました。
イメージの削除操作は以下から行います。

イメージを削除しました。
また、リポジトリ内のイメージが全て削除されるとリポジトリ自体も削除された扱いとなります。

画面から想像出来るかと思いますが、Manage Deleted Repositoriesメニューから復元操作を行うことが出来るのですが、今時点では有効化していないので利用することができません。
また、初回は以下のように 405 エラーが発生していました。

Status: 405. Method Not Allowed. The operation is disallowed..

有効状態で削除

さて、論理削除機能を有効化して削除を試してみましょう。
レジストリの Overview から有効化します。そのためこの設定はレジストリ単位で行う形となります。

Update メニューから Enable soft delete を有効化しましょう。

デフォルトの保持期間は 7 日間となっています。
保持期間の値は 1 ~ 90 日間で設定でき、いつでも変更できます。

ここで設定した日数経過後に論理的に削除されたアーティファクトは完全に削除されます。
ドキュメントによると削除処理は 24 時間ごとに動作している模様です。

機能を有効化したので再びイメージ削除してみましょう。

リポジトリのイメージ一覧から復元操作を行うことができます。
復元時にはタグを指定します。

復元されました。

リポジトリ自体が削除されている場合

イメージが全て削除されている場合、あるいはリポジトリ自体が削除されている場合はそもそもリポジトリが選択できません。
その場合はリポジトリ一覧から削除されたリポジトリ一覧を確認することができます。

ただし、復元操作は削除されたリポジトリ一覧では行うことはできないようです。
ここから更に削除されたイメージ一覧へ遷移することが出来るのでそこでイメージの復元操作を行います。

そうすると以下のようにリポジトリ自体も復元されていました。

なお、レジストリ、リポジトリ、アーティファクトの概念については以下を参照ください。

有効期限を変更する

有効期限変更時の動作を確認してみました。
以下は保持期間を 1 日で設定した状態で削除したイメージです。

Scheduled purge date を見て頂くと 1 日後に完全に削除されることがわかると思います。

ここで設定を変更するとどうなるでしょうか。
保持期間を 3 日に変更してみます。

そうすると、purge date も 3 日後に変更されました。

削除されたイメージ自体は削除された日付のみを持っており、現在の保持期間を考慮して都度計算されるようですね。

さいごに

本日は Azure Container Registry の論理削除機能がプレビュー利用出来るようになったので使ってみました。

論理削除は操作ミスなどの対策に効果的な反面、保持期間によってその分のストレージ料金は発生します。
無駄に長く設定せずに適切な日付を設定してうまく運用したいですね。