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');
Copy

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_';
Copy

clean room MY_FIRST_CLEANROOMのすべてのバージョンのリストを表示します:

SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_MY_FIRST_CLEANROOM;
Copy

現在のデフォルトのリリースディレクティブを表示します:

SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<your_clean_room_name>;
Copy

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>>');
Copy