Terraform を使用してデータストアを作成する

Terraform を使用して、汎用 Gemini Enterprise データストアを作成したり、Atlassian Confluence、Atlassian Jira、BigQuery、Microsoft SharePoint、Salesforce のデータコネクタを設定したりできます。

始める前に

Terraform を使用してデータストアを作成する前に、次の操作を行います。

  • プロジェクトで課金が有効になっているかどうかを確認します Google Cloud 。

  • プロジェクトに対する Google Cloud プロジェクト IAM 管理者 (roles/resourcemanager.projectIamAdmin)ロールと、Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin) ロールが付与されていることを確認します。

  • 省略可: Microsoft SharePoint などのサードパーティのデータソースを Gemini Enterprise に接続する場合は、データソースのアクセス認証情報(API キーやデータベース認証など)を取得します。

  • hashicorp/google Terraform プロバイダのバージョン 7.7.0 以降を使用していることを確認します。

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    

汎用データストアを作成する

Terraform を使用して空のデータストアを作成するには、 google_discovery_engine_data_store Terraform リソースを使用します。

  1. Terraform 構成を作成します。

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project                 = "PROJECT_ID"
      user_project_override   = true
      billing_project         = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_store" "gemini_search_store" {
      location                    = "LOCATION"
      data_store_id               = "DATA_STORE_ID"
      display_name                = "DATA_STORE_NAME"
      industry_vertical           = "GENERIC"
      content_config              = "NO_CONTENT"
      solution_types              = ["SOLUTION_TYPE_SEARCH"]
      create_advanced_site_search = false
    }
    

    次のように置き換えます。

  2. Terraform を初期化します。

    terraform init -upgrade
    
  3. 構成をプレビューします。

    terraform plan
    
  4. 構成を適用します。

    terraform apply
    

空のデータストアを作成したら、データストアにデータを取り込むことができます using the Google Cloud コンソールまたは API コマンド。

データコネクタを作成する

Terraform を使用してサポートされているサービスのデータコネクタを作成するには、 google_discovery_engine_data_connector Terraform リソースを使用します。json_params に、サービスの認証情報と検索フィルタ構成を含めます。

  1. Terraform 構成を作成します。

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project                 = "PROJECT_ID"
      user_project_override   = true
      billing_project         = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_connector" "LOCAL_NAME" {
      provider = google
    
      project                 = "PROJECT_ID"
      location                = "LOCATION"
      collection_id           = "COLLECTION_ID"
      collection_display_name = "COLLECTION_DISPLAY_NAME"
    
      data_source = "DATA_SOURCE"
    
      json_params = jsonencode({
        "client_id"                = "CLIENT_ID"
        "client_secret"            = "CLIENT_SECRET"
        "instance_uri"             = "INSTANCE_URI"
        "tenant_id"                = "TENANT_ID"
        "structured_search_filter" = { "FILTER_KEY" = ["FILTER_VALUE"] }
      })
    
      refresh_interval = "7200s"
    
      connector_modes = [CONNECTOR_MODES]
    
      entities {
        entity_name = "ENTITY_NAME"
      }
    }
    

    次のように置き換えます。

  2. Terraform を初期化します。

    terraform init -upgrade
    
  3. 構成をプレビューします。

    terraform plan
    
  4. 構成を適用します。

    terraform apply
    

    プロンプトが表示されたら、変更を確認します。

構成を適用すると、 データストアのリストにデータコネクタが表示され、Gemini Enterprise アプリに接続できます。詳細については、 データストアをアプリに接続して Gemini Enterprise を承認するをご覧ください。

データコネクタを更新する

Terraform を使用して既存のデータコネクタの設定を更新するには、json_params に新しい設定を指定し、変更されていない引数を現在の値とともに指定して、Terraform がリソースを置き換えないようにします。更新する必要のない必須引数を lifecycle ブロックの ignore_changes に追加します。

  1. Terraform 構成を作成します。この例では、structured_search_filter 設定を新しいフィルタ値で更新しますが、refresh_intervalentitiesconnector_modes などの他の必須フィールドを現在の値とともに一覧表示します。

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project               = "PROJECT_ID"
      user_project_override = true
      billing_project       = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_connector" "LOCAL_NAME" {
      provider = google
    
      project                 = "PROJECT_ID"
      location                = "LOCATION"
      collection_id           = "COLLECTION_ID"
      collection_display_name = "COLLECTION_DISPLAY_NAME"
    
      data_source = "DATA_SOURCE"
    
      json_params = jsonencode({
        "structured_search_filter" = { "FILTER_KEY" = ["UPDATED_FILTER_VALUE"] }
      })
      refresh_interval = "REFRESH_INTERVAL"
    
      entities {
        entity_name           = "ENTITY_NAME"
        key_property_mappings = {}
      }
      static_ip_enabled = false
      connector_modes   = [CONNECTOR_MODES]
    
      lifecycle {
        ignore_changes = [
          collection_display_name,
          entities,
          refresh_interval
        ]
      }
    }
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID

    • BILLING_PROJECT_ID: 実際の Google Cloud 課金プロジェクト ID

    • LOCAL_NAME: Terraform リソースのローカル名

    • LOCATION: データストアのロケーション(usglobal など)。詳細については、 Gemini Enterprise Standard エディションと Plus エディションのデータの所在地と ML のリージョン処理のコミットメントをご覧ください。

    • COLLECTION_ID: コレクション ID

    • COLLECTION_DISPLAY_NAME: コレクションの表示名

    • DATA_SOURCE: データソースのタイプ。次の値を使用できます。

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • FILTER_KEY: 値を更新するフィルタキー(例: Path

    • UPDATED_FILTER_VALUE: 新しいフィルタ値(例: https://other.sharepoint.com/*

    • REFRESH_INTERVAL: 更新間隔

    • ENTITY_NAME: コネクタが検索するエンティティの名前( リソースのドキュメントを参照

    • CONNECTOR_MODES: コネクタで有効にするモード (例: "FEDERATED"

  2. terraform import を実行して、これが更新オペレーションであることを示します。

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. 構成をプレビューします。

    terraform plan
    

    出力例を以下に示します。

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      ~ update in-place
    
    Terraform will perform the following actions:
    
      google_discovery_engine_data_connector.update-sharepoint-connector will be updated in-place
      ~ resource "google_discovery_engine_data_connector" "update-sharepoint-connector" {
            id                              = "projects/my-project-123/locations/global/collections/default_collection/dataConnector"
          ~ json_params                     = jsonencode(
              ~ {
                  ~ structured_search_filter = {
                      ~ "Path" = [
                          ~ "https://other.sharepoint.com/*" - "https://example.sharepoint.com/*",
                            (1 unchanged element hidden)
                        ]
                    }
                }
            )
            name                            = "projects/my-project-123/locations/global/collections/default_collection/dataConnector"
            (21 unchanged attributes hidden)
    
            (2 unchanged blocks hidden)
        }
    
    Plan: 0 to add, 1 to change, 0 to destroy.
    

    出力の最後の行に 0 to add, 1 to change, 0 to destroy が指定されていることを確認します。

  4. 構成を適用します。

    terraform apply
    

    プロンプトが表示されたら、変更を確認します。

    出力例を以下に示します。

    Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
    

次のステップ