Clean Roomのバージョン管理¶
注釈
このトピックはclean roomの作成者向けです。Clean roomのコンシューマーは、clean roomのバージョン管理について考える必要はありません。
Clean roomのバージョンナンの番号付け¶
Snowflakeclean roomはバージョン管理されています。Pythonコードのないclean roomの初期バージョンはV1.0.0です。
Snowflakeは、Pythonコードのアップロードや外部または Apache Iceberg™ テーブルの有効化などの特定の プロバイダー イベントを実行した後、クリーンルームの新しいバージョンを自動的に作成します。Snowflakeは、このアクションによってトリガーされたセキュリティスキャンに合格した場合にのみ、新しいバージョンを作成します。新しいクリーンルームバージョンを生成できるプロバイダーアクションは比較的少なく、新しいバージョンを作成するプロシージャは、プロシージャの応答で新しいバージョンに言及します。
セキュリティスキャンに失敗したアクションは新しいバージョンを生成しません。
プロバイダーのアクションのみが、新しいクリーンルームバージョンを作成できます。コンシューマーアクションでは作成できません。
Snowflakeは、新しいバージョンが作成されるたびにパッチ番号(最後の桁)のみをインクリメントします。つまり、3つの連続したバージョンでは、番号がV1.0.0、V1.0.1、V1.0.2となります。
Clean roomがバージョン管理されるのは、 ネイティブアプリケーションパッケージ として実装されているからです。SnowflakeのNativeアプリケーションフレームワークでは、バージョンV1.0.2の場合、「V1.0」(文字列)がバージョン番号で、「2」(整数)がパッチ番号になります。Clean roomのドキュメントでは通常、(Native Apps Frameworkで使用されることがあるような)単に「V1.0」というプレフィックスではなく、番号全体(V1.0.1)を示す「バージョン」という用語を使用します。
クリーンルームの ID を使用して SHOW VERSIONS IN APPLICATION PACKAGE samooha_cleanroom_CLEANROOM_ID; を呼び出すことで、指定したクリーンルームのバージョン履歴とレビューステータスを見ることができます。
デフォルトリリースディレクティブ¶
各クリーンルームには、クリーンルームプロバイダーによって デフォルトリリースディレクティブ が割り当てられます。デフォルトのリリースディレクティブは、ユーザーのアカウントにどのバージョンのクリーンルームをインストールまたはロードするかを指定します。コンシューマーは、インストールするクリーンルームのバージョンを指定することはできません。更新は、利用可能なリソースによる <label-native_apps_upgrades_about>`の指示に応じて、Snowflake :ref:` によって自動的に処理されます。また、新しいバージョンがユーザーのアカウントにインストールされるまでに多少の遅延が発生する可能性があります。
clean roomプロバイダーは、clean roomが最初に共有される前(内部または外部)、またはプロバイダーがコードをアップロードし、セキュリティスキャンをパスするたびに、clean roomのデフォルトリリースディレクティブを指定する必要があります。clean roomの新しいバージョンが生成されても、デフォルトリリースディレクティブが更新されない場合、コンシューマーは引き続き最新のデフォルトバージョンで提供されます。
クリーンルームを公開する前に、常にデフォルトのリリースディレクティブを設定する必要があります。Pythonコードを追加していない場合は、次のようにV1.0.0になります。
CALL samooha_by_snowflake_local_db.provider.set_default_release_directive(
$cleanroom_name, 'V1_0', '0');
clean roomプロバイダーは、必要であれば、デフォルトのリリースディレクティブを以前のリリースに戻すことができます。
provider.set_default_release_directive を呼び出して、clean roomのデフォルトリリースディレクティブを指定します。
プロバイダーは、コードでクリーンルームを作成または変更する場合にのみ、デフォルトのリリースディレクティブを設定する必要があります。クリーンルーム UI を使用すると、バージョン管理は自動的に処理されます。
Snowflakeは、このプロバイダーのアクションによってトリガーされたセキュリティスキャンに合格した場合にのみ、新しいバージョンを生成します。したがって、デフォルトのリリースディレクティブを更新する前に provider.view_cleanrooom_scan_status を呼び出して、クリーンルームのセキュリティスキャンステータスを確認する必要があります。デフォルトのリリースディレクティブを更新しなくてもエラーは発生しませんが、デフォルトのリリースディレクティブを更新しないと、変更を含む新しいバージョンはユーザーに公開されません。
エラーのあるクリーンルーム¶
セキュリティスキャンが失敗した場合や、構文エラーでPythonコードをアップロードしたときに発生する、エラーのあるクリーンルームを公開する場合、パッチが生成されますが、そのバージョンをデフォルトのリリースディレクティブとして使用することはできません。修正バージョンを公開するまで、追加のパッチは以前の失敗したパッチのエラーを組み込み、クリーンルームのパッチも失敗します。
バージョン管理のチートシート¶
このSnowflakeアカウントで作成されたすべてのclean roomパッケージ(clean room)のリストを表示します:
SHOW APPLICATION PACKAGES STARTS WITH 'SAMOOHA_CLEANROOM_';
clean room MY_FIRST_CLEANROOMのすべてのバージョンのリストを表示します:
SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_MY_FIRST_CLEANROOM;
現在のデフォルトのリリースディレクティブを表示します:
SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<your_clean_room_name>;
clean roomを外部化した場合、またはステータスをチェックしてから、バージョンをセットしてください:
CALL samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status('MY_FIRST_CLEANROOM');
-- When REVIEW_STATUS = APPROVED, you can update the default version to the
-- latest version, if you haven't done so already.
SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_MY_FIRST_CLEANROOM;
CALL samooha_by_snowflake_local_db.provider.set_default_release_directive(
$cleanroom_name, 'V1_0', '<<LATEST_PATCH_NUMBER>>');