クロスクラウド自動複製の構成¶
リストに関連付けられたデータ製品を自動的に他のSnowflakeリージョンに自動複製したい場合は、クロスクラウド自動複製を構成します。
このトピックの内容:
リストで自動複製が有効になっている場合、Snowflakeはデータ製品を必要に応じてコンシューマーリージョンに自動複製します。データ製品とは、リストに関連付けられる共有またはアプリケーションパッケージのことです。
自動複製を使用すると、データ製品を手動で複製したり、リストのリクエストを承認したりする必要がなくなり、コンシューマーはリストにすばやくアクセスできるようになります。
注釈
Snowflake Native App with Snowpark Container Services のクロスクラウド自動複製の使用は、Amazon Web Services(AWS)とMicrosoft Azureでのみサポートされています。詳細については、 コンテナを使用したアプリの既知の制限事項 をご参照ください。
クロスクラウド自動複製について¶
クロスクラウド自動複製を使用すると、手動でデータを複製することなく、リストで選択した可用性とアクセスオプションに基づいて、サポートされている任意のSnowflakeリージョンでデータ製品を提供できます。
リストがドラフトまたは公開状態の場合は、自動複製を構成して有効にすることができます。リストの自動複製が有効になっている場合、Snowflakeは必要に応じて製品をコンシューマーリージョンに自動で複製します。
データ製品を他のリージョンで使用できるようにする方法は、データ製品とコンシューマーがリストにアクセスする方法に応じて異なります。
データ製品がアプリケーションパッケージの場合は、自動複製を使用してデータ製品を他のリージョンで使用できるようにします。
データ製品が共有の場合は、ほとんどのケースで自動複製を使用します。
Snowflake Marketplace の無料または限定トライアルリストでは、クロスクラウド自動複製を使用するか、 データを手動で複製 できます。
有料リストの場合は、自動複製を使用します。
特定のコンシューマーアカウントと共有されるすべてのリストの場合、 Snowsight はターゲットアカウントが別のリージョンにあるかどうかを自動的に検出し、自動複製を有効にします。プライベートリストを他のリージョンに手動で複製することはできません。
データ製品を他のリージョンで利用できるようにする場合は、追加コストが発生します。 クロスクラウドの自動複製コストの管理 をご参照ください。
クロスクラウド自動複製の仕組み¶
リストにクロスクラウド自動複製を設定すると、Snowflakeは 安全な共有領域 (SSA)のプロビジョニングと、リモートリージョンへのデータ製品の自動複製を管理します。SSA はSnowflakeにより管理されています。データ製品がすでにリモートリージョンに存在する場合、そのリージョンのコンシューマーは即座にデータ製品を入手できます。
リストには、共有たはアプリケーションパッケージのいずれかのデータ製品が関連付けられています。データ製品には、1つまたは複数のデータベースからのオブジェクトと、アプリケーションパッケージのアプリケーションロジックが含まれます。
データ製品がリモートリージョンに自動複製される正確なタイミングは、リストをどのように利用可能にするかによって異なります。
プライベートリストは、指定されたコンシューマーがリストを取得した後に自動複製されます。
Snowflake Marketplace で共有されたパブリックリストは、特定のリージョンのコンシューマーがリストを取得した後に自動複製されます。
データ製品が初めて新しいリージョンに自動複製されると、そのリージョンの SSA に転送されます。複製とは異なり、自動複製は継続的に同期されたレプリカを維持しません。自動複製は FULL_DATABASE または SUBDB の設定で構成できます。FULL_DATABASE はデータベース内のすべてのオブジェクトで利用可能にしますが、継続的な同期は行いません。SUBDB は、選択したオブジェクトをオンデマンドで利用できるようにします。複製では、 FULL_DATABASE が定期的に同期されたコピーを保証する一方で、 SUB_DATABASE が特定のコンポーネントを同期します。
複数のリストで同じデータベースを使用することができますが、データベースは新しいリージョンに一度だけ自動複製されます。
注釈
Business Critical Edition(BCE)の場合、共有データの扱いは VPS のような高セキュリティのデプロイメントとは異なります。BCE はリージョンごとに個別の SSA を作成する必要はありませんが、Tri-Secret Secure暗号化などの機能により、厳格なデータセキュリティとコンプライアンスを実施します。
Virtual Private Snowflake(VPS)や政府機関専用のSnowflake環境などのデプロイメントには、デプロイメントごとに個別の安全な共有領域(SSA)があります。これにより、自動複製は、これらの環境特有の厳しいセキュリティ要件やデータ分離要件に準拠していることが保証されます。
リージョンの SSA にデータ製品が最初に自動複製された後、構成された更新頻度に基づいて、データ製品の変更がアカウントから同期されます。
データ製品が共有の場合、 クロスクラウドの自動フルフィルメントを構成 する際にリフレッシュ頻度を設定します。リフレッシュ頻度は、リストに関連付けられたデータベースに適用されます。複数のリストがデータベースからオブジェクトを共有している場合、それらのリストは同じリフレッシュ頻度を共有します。リフレッシュの日時は、最初のコンシューマーが地域内のデータ製品をリクエストした時期に応じて異なります。
データ製品がアプリケーションパッケージの場合は、アカウントレベルで更新頻度を設定し、アカウントから提供するすべてのアプリケーションパッケージにその更新頻度が適用されます。
自動複製に関する考慮事項¶
リストに自動複製を使用する場合は、以下を考慮します。
AWS Marketplace、 GCP Marketplace、またはAzure Marketplaceを使用してSnowflakeにサインアップした場合は、そのようなクラウドでのみアカウントを作成して SSAs を確保できます。現在のクラウドサービスリージョン外にリストを複製することはできません。
複製されるデータ製品のサイズによっては、データ製品をコンシューマーに提供するまでに時間のかかる場合があります。データ製品のサイズも自動複製のコストに影響を与える可能性があります。コストの詳細については、 クロスクラウドの自動複製コストの管理 をご参照ください。
オブジェクトレベルモード(SUBDB)がデフォルトで使用されます。
リストがすでにフルデータベースモード(FULL_DATABASE)になっているデータベースにあるオブジェクトを使用する場合、Snowsightに警告が表示され、データベースはフルデータベースモードのままになります。
Tri-Secret Secure を使用する場合は、 Snowflakeサポート に連絡して、自動フルフィルメントに使用する安全な共有領域でTri-Secret Secureを有効にする必要があります。
Tri-Secret Secureでは、クエリ結果はプロバイダーのキー、Snowflakeのキー、コンシューマーのキーを1つずつ使用して暗号化されます。それぞれのキーは独立してアクセスを管理します。キーが取り消されると、その所有者だけがアクセス権を失います。例えば、プロバイダーキーを取り消したとしても、コンシューマーがすでに取得されたデータにアクセスすることは妨げられません。
注釈
自動複製では、データ製品のサイズに 10TB の制限を設けています。サイジングエラーが発生した場合は、 Cross-Cloud Auto-Fulfillmentのトラブルシューティング をご参照ください。
コストへの影響を評価した後で Snowflakeサポート に連絡し、サイズ制限を増やすことができます。
自動複製がサポートされているオブジェクト¶
リストに含まれる、または 参照される データベースオブジェクトには、自動複製のサポートがあるオブジェクトのみを含める必要があります。
データ製品に応じてサポートされているオブジェクトは異なります。
オブジェクト |
共有(データベース) |
アプリケーションパッケージ |
---|---|---|
テーブル |
✔ |
✔ |
ビュー(標準、つまり非セキュア) |
✔ |
✔ |
ビュー(マテリアライズド) |
✔ |
✔ |
ビュー(セキュア) |
✔ |
✔ |
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はデータ製品を必要に応じてリモートリージョンに自動的に転送します。
コストを削減し、管理負担を軽減するために、 SUBDB 自動複製を使用して、データ製品のテーブルとビューのみをリモートリージョンに複製する選択ができます。
オブジェクトレベルの自動複製について¶
オブジェクトレベルの自動複製を構成すると、 SUBDB がサポートされているオブジェクトに使用されます。これらのオブジェクトから参照されるオブジェクトもサポートされている必要があります。サポートされるオブジェクトのリストについては、 自動複製がサポートされているオブジェクト をご参照ください。

地域の最初のコンシューマーがリストを取得します。
自動複製により、共有内のオブジェクトがセキュリティで保護された共有領域に転送されます。
リストを取得したコンシューマーは、Snowflakeリージョンの安全な共有領域からデータ製品を取得します。
オブジェクトレベルの自動複製で何が複製されるか¶
データ製品に SUBDB (オブジェクトレベル)の自動複製を使用する場合、共有またはアプリに直接付与されたオブジェクト、または共有またはアプリ内のオブジェクトによって参照されたオブジェクトのみが自動複製されます。
例:
データ製品のオブジェクト |
転送内容 |
---|---|
データベースとスキーマのテーブル |
テーブル |
同じデータベース内のテーブルから作成されたセキュアビュー |
セキュアビューとテーブル |
FULL_DATABASE 自動複製を使用したデータベースのテーブル |
データベース全体 |
SUBDB 自動複製を使用したデータベースのテーブル |
テーブル |
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'
注釈
リージョンのデータ製品の更新スケジュールは、そのリージョンのコンシューマーがデータ製品を最初にリクエストした日付と時刻に基づきます。cron式を使ってリストのスケジュールを設定することもできます。詳細については、 LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE をご参照ください。
アカウントがクロスクラウドの自動複製を設定できるようにする¶
アカウントの組織の管理者(つまり、 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 ロールを持つユーザーがクロスクラウドの自動複製を管理できるかどうかを確認するアカウントの名前を指定します。 アカウント識別子 をご参照ください。