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

Snowflake を接続する

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

DoiT は、Snowflake のコストおよび使用状況データを他のクラウドプロバイダからのデータとあわせて連携し、クラウド支出全体を包括的に把握し、主要なコストドライバー全体でコストを最適化できるようにします。

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

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

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

開始前の確認事項​

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

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

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

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

    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 という名前の warehouse を作成します。これにより、既存の warehouse を干渉することはありません。

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

自分に合った学習パスを選択

以下のステップバイステップの手順に従うか、▶️ インタラクティブデモ を確認して、画面付きの手順を確認してください。

必要な権限​

Snowflake アカウントを DoiT と接続するには、次の条件が必要です。

  • DoiT アカウントで Billing Profiles Admin 権限を持っていること。

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

Snowflake アカウントを接続する​

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

ウィザードを起動するには、次の操作を行ってください。

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

  2. Snowflake integration カードを探します。

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

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

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

Snowflake connection setup wizard

ステップ 1: 要件​

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

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

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

  • DOIT_WAREHOUSE という名前の warehouse。

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

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

まだ DoiT の IP アドレスを含む network policy を設定していない場合:

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

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

Snowflake 接続を更新しており、既存の network policy がある場合:

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

ステップ 3: 接続を設定​

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

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

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

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

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

  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」については、Finding the organization and account name for an account も参照してください。

ステップ 4: 接続をテスト​

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

接続エラーの主な原因は次のとおりです。

  • Organization already connected: すでに接続されている組織を再度接続しようとしている場合、接続テストは失敗します。この場合は別の組織を接続するか、セットアップを終了して既存の接続を使用してください。既存の Snowflake 接続を確認するには、Integrations catalog に移動し、Snowflake integration カードで 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 側が行を返していない状態であることを示します。ページ上部の警告バナーには、結果が空となっている請求ビューが一覧表示されます。

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

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

"Connection error"​

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

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

認証方法を更新する​

新しいキーペア認証方式を使用するように接続を更新するには、DoiT コンソールで案内に従って操作してください。

  1. Integrations catalog に移動し、Snowflake integration card 上の 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 を初めて接続する場合、セットアップスクリプトにはすでにこの権限付与が含まれています。既存の接続がある場合は、Snowflake 上で ACCOUNTADMIN として次のステートメントを実行してください。

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 機能で利用可能になった際には、メールで通知されます。

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

  • Snowflake データがプラットフォームに取り込まれると、Snowflake 利用額に関して cost anomalies を検出した際に通知を受け取ります。

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

  • work with Snowflake data の方法についてさらに詳しく学んでください。

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

ハンズオン形式のウォークスルーを体験できるインタラクティブデモをお試しください。

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