使用 Terraform 创建数据存储区

您可以使用 Terraform 创建通用的 Gemini Enterprise 数据存储区,也可以为 Atlassian Confluence、Atlassian Jira、BigQuery、Microsoft SharePoint 或 Salesforce 设置数据连接器。

准备工作

在使用 Terraform 创建数据存储区之前,请执行以下操作:

  • 检查您的 Google Cloud 项目是否已启用结算功能。

  • 确保您拥有项目的 Project IAM Admin (roles/resourcemanager.projectIamAdmin) 角色,以及 Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 角色。 Google Cloud

  • 可选:如果您要将 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
    

创建空数据存储区后,您可以使用 控制台或 API 命令 Google Cloud 将数据注入到该数据存储区中。

创建数据连接器

如需使用 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 资源的本地名称

    • LOCATION:数据存储区的位置,例如 usglobal(如需了解详情,请参阅 Gemini Enterprise Standard 版和 Plus 版的数据驻留和机器学习区域处理承诺

    • 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 资源的本地名称

    • LOCATION:数据存储区的位置,例如 usglobal(如需了解详情,请参阅 Gemini Enterprise Standard 版和 Plus 版的数据驻留和机器学习区域处理承诺

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

后续步骤