使用 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 金鑰或資料庫驗證)。

  • 確認您使用的是 7.7.0 以上版本的 hashicorp/google Terraform 供應程式:

    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
    

建立空白資料儲存庫後,即可使用 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"
      }
    }
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案 ID

    • BILLING_PROJECT_ID:您的 Google Cloud 帳單專案 ID

    • LOCAL_NAME:Terraform 資源的本機名稱

    • :資料儲存庫的位置,例如 usglobal (詳情請參閱 Gemini Enterprise Standard 和 Plus 版的資料落地和機器學習區域處理承諾)LOCATION

    • COLLECTION_ID:集合 ID

    • COLLECTION_DISPLAY_NAME:集合顯示名稱

    • DATA_SOURCE:資料來源類型。支援下列值:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID:服務的用戶端 ID

    • CLIENT_SECRET:服務的用戶端密鑰

    • INSTANCE_URI:執行個體的 URI (例如 https://your-tenant.sharepoint.com)

    • TENANT_ID:租戶 ID

    • FILTER_KEY:篩選鍵 (例如 Path)

    • FILTER_VALUE:篩選器值 (例如 "https://example.sharepoint.com/*")

    • ENTITY_NAME:連接器要搜尋的實體名稱 (請參閱資源說明文件)

    • CONNECTOR_MODES:要為連接器啟用的模式 (例如 "FEDERATED")

  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 資源的本機名稱

    • :資料儲存庫的位置,例如 usglobal (詳情請參閱 Gemini Enterprise Standard 和 Plus 版的資料落地和機器學習區域處理承諾)LOCATION

    • 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.
    

後續步驟