クロスクラウド自動複製の構成¶
リストに関連付けられたデータ製品を他のSnowflakeリージョンに自動で複製する場合は、クロスクラウドの自動複製を構成します。
このトピックの内容:
リストの自動複製が有効になっている場合、Snowflakeは必要に応じてデータ製品をコンシューマーのリージョンに自動で複製します。データ製品とは、リストに関連付けられる共有またはアプリケーションパッケージのことです。
自動複製を使用すると、データ製品を手動で複製したり、リストのリクエストを承認したりする必要がなくなり、コンシューマーはリストにすばやくアクセスできるようになります。
注釈
Snowflake Native App with Snowpark Container Services でのCross-Cloud Auto-Fulfillmentの使用は、現在Amazon Web Services (AWS) でのみサポートされています。詳細については、 コンテナを使用したアプリの既知の制限事項 をご参照ください。
クロスクラウド自動複製について¶
クロスクラウド自動複製を使用すると、手動でデータを複製することなく、リストで選択した可用性とアクセスオプションに基づいて、サポートされている任意のSnowflakeリージョンでデータ製品を提供できます。
リストがドラフトまたは公開状態の場合は、自動複製を構成して有効にすることができます。リストの自動複製が有効になっている場合、Snowflakeは必要に応じて製品をコンシューマーリージョンに自動で複製します。
データ製品を他のリージョンで使用できるようにする方法は、データ製品とコンシューマーがリストにアクセスする方法に応じて異なります。
データ製品がアプリケーションパッケージの場合は、自動複製を使用してデータ製品を他のリージョンで使用できるようにします。
データ製品が共有の場合は、ほとんどのケースで自動複製を使用します。
Snowflake Marketplace の無料または限定トライアルリストでは、クロスクラウド自動複製を使用するか、 データを手動で複製 できます。
有料リストの場合は、自動複製を使用します。
特定のコンシューマーアカウントと共有されるすべてのリストの場合、 Snowsight はターゲットアカウントが別のリージョンにあるかどうかを自動的に検出し、自動複製を有効にします。プライベートリストを他のリージョンに手動で複製することはできません。
データ製品を他のリージョンで利用できるようにする場合は、追加コストが発生します。 クロスクラウドの自動複製コストの管理 をご参照ください。
クロスクラウド自動複製の仕組み¶
リストに対してクロスクラウド自動複製を設定すると、Snowflakeは 安全な共有領域 (SSA) のプロビジョニングとリモートリージョンへのデータ製品の複製を管理します。データ製品がすでにリモートリージョンに存在する場合、そのリージョンのコンシューマーは即座にデータ製品を入手できます。
リストには、共有またはアプリケーションパッケージのいずれかのデータ製品が関連付けられており、データ製品には1つまたは複数のデータベースからのオブジェクトと、アプリケーションパッケージのアプリケーションロジックが含まれています。
データ製品が共有の場合、データ製品内のオブジェクトを含むデータベース全体が他のリージョンに自動複製されます。
データ製品がアプリケーションパッケージの場合、アプリケーションパッケージ内のオブジェクトとロジック、およびアプリケーションパッケージによって参照されるオブジェクトは、他のリージョンに自動複製されます。
データ製品がリモートリージョンに自動複製されるタイミングは、リストを使用可能にする方法に応じて異なります。
プライベートリストを共有すると、指定されたコンシューマーがリストを取得した後にデータベースが自動複製されます。
Snowflake Marketplace にリストを提供すると、特定のリージョンのコンシューマーがリストを取得した後に、そのリージョンにデータベースが自動複製されます。
データ製品が新しいリージョンに初めて自動複製されると、データベース(共有の場合)またはデータコンテンツとアプリケーションロジック(アプリケーションパッケージの場合)が、そのリージョンの SSA に複製されます。SSA はSnowflakeにより管理されています。複数のリストで同じデータベースを使用できますが、データベースは新しいリージョンに1回だけ複製されます。
リージョンの SSA にデータ製品を最初に複製した後、構成された更新頻度に基づいて、データ製品の変更がアカウントから同期されます。
データ製品が共有の場合、 クロスクラウドの自動フルフィルメントを構成 する際にリフレッシュ頻度を設定します。リフレッシュ頻度は、リストに関連付けられたデータベースに適用されます。複数のリストがデータベースからオブジェクトを共有している場合、それらのリストは同じリフレッシュ頻度を共有します。リフレッシュの日時は、最初のコンシューマーが地域内のデータ製品をリクエストした時期に応じて異なります。
データ製品がアプリケーションパッケージの場合は、アカウントレベルで更新頻度を設定し、アカウントから提供するすべてのアプリケーションパッケージにその更新頻度が適用されます。
リージョンに対してデータベースのクロスクラウド自動複製が発生した後、データベースオブジェクトに対する今後のリクエストは、他のリストに関連付けられているものであっても、 SSA 内のデータベースから実行されます。これにより、将来の更新と複製のコストを低減できます。コストの詳細については、 クロスクラウドの自動複製コストの管理 をご参照ください。
自動複製に関する考慮事項¶
リストに自動複製を使用する場合は、以下を考慮します。
AWS Marketplace、 GCP Marketplace、またはAzure Marketplaceを使用してSnowflakeにサインアップした場合は、そのようなクラウドでのみアカウントを作成して SSAs を確保できます。現在のクラウドサービスリージョン外にリストを複製することはできません。
複製されるデータ製品のサイズによっては、データ製品をコンシューマーに提供するまでに時間のかかる場合があります。データ製品のサイズも自動複製のコストに影響を与える可能性があります。コストの詳細については、 クロスクラウドの自動複製コストの管理 をご参照ください。
データベースがリストにアタッチされている場合、オブジェクトレベル (SUB_DATABASE) またはフルデータベース (FULL_DATABASE) のいずれか1つの自動フルフィルメント更新タイプをサポートできます。
Tri-Secret Secure を使用する場合は、 Snowflakeサポート に連絡して、自動フルフィルメントに使用する安全な共有領域でTri-Secret Secureを有効にする必要があります。
Tri-Secret Secureでは、クエリ結果は3つのキー(プロバイダーから1つ、Snowflakeから1つ、コンシューマから1つ)を使用して暗号化されます。各キーによって、それぞれの当事者のデータへのアクセスが管理されます。プロバイダーまたはコンシューマのキーへのアクセスが取り消されると、その当事者はデータにアクセスできなくなります。プロバイダーのキーはコンシューマーのキーアクセスとは無関係であり、コンシューマーのキーはプロバイダーのキーアクセスとは無関係です。つまり、共有データは、プロバイダーのキーが非アクティブであっても、一度取得されればコンシューマーの管理下に置かれます。
注釈
自動複製は、複製されるデータベースのサイズに 10TB の制限を適用します。リストに共有を添付すると、 Snowsight はデータベースのサイズをチェックし、複製されるデータのサイズが 10TB より大きい場合はエラーを返します。 Cross-Cloud Auto-Fulfillmentのトラブルシューティング をご参照ください。
リストを自動で処理する場合、ソースデータが 10TB より大きいと、コンシューマーはエラーを受信します。
コストへの影響を評価した後、 Snowflakeサポート に連絡し、パラメーターを使用して SSA のサイズ制限を増やすことができます。 INITIAL_REPLICATION_SIZE_LIMIT_IN_TB をご参照ください。
自動複製がサポートされているオブジェクト¶
特定のデータベースオブジェクトのみ、自動複製がサポートされています。リストに含まれる、 またはリストから参照される データベースオブジェクトには、自動フルフィルメントでサポートされるオブジェクトのみを含める必要があります。
データ製品に応じてサポートされているオブジェクトは異なります。
オブジェクト |
共有(データベース) |
アプリケーションパッケージ |
---|---|---|
テーブル |
✔ |
✔ |
ビュー(標準、つまり非セキュア) |
✔ |
✔ |
ビュー(マテリアライズド) |
✔ |
✔ |
ビュー(セキュア) |
✔ |
✔ |
REFERENCE_USAGE 権限を使用して他のデータベースに格納されているデータを参照するセキュアビュー。 |
✔ |
|
動的テーブル |
✔ |
✔ (アプリケーションパッケージからのみ) |
データベースロール |
✔ |
✔ |
SQL UDF |
✔ |
✔ (参照されるデータベースの共有ビューから呼び出される場合) |
ストアドプロシージャ(共有では使用しない) |
✔ |
✔ |
マスキングポリシーおよび行アクセスポリシー |
✔ |
✔ |
タグ |
✔ |
✔ |
タスク(共有では使用しない) |
✔ |
✔ |
アラート(共有では使用しない) |
✔ |
✔ |
シークレット(共有では使用しない) |
✔ |
✔ |
このリストのオブジェクトがフェールオーバーグループの一部として指定されている場合、自動複製はサポートされていません。 複製とフェールオーバーの概要 をご参照ください。
サポートされているオブジェクトのリストにないオブジェクトがデータ製品に含まれている場合は、データ製品を更新するか、データを手動で複製する必要があります。 リストのリクエストに対応するために手動でデータを複製します をご参照ください。
アカウントロールに依存するオブジェクトの自動フルフィルメント¶
自動フルフィルメントはアカウントロールを複製しません。代わりに、 SSAs のオブジェクトは ACCOUNTADMIN ロールによって所有されます。
共有またはアプリケーションパッケージにアカウントロールに依存するオブジェクトが含まれている場合、そのオブジェクトはコンシューマーと共有されたときに期待とは異なる動作をするかもしれません。例:
INVOKER_ROLE コンテキスト関数を使用して、ポリシーによって保護されたデータを含むセキュアビューを共有する場合、ビューの所有者ロールが異なるため、ポリシーがプロバイダーアカウントのリージョンとは異なる値に評価される可能性があります。
SECURITYADMIN ロールのみが SELECT 権限を持つテーブルなど、ビューによって参照されるオブジェクトがアカウントロールに制限されているセキュアビューを共有する場合、プロバイダーアカウントの SECURITYADMIN ロールを持たないユーザーがクエリを実行するとビューが展開されないことがありますが、コンシューマーアカウントの SECURITYADMIN ロールを持たないユーザーがクエリを実行すると結果が返されます。
アカウントロールを使用する代わりに、データベースロールを使用してください。詳細については、 ポリシーで保護されたデータの共有 と IS_DATABASE_ROLE_IN_SESSION をご参照ください。
自動フルフィルメント用に作成された内部Snowflakeオブジェクト¶
Snowflakeは、クロスクラウド自動フルフィルメントをサポートするために以下の内部オブジェクトを作成します。
オブジェクト型 |
名前 |
---|---|
ロール |
SNOWFLAKE$GDS_RL AUTO_FULFILLMENT_EXECUTOR |
データベース |
SNOWFLAKE$GDS |
複製グループ |
|
これらの内部オブジェクトは、別のリージョンに安全な共有領域を作成するなど、自動フルフィルメントのタスクを実行するために使用され、フルフィルメントのタスクなど、自動フルフィルメントに使用されるオブジェクトを格納するためのデータベースを作成します。
これらの内部オブジェクトは、それぞれ SHOW DATABASES、 SHOW ROLES、 SHOW REPLICATION GROUPS を実行すると表示されます。これらのオブジェクトを変更したり、他のユーザーやロールに許可を付与しないでください。
自動複製の設定¶
リストを構成して、ローカルリージョン以外で利用できるようにする場合や、プライベートリストを別のリージョンのコンシューマーアカウントと共有する場合は、自動複製を有効にすることができます。 利用可能なリージョン(Marketplaceリストのみ) をご参照ください。
自動複製を設定する前に、データ製品をリストに追加する必要があります。自動複製を設定するステップは、提供するデータ製品やリストを使用可能にする方法に応じて異なります。
必要な権限¶
自動複製タスクを実行するには、次のいずれかのロールを使用する必要があります。
ORGADMIN ロール。
自動複製を設定する権限を委任された ACCOUNTADMIN ロール。
委任された権限を持つ ACCOUNTADMIN ロール を持つユーザーによって MANAGE LISTING AUTO FULFILLMENT 権限を付与されたカスタムロール。
使用するロールは、リストで OWNERSHIP または MODIFY 権限も持っている必要があります。
オブジェクトレベルの複製を使用した自動フルフィルメントのセットアップ¶
リストに関連付けられたデータ製品を他のSnowflakeリージョンに自動で複製する場合は、クロスクラウドの自動複製を構成します。リストの自動フルフィルメントが有効になっている場合、Snowflakeは必要に応じてデータ製品をコンシューマーのリージョンに自動で複製します。
コストを削減し、管理負担を軽減するために、オブジェクトレベル (SUB_DATABASE) の複製を使用して、データ製品のテーブルとビューのみをリモートリージョンに複製するように選択できます。
オブジェクトレベルの複製について¶
自動フルフィルメントを構成する際、サポートされるオブジェクトに対してオブジェクトレベルの複製が使用されます。サポートされるオブジェクトのリストについては、 自動複製がサポートされているオブジェクト をご参照ください。

地域の最初のコンシューマーがリストを取得します。
自動フルフィルメントは、共有内のオブジェクトのセキュア共有エリアに複製します。
リストを取得したコンシューマーは、Snowflakeリージョンのセキュア共有エリアからデータ製品を取得します。
オブジェクトレベルの複製により複製されるもの¶
オブジェクトレベルの複製を使用してデータ製品を複製する場合、共有またはアプリケーションに直接付与されたオブジェクト、または共有またはアプリケーションパッケージ内のセキュアビューによって参照されたオブジェクトのみが複製されます。
例:
データ製品のオブジェクト |
複製されるもの |
---|---|
データベースとスキーマのテーブル |
テーブル |
同じデータベース内のテーブルから作成されたセキュアビュー |
セキュアビューとテーブル |
オブジェクトレベルの複製なしの自動フルフィルメントにより既に複製されているデータベースのテーブル |
データベース全体 |
Snowsightを使用したオブジェクトレベルの複製のセットアップ¶
オブジェクトレベルの複製は、リージョンの可用性を設定するとき(Snowflake Marketplace で公開されるリストの場合)、または別のリージョンにあるコンシューマーを追加するとき(非公開で共有されるリストの場合)に設定します。
リストを作成。 リストの作成および公開 をご参照ください。
サポートされているオブジェクトのみを含むデータ製品を追加します。
共有するリージョンまたはアカウントを設定し、自動フルフィルメントの設定を開始します。
Snowflake Marketplace に公開されるリストの場合:
Region Availability セクションを見つけて、 Add を選択します。
Region availability の場合、デフォルトの All regions のままにするか、 Custom regions を選択します
非公開で共有されるリストについては、リモートリージョンのコンシューマーアカウントを追加します。
リモートリージョンのデータ製品の更新頻度を選択します。
リストを公開するか、ドラフトとして保存します。
自動複製設定のモニターおよび管理¶
リストを管理して、コンシューマーがリストを使用しているリージョンや複製のコストをモニターし、リストの更新頻度を変更します。
注釈
自動複製を構成するには、 必要な権限 を持つロールを使用する必要があります。
その他の自動複製設定の管理¶
リストの自動複製設定を管理またはモニターするには、次を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Provider Studio » Listings を選択します。
管理するリストの行を選択します。
リスト詳細ページから、自動複製設定にアクセスします。
Snowflake Marketplace で提供されるリストについては、 Region Availability のセクションで、 Manage を選択します。
特定のコンシューマーに提供されるリストについては、 Consumer Accounts のセクションで、 ... を選択します。
リストで管理するオプションを選択します。
Manage Regions & Replication を選択し、リストが複製されるリージョンと自動複製のステータスを確認します。特定リージョンの可用性を追加または削除したり、複製ステータスを確認したりできます。
リージョンを選択して、最後の同期のタイムスタンプと、データにアクセスしているコンシューマーの人数を確認します。
あるリージョンでリストの製品にアクセスしたコンシューマーがいない場合は、 Remove Region を選択できます。
あるリージョンでコンシューマーがリストの製品にアクセスした場合は、そのリージョンを削除することはできません。そのリージョンからデータ製品を削除する場合は、製品を使用しているすべてのコンシューマーが最初にデータベースまたはアプリケーションをドロップするか、リストを削除する必要があります。
データ製品の更新間隔と更新頻度を更新するには、 Update Refresh Frequency を選択します。
アプリケーションパッケージの更新頻度は、アカウントレベルで設定する必要があります。 アカウントレベルの更新頻度の設定 をご参照ください。
共有の更新頻度はリストレベルで設定されますが、指定できるスケジュールはデータベースごとに1つのみです。同じデータベースのオブジェクトを含む複数のリストに複数の共有が関連付けられている場合、いずれかのリストの更新頻度を更新すると、同じデータベースを使用する他のすべてのリストの更新頻度も更新されます。
更新が発生するタイミングを管理することはできません。代わりに、リージョンのデータ製品の更新スケジュールは、そのリージョンのコンシューマーがデータ製品を最初にリクエストした日付と時刻に基づきます。
Monitor Replication Cost を選択し、他のリージョンへのデータ製品複製に関連するコストをモニターします。 クロスクラウドの自動複製コストの管理 をご参照ください。
リストの変更の詳細については、 公開リストの変更 をご参照ください。
アカウントレベルの更新頻度の設定¶
データ製品がリモートリージョンに自動複製されるアプリケーションパッケージの場合、アカウントレベルで設定した更新頻度に従って製品の更新が実行されます。
ACCOUNTADMIN ロールがある場合、 Snowsight または SQL コマンドを使用して、アカウントの更新頻度を変更できます。更新頻度を変更すると、アカウントで公開されているすべてのアプリケーションパッケージの自動複製の更新頻度が更新されます。この更新頻度は、共有が関連付けられたリストには影響しません。
Snowsightを使用した更新頻度の設定¶
Snowsight を使用してアプリケーションの更新頻度を設定するには、 ACCOUNTADMIN ロールを使用して以下のステップを完了する必要があります。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Provider Studio » Listings を選択します。
管理するリストの行を選択します。
リスト詳細ページから、自動複製設定にアクセスします。
Snowflake Marketplace で提供されるリストについては、 Region Availability のセクションで、 Manage を選択します。
特定のコンシューマーに提供されるリストについては、 Consumer Accounts のセクションで、 ... を選択します。
データ製品の更新間隔と更新頻度を更新するには、 Update Refresh Frequency を選択します。
データ製品を更新する頻度を選択します(1分ごと、最大8日ごとなど)。
選択した更新頻度は、アカウントで公開されているすべてのアプリケーションパッケージに影響します。変更を行う前に、更新頻度の変更によって影響を受けるすべてのリストを表示できます。
更新頻度は指定できますが、あるリージョンで更新が発生する予定時刻は、そのリージョンのコンシューマーがあなたのデータ製品を最初にリクエストした日付と時刻に基づいています。
更新された更新頻度を保存するには Update を選択します。
SQL を使用した更新頻度の設定¶
SQL を使用してアプリケーションの更新頻度を設定するには、 ACCOUNTADMIN ロールを使用して次のコマンドを実行する必要があります。
ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '<schedule>'
条件:
schedule
:データ製品を他のリージョンに更新する時間間隔。時間を分単位で指定します(単位:
MINUTES
)。
たとえば、アカウントから公開されるすべてのアプリケーションパッケージの自動複製の更新頻度を1時間ごとに設定するには、次を実行します。
ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '60 MINUTES'
注釈
リージョンのデータ製品の更新スケジュールは、そのリージョンのコンシューマーがデータ製品を最初にリクエストした日付と時刻に基づきます。
アカウントがクロスクラウドの自動複製を設定できるようにする¶
アカウントの組織の管理者(つまり、 ORGADMIN ロールを使用している場合)は、組織内にあるアカウントの ACCOUNTADMIN ロールに、クロスクラウド自動複製の設定に必要な権限を委任できます。
ACCOUNTADMIN ロールに権限を委任した後、 ACCOUNTADMIN ロールはアカウント内の他のロールに MANAGE LISTING AUTOFULFILLMENT 権限を付与できます。 リストプロバイダーについて をご参照ください。
権限を委任したり、権限を取り消したり、権限が特定のアカウントに委任されているかどうかを判断したりできます。権限は、組織内にある他のアカウントにのみ委任できます。
クロスクラウドの自動複製を設定する権限を委任する¶
ACCOUNTADMIN ロールを持つユーザーがクロスクラウド自動複製を設定できるようにするには、 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT という名前のシステム関数を呼び出します。このシステム関数の引数を次に示します。
このシステム関数を呼び出すには、 ORGADMIN ロールが必要です。
SELECT SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT(
'<account_name>'
);
条件:
account_name
ACCOUNTADMIN ロールを持つユーザーがクロスクラウドの自動複製を管理できるようにするアカウントの名前を指定します。 アカウント識別子 をご参照ください。
クロスクラウドの自動複製を設定する権限を取り消す¶
ACCOUNTADMIN ロールを持つユーザーがクロスクラウド自動複製を設定できないようにするには、 SYSTEM$DISABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT という名前のシステム関数を呼び出します。このシステム関数の引数を次に示します。
このシステム関数を呼び出すには、 ORGADMIN ロールが必要です。
SELECT SYSTEM$DISABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT(
'<account_name>'
);
条件:
account_name
ACCOUNTADMIN ロールを持つユーザーがクロスクラウドの自動複製を管理できないようにするアカウントの名前を指定します。 アカウント識別子 をご参照ください。
アカウントがクロスクラウドの自動複製を設定できるかどうかを確認する¶
特定のアカウントで ACCOUNTADMIN ロールを持つユーザーがクロスクラウドの自動複製を設定できるかどうかを判断するには、 SYSTEM$IS_GLOBAL_DATA_SHARING_ENABLED_FOR_ACCOUNT という名前のシステム関数を呼び出します。このシステム関数の引数を次に示します。
このシステム関数を呼び出すには、 ORGADMIN ロールが必要です。
SELECT SYSTEM$IS_GLOBAL_DATA_SHARING_ENABLED_FOR_ACCOUNT(
'<account_name>'
);
条件:
account_name
ACCOUNTADMIN ロールを持つユーザーがクロスクラウドの自動複製を管理できるかどうかを確認するアカウントの名前を指定します。 アカウント識別子 をご参照ください。