You need to enable JavaScript to run this app.
导航

通过 Go SDK 创建基础资源

最近更新时间2023.11.23 22:10:08

首次发布时间2023.11.23 22:10:08

日志服务基础资源包括日志项目、日志主题等,本文档通过示例代码演示如何通过 SDK 创建日志项目、日志主题并配置索引。

前提条件

  • 已安装日志服务 Go SDK。更多信息,请参见安装 Go SDK

  • 已执行以下命令安装 proto 依赖包。

    go get -u github.com/gogo/protobuf/proto
    
  • 已添加 VOLCENGINE_ACCESS_KEY_ID 等环境变量。环境变量的配置方式请参考配置身份认证信息

    注意

    推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。

创建基础资源

场景说明

本文档通过示例代码演示如何通过 SDK 在指定地域下创建日志项目、日志主题并配置索引。日志项目所在的地域为 your-service-region,且与初始化 Client 时填写的地域一致。创建日志主题时,推荐开启自动分裂分区,在业务突发大流量的场景中避免数据读写速度受限于分区数量。本文以同时开启全文索引和键值索引为例,您可以根据日志字段及检索分析需求按需设置索引,关于设置索引的详细说明请参考配置索引

示例代码

创建日志项目、日志主题并配置索引的示例代码如下。

package tls

import (
    "fmt"
    "github.com/volcengine/volc-sdk-golang/service/tls"
)

func main() {
    // 初始化客户端,推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。详细说明请参考https://www.volcengine.com/docs/6470/1166455
    // 使用 STS 时,ak 和 sk 均使用临时密钥,且设置 VOLCENGINE_TOKEN;不使用 STS 时,VOLCENGINE_TOKEN 部分传空
    client := tls.NewClient(os.Getenv("VOLCENGINE_ENDPOINT"), os.Getenv("VOLCENGINE_ACCESS_KEY_ID"), 
        os.Getenv("VOLCENGINE_ACCESS_KEY_SECRET"), os.Getenv("VOLCENGINE_TOKEN"), os.Getenv("VOLCENGINE_REGION"))

    // 创建日志项目
    // 请根据您的需要,填写ProjectName和可选的Description;请您填写和初始化client时一致的Region;
    // CreateProject API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112174
    createProjectResp, err := client.CreateProject(&tls.CreateProjectRequest{
       ProjectName: "project-name",
       Description: "project-description",
       Region:      "your-service-region",
    })
    if err != nil {
       // 处理错误
       fmt.Println(err.Error())
    }
    projectID := createProjectResp.ProjectID

    // 创建日志主题
    // 请根据您的需要,填写ProjectId、TopicName、Ttl、Description、ShardCount、AutoSplit、MaxSplitShard、EnableTracking等参数值
    // CreateTopic API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112180
    maxSplitShard := int32(10)
    enableTracking := true
    createTopicResp, err := client.CreateTopic(&tls.CreateTopicRequest{
       ProjectID:      projectID,
       TopicName:      "topic-name",
       Ttl:            30,
       Description:    "topic-description",
       ShardCount:     2,
       AutoSplit:      true,
       MaxSplitShard:  &maxSplitShard,
       EnableTracking: &enableTracking,
    })
    if err != nil {
       // 处理错误
       fmt.Println(err.Error())
    }
    topicID := createTopicResp.TopicID

    // 创建索引配置
    // 请根据您的需要,填写TopicId,开启FullText全文索引或KeyValue键值索引或同时开启二者
    // CreateIndex API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112187
    _, err = client.CreateIndex(&tls.CreateIndexRequest{
       TopicID: topicID,
       FullText: &tls.FullTextInfo{
          Delimiter:      ",-;",
          CaseSensitive:  false,
          IncludeChinese: false,
       },
       KeyValue: &[]tls.KeyValueInfo{
          {
             Key: "key1",
             Value: tls.Value{
                ValueType:      "text",
                Delimiter:      ", ?",
                CasSensitive:   false,
                IncludeChinese: false,
                SQLFlag:        false,
             },
          },
          {
             Key: "key2",
             Value: tls.Value{
                ValueType:      "long",
                Delimiter:      "",
                CasSensitive:   false,
                IncludeChinese: false,
                SQLFlag:        true,
             },
          },
       },
    })
    if err != nil {
       // 处理错误
       fmt.Println(err.Error())
    }
}

相关文档

  • 通过 SDK 发送调用 API 的请求以后,您会收到服务端的响应,如果响应中包含 200 以外的状态码,表示接口调用失败。您可以参考各个 API 的文档查看对应的错误码信息。

  • 本示例中涉及到的 API 接口如下。您可以参考 API 文档查看对应接口的详细信息。

    API

    说明

    CreateProject

    调用 CreateProject 接口创建一个日志项目。

    CreateTopic

    调用 CreateTopic 接口创建日志主题。

    CreateIndex

    调用 CreateIndex 接口创建索引。

  • 关于日志服务基础资源管理的完整示例代码,请参考 TLS Go SDK Demo on GitHub