メインコンテンツへスキップ

Snowflake を接続する

Snowflake は、組織がデータを保存・処理・分析するためのクラウド型データウェアハウジングプラットフォームです。Snowflake の利用コストは、データ転送・ストレージ・コンピュートリソースの使用にかかるコストを集計したものです。大規模なデータ処理や分析ニーズを持つ組織では、Snowflake のコストがクラウド支出の多くを占めることがよくあります。

DoiT は、他のクラウドプロバイダーからのデータと並行して Snowflake のコストと利用状況データを統合し、クラウド支出全体を俯瞰できるようにするとともに、主なコスト要因全体でコストを最適化できるよう支援します。

Snowflake はパスワードベース認証を廃止します
  • 初めて Snowflake を DoiT と接続する場合は、セットアップウィザードの手順に従ってください。キー・ペア認証を使用する接続になるように設定されます。

  • 既存の Snowflake 接続が 従来のパスワードベース認証方式を使用している場合は、より安全なキー・ペア認証に認証方式を更新する必要があります。

認証方式の変更に関する詳細については、Snowflake のドキュメント Security MFA rollout および Key-pair authentication を参照してください。

開始前の準備

  • 1 つ以上の Snowflake アカウントを接続できます。複数接続する場合は、接続したい各アカウントについて接続手順を繰り返してください。

  • Snowflake を直接購入、またはマーケットプレイス経由で購入している場合は、そのアカウントを DoiT と接続できますが、Snowflake リセラーとの契約で購入している場合は接続できません。Snowflake アカウントの互換性を確認するには、次のスクリプトを実行してください。リセラー経由での購入が非互換の最も一般的な理由ですが、その他の理由で接続できない場合もあります。スクリプト実行時にエラーが返される、またはクエリが false を返す場合、その Snowflake アカウントは非互換であり、DoiT コンソールに接続することはできません。

    1. 接続したいアカウントで Snowflake コンソール にサインインします。

    2. ProjectsWorksheets を選択し、必要に応じて新規または既存のワークシートを開きます。

    3. 次のスクリプトをコピーし、ワークシートに貼り付けます。

      SELECT
      EXISTS(SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_EVENTS_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.STAGE_STORAGE_USAGE_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.DATABASE_STORAGE_USAGE_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.STORAGE_DAILY_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.WAREHOUSE_METERING_HISTORY LIMIT 1),
      EXISTS(SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.RATE_SHEET_DAILY LIMIT 1);
    4. ロールを選択します。このスクリプトは特別な権限を必要としないため、PUBLIC を含む任意のロールで実行できます。

    5. Run を選択します。

  • DoiT コンソールで Snowflake データを利用するために、お客様に代わって DOIT_WAREHOUSE という名前のウェアハウスを作成します。これにより、既存のウェアハウスに干渉することはありません。

  • クエリは 1 日に複数回、各回およそ 15 分間実行されます。通常は 1 日あたり約 1 米ドルのコストが発生します。DOIT_WAREHOUSE の正確な料金を確認するには、Cloud Analytics レポートを実行し、フィルターにウェアハウス名を使用してください。例については DOIT_WAREHOUSE のコスト を参照してください。

学習パスを選択する

以下のステップバイステップ手順に従うか、ビジュアルな手順説明として ▶️ インタラクティブデモ を確認してください。

必要な権限

Snowflake アカウントを DoiT と接続するには、次の要件を満たす必要があります。

  • DoiT アカウントに Billing Profiles Admin 権限が付与されていること。

  • Snowflake アカウントに、管理者権限を持つ有効な Snowflake サブスクリプションがあること。

Snowflake アカウントを接続する

DoiT コンソールには、Snowflake アカウントの接続を支援するステップバイステップウィザードが用意されています。

ウィザードを起動するには、次のようにしてください。

  1. 画面上部のナビゲーションメガメニューから Data ingestion and integrations > Integrations を選択します。

  2. Snowflake のインテグレーションカードを見つけます。

    • 最初のアカウントを追加する場合は Connect + を選択します。

    • 追加のアカウントを設定する場合は Manage を選択し、続いて Connect new account を選択します。

ウィザードは 4 つのステップで構成されています。

Snowflake connection setup wizard

ステップ 1: 要件

最初のステップには、実行が必要なスクリプトに関する説明情報が表示されます。このスクリプトは、次のリソースをお客様のアカウントに作成します。

  • 次の Snowflake 権限を持つ DoiT ロール: ORGANIZATION_USAGE_VIEWER, GOVERNANCE_VIEWER, ORGANIZATION_BILLING_VIEWER, USAGE_VIEWER, SECURITY_VIEWERUSAGE_VIEWER は標準的な Cortex 使用状況テレメトリを提供し、SECURITY_VIEWER はユーザー ID を名前とメールアドレスに解決します。詳細は Snowflake database roles を参照してください。

  • 上記の DoiT ロールを持ち、キー・ペア認証用に構成されたユーザー。

  • DOIT_WAREHOUSE という名前のウェアハウス。

要件を確認したら、Next を選択して接続の設定に進んでください。

セキュリティのベストプラクティスとして、DoiT の特定の IP アドレスに対してのみ Snowflake アカウントへのアクセスを制限する Snowflake Network policy を作成することを強く推奨します。このようなポリシーがある場合、Google Cloud の VPC と Cloud NAT を使用して、Snowflake へのすべての送信リクエストがDoiT の IP アドレスを経由するようにルーティングします。このポリシーは、次のステップで作成される DoiT サービスアカウントに適用されます。

まだ DoiT の IP アドレスを含むネットワークポリシーを設定していない場合:

  1. ウィザードに表示される SQL スクリプトをコピーし、Snowflake コンソールで実行して、DoiT の IP アドレスへのアクセスに限定するネットワークポリシーを作成してください。

  2. ウィザード内のチェックボックスはオフのままにし、Next を選択して続行してください。

Snowflake 接続を更新しており、既存のネットワークポリシーがある場合:

  1. 既存のポリシーがあることを示すチェックボックスをウィザード内でオンにし、Next を選択して続行してください。

ステップ 3: 接続を設定する

このステップでは、Snowflake アカウントと DoiT コンソール間の接続を設定します。

  1. 管理者権限を持つアカウントで Snowflake コンソール にサインインします。

  2. ProjectsWorksheets を選択し、ワークシートを開きます。

  3. ステップバイステップウィザードに表示されるスクリプトをコピーし、Snowflake のワークシートに貼り付けます。

  4. ワークシート上部で、スクリプトを実行するウェアハウスを選択します。

  5. ワークシートを実行するロールを選択し、Run ボタンを展開して Run All を選択します。

  6. DoiT コンソールのウィザードに戻り、Snowflake アカウント ID と組織 ID を入力します。これらは URL https://app.snowflake.com/ORGANIZATION_ID/ACCOUNT_ID で確認できます。同じ組織を複数回接続することはできません。

    「Finding the organization and account name for an account」(アカウントの組織名とアカウント名の確認) も参照してください。
    https://docs.snowflake.com/en/user-guide/admin-account-identifier#finding-the-organization-and-account-name-for-an-account

ステップ 4: 接続をテストする

最後のステップでは、Test connection を選択して Snowflake 接続をテストします。通常、このテストは数秒で完了します。

接続エラーの主な原因には次のようなものがあります。

  • Organization already connected: すでに接続されている組織を再度接続しようとすると、接続テストは失敗します。この場合は別の組織を接続するか、セットアップを中止して既存の接続を使用してください。既存の Snowflake 接続を確認するには、Integrations catalog に移動し、Snowflake インテグレーションカードで Manage を選択してください。

  • Updating authentication method: 既存の接続に対して認証方式を更新する場合は、新しい接続を作成するのではなく、アセットリストから Update authentication オプションを使用していることを確認してください。

  • Incorrect credentials: Snowflake の URL https://app.snowflake.com/ORGANIZATION_ID/ACCOUNT_ID から取得した正しい organization ID と account ID を入力していることを確認してください。

接続ステータス

「No data」

Snowflake アセットページでステータスが No data となっている Snowflake アカウントは、接続自体は正常で DoiT が請求ビューを読み取れているものの、Snowflake 側から行が返されていないことを示しています。ページ上部の警告バナーには、結果が空になっている請求ビューが一覧表示されます。

USAGE_IN_CURRENCY_DAILY などの組織レベルの請求ビューには、組織に対して直接契約が登録された後にのみデータが入力されます。最近、リセラー経由の契約から直接の Snowflake 契約に切り替えた場合は、その契約が組織に対して登録されていることを確認するために Snowflake support に問い合わせてください。

請求ビューにデータが含まれるようになると、次回のデータ取り込み時に No data ステータスは自動的に解除されます。

「Connection error」

Snowflake アセットページでステータスが Connection error となっている Snowflake アカウントは、DoiT がその Snowflake アカウントに接続できなくなっていることを示しています。例えば、認証情報がローテーションされた、または取り消された場合などです。この状態の間は、コストおよび利用状況データの更新が停止します。問題を解決するには、有効な認証情報で認証方式を更新してください。

なお、アカウントに No data の条件もある場合でも、表示されるステータスは Connection error のみです。

認証方法を更新する

新しいキーペア認証方式を使用するように接続を更新するには、DoiT コンソールでガイド付きエクスペリエンスに従ってください。

  1. Integrations catalog に移動します。Snowflake インテグレーションを検索し、インテグレーションカードで Manage を選択します。

  2. 有効な Snowflake 接続を見つけます。右側のメニューで Update authentication を選択します。

  3. Connect your Snowflake accounts の手順を繰り返します。Set up connection のステップには、キーペア認証を正しく設定するための更新済みスクリプトが含まれています。

GenAI ユーザーアトリビューションを有効にする

DoiT は、Snowflake Cortex AI のコストを個々のモデル、関数、エージェント、ユーザーにアトリビュートします。AI Functions のユーザー名を解決し、AI Functions と Cortex Agents の請求行にメールアドレスを追加するために、DoiT は Snowflake アカウントのユーザーディレクトリを参照します。この処理には SECURITY_VIEWER データベースロールが必要です。

Snowflake を初めて接続する場合、セットアップスクリプトにはすでにこの付与が含まれています。既存の接続がある場合は、ACCOUNTADMIN として Snowflake で次のステートメントを実行してください。

USE ROLE ACCOUNTADMIN;
GRANT DATABASE ROLE SNOWFLAKE.SECURITY_VIEWER TO ROLE doit_role;

この付与がなくても、Cortex AI のコストアトリビューションは機能します。AI Functions の行にある genai/user_name ラベルは数値のユーザー ID にフォールバックし、genai/user_email は利用不可となります。Cortex Agents の行には、引き続き Snowflake が報告するユーザー名が含まれます。

SECURITY_VIEWER 付与がない場合、Snowflake アセットページに、コピー可能な GRANT ステートメントを含む警告バナーが表示されます。バナーは、次回のデータ取り込みが正常に完了した後(最大 12 時間)に自動的にクリアされます。

Cloud Analytics(クラウド分析)で利用可能な Cortex AI のディメンションの詳細については、Cortex AI cost attribution を参照してください。

次のステップ

  • Snowflake アカウントとの接続が正常に完了すると、請求データの取り込みを開始します。この処理には最大 1 時間かかる場合があります。データが Cloud Analytics やその他の DoiT 機能で利用可能になると、メールが届きます。

  • 初回接続時に、DoiT は追加された各ウェアハウスについて、過去 6 か月分の履歴請求データと使用データを取り込みます。

  • Snowflake データがプラットフォームに取り込まれると、Snowflake の支出におけるコストのアノマリー を検出した際に通知が届きます。

  • すぐに Snowflake データを監視するには、Snowflake Intelligence を確認してください。

  • Snowflake データを操作する 方法の詳細をご覧ください。

▶️ インタラクティブデモ

操作しながら学べるインタラクティブデモをお試しください。

デモが正しく表示されない場合は、ブラウザウィンドウを拡大するか、新しいタブでデモを開いて 試してください。