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

安全管理

最近更新时间2024.04.15 11:37:00

首次发布时间2023.12.28 21:21:52

阅读本文,您可以获取 Go SDK 安全管理的接口调用示例,实现快速开发。

说明

本文的调用示例包含接口的全部参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。

调用说明

  • 本文提供的接口调用示例均通过 AK 和 SK 初始化实例。
  • 接口的参数说明和错误码等信息可通过接口文档或打开 API Explorer文档说明页签查看。

前提条件

调用接口前,请先完成 Go SDK 的安装及初始化操作

调用示例

本节为您介绍安全管理相关接口的功能和调用示例。

添加或更新推拉流鉴权

您可以调用 UpdateAuthKey 接口添加或更新推拉流鉴权。详细的参数说明可参见 UpdateAuthKey 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.UpdateAuthKeyBody{}
     
  //应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
  var bodyApp *string 

  var bodyAppValue string = "live" 

  bodyApp = &bodyAppValue 

  body.App = bodyApp 
    
  //鉴权配置参数,包括鉴权密钥、鉴权字段、加密字符串生成算法等。
  updateAuthKeyBodyAuthDetailListItem := live_v20230101.UpdateAuthKeyBodyAuthDetailListItem{}
 
  //自定义鉴权密钥,支持由大小写字母(A - Z、a - z)和数字(0 - 9)组成,长度为 1 到 100 个字符。
  updateAuthKeyBodyAuthDetailListItem.SecretKey = "1*****1"
    
  //加密字符串生成算法,取值及含义如下所示。
  // <li> `md5`:标准 MD5 算法; </li>
  // <li> `md5_custom`:自定义 MD5 算法。 </li>
  updateAuthKeyBodyAuthDetailListItem.EncryptionAlgorithm = "md5"
    
  //鉴权参数字段名称,当前开启域名 URL 地址鉴权时,会通过对地址中的加密字符串和过期时间校验实现 URL 鉴权。默认加密字符串信息的 key 值为 `volcSecret`,过期时间信息的 key 值为 `volcTime`。
  // 默认情况下表示`{"volcSecret":"volcSecret","volcTime":"volcTime"}`,您可以自定义参数名,例如,
  // `{"volcSecret":"sign","volcTime":"expire"}
  // `。
  updateAuthKeyBodyAuthDetailListItemAuthField := map[string]*string{}

  var updateAuthKeyBodyAuthDetailListItemAuthFieldvolcSecret *string 

  var updateAuthKeyBodyAuthDetailListItemAuthFieldvolcSecretValue string  = "sign" 

  updateAuthKeyBodyAuthDetailListItemAuthFieldvolcSecret = &updateAuthKeyBodyAuthDetailListItemAuthFieldvolcSecretValue 

  updateAuthKeyBodyAuthDetailListItemAuthField["volcSecret"] = updateAuthKeyBodyAuthDetailListItemAuthFieldvolcSecret  

  var updateAuthKeyBodyAuthDetailListItemAuthFieldvolcTime *string 

  var updateAuthKeyBodyAuthDetailListItemAuthFieldvolcTimeValue string  = "expire" 

  updateAuthKeyBodyAuthDetailListItemAuthFieldvolcTime = &updateAuthKeyBodyAuthDetailListItemAuthFieldvolcTimeValue 

  updateAuthKeyBodyAuthDetailListItemAuthField["volcTime"] = updateAuthKeyBodyAuthDetailListItemAuthFieldvolcTime 
  updateAuthKeyBodyAuthDetailListItem.AuthField = updateAuthKeyBodyAuthDetailListItemAuthField
     
    
  //生成加密字符串所需字段。对称加密算法	`EncryptionAlgorithm`,加密字段存在差异。
  // <li> 当加密算法使用 `md5` 时:默认加密字段为 `["AppName","StreamName","key","expireTime"]`,且不支持修改;  </li>
  // <li> 当加密算法使用 `md5_custom` 时:默认无加密字段,但推荐至少包含 `key`	和 `volcTime`。同时您还可以自定义	`Domain`、`AppName`、`StreamName` 等字段。	例如,选择	key、volcTime	和	Domain	作为加密字段,则取值为	`["key","volcTime","Domain"]`。 </li>
  updateAuthKeyBodyAuthDetailListItemEncryptField := []*string{}

  var updateAuthKeyBodyAuthDetailListItemEncryptField0 *string 

  var updateAuthKeyBodyAuthDetailListItemEncryptField0Value string  = "key" 

  updateAuthKeyBodyAuthDetailListItemEncryptField0 = &updateAuthKeyBodyAuthDetailListItemEncryptField0Value 

  updateAuthKeyBodyAuthDetailListItemEncryptField = append(updateAuthKeyBodyAuthDetailListItemEncryptField, updateAuthKeyBodyAuthDetailListItemEncryptField0)    

   var updateAuthKeyBodyAuthDetailListItemEncryptField1 *string 

  var updateAuthKeyBodyAuthDetailListItemEncryptField1Value string  = "volcTime" 

  updateAuthKeyBodyAuthDetailListItemEncryptField1 = &updateAuthKeyBodyAuthDetailListItemEncryptField1Value 

  updateAuthKeyBodyAuthDetailListItemEncryptField = append(updateAuthKeyBodyAuthDetailListItemEncryptField, updateAuthKeyBodyAuthDetailListItemEncryptField1)    

   var updateAuthKeyBodyAuthDetailListItemEncryptField2 *string 

  var updateAuthKeyBodyAuthDetailListItemEncryptField2Value string  = "Domain" 

  updateAuthKeyBodyAuthDetailListItemEncryptField2 = &updateAuthKeyBodyAuthDetailListItemEncryptField2Value 

  updateAuthKeyBodyAuthDetailListItemEncryptField = append(updateAuthKeyBodyAuthDetailListItemEncryptField, updateAuthKeyBodyAuthDetailListItemEncryptField2)    

  updateAuthKeyBodyAuthDetailListItem.EncryptField = updateAuthKeyBodyAuthDetailListItemEncryptField
    
  body.AuthDetailList = append(body.AuthDetailList,updateAuthKeyBodyAuthDetailListItem)
    
  //直播流使用的域名。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。
  // note:
  // 参数 `Domain` 和 `Vhost` 传且仅传一个。
  var bodyDomain *string 

  var bodyDomainValue string = "push.example.com" 

  bodyDomain = &bodyDomainValue 

  body.Domain = bodyDomain 
    
  //是否开启 URL 地址鉴权,取值及含义如下所示。
  // <li> `false`:关闭(默认值); </li>
  // <li> `true`:开启。 </li>
  var bodyPushPullEnable *bool 

  var bodyPushPullEnableValue bool = true 

  bodyPushPullEnable = &bodyPushPullEnableValue 

  body.PushPullEnable = bodyPushPullEnable 
    
  //鉴权场景类型,取值及含义如下所示。
  // <li> `push`:推流鉴权; </li>
  // <li> `pull`:拉流鉴权。 </li>
  body.SceneType = "push"
    
  //鉴权生效时长,单位为秒,默认值为 604800,取值范围为 [60,2592000],超出生效时长后 URL 无法使用。
  var bodyValidDuration *int32 

  var bodyValidDurationValue int32 = 60 

  bodyValidDuration = &bodyValidDurationValue 

  body.ValidDuration = bodyValidDuration 
    
  //域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。
  // note:
  // 参数 `Domain` 和 `Vhost` 传且仅传一个。
  var bodyVhost *string 

  var bodyVhostValue string = "push.example.com" 

  bodyVhost = &bodyVhostValue 

  body.Vhost = bodyVhost
  
  resp, err := service.UpdateAuthKey(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

查询推拉流鉴权

您可以调用 DescribeAuth 接口查询推拉流鉴权。详细的参数说明可参见 DescribeAuth 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.DescribeAuthBody{}
     
  //应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
  var bodyApp *string 

  var bodyAppValue string = "live" 

  bodyApp = &bodyAppValue 

  body.App = bodyApp 
    
  //直播流使用的域名。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看待配置鉴权的推拉流域名。
  // note:
  // 参数 `Domain` 和 `Vhost` 传且仅传一个。
  var bodyDomain *string 

  var bodyDomainValue string = "push.example.com" 

  bodyDomain = &bodyDomainValue 

  body.Domain = bodyDomain 
    
  //鉴权场景类型,取值及含义如下所示。
  // <li> `push`:推流鉴权; </li>
  // <li> `pull`:拉流鉴权。 </li>
  body.SceneType = "push"
    
  //域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。
  // note:
  // 参数 `Domain` 和 `Vhost` 传且仅传一个。
  var bodyVhost *string 

  var bodyVhostValue string = "push.example.com" 

  bodyVhost = &bodyVhostValue 

  body.Vhost = bodyVhost
  
  resp, err := service.DescribeAuth(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

添加或更新 Referer 黑白名单

您可以调用 UpdateReferer 接口添加或更新 Referer 黑白名单。详细的参数说明可参见 UpdateReferer 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.UpdateRefererBody{}
     
  //应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
  // note:
  // 参数 `Domain` 和 `App` 传且仅传一个。
  var bodyApp *string 

  var bodyAppValue string = "live" 

  bodyApp = &bodyAppValue 

  body.App = bodyApp 
    
  //拉流域名,您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名。
  // note:
  // 参数 `Domain` 和 `App` 传且仅传一个。
  var bodyDomain *string 

  var bodyDomainValue string = "push.example.com" 

  bodyDomain = &bodyDomainValue 

  body.Domain = bodyDomain 
    
  //Referer 防盗链规则列表。
  // note:
  // <li> 同一个 Vhost 下,默认支持配置不超过 100 个 Referer 规则,如需提升限额请[创建工单](https://console.volcengine.com/workorder/create?step=2&SubProductID=P00000076)获取技术支持; </li>
  // <li> 单次请求最多支持配置 100 个 Referer 规则。 </li>
  updateRefererBodyRefererInfoListItem := live_v20230101.UpdateRefererBodyRefererInfoListItem{}
 
  //用于标识 referer 防盗链的关键词默认取值为 `referer`。
  updateRefererBodyRefererInfoListItem.Key = "referer"
    
  //Referer 字段规则的匹配优先级,默认为 `0`,取值范围为 [0,100],数值越大,优先级越高。如果优先级相同,则越早加入列表的域名优先级越高。
  var updateRefererBodyRefererInfoListItemPriority *int32 

  var updateRefererBodyRefererInfoListItemPriorityValue int32 = 80 

  updateRefererBodyRefererInfoListItemPriority = &updateRefererBodyRefererInfoListItemPriorityValue 

  updateRefererBodyRefererInfoListItem.Priority = updateRefererBodyRefererInfoListItemPriority 
    
  //Referer 字段规则类型,取值即含义如下所示。
  // <li> `deny`:拒绝,即黑名单; </li>
  // <li> `allow`:通过,即白名单。 </li>
  updateRefererBodyRefererInfoListItem.Type = "deny"
    
  //Referer 字段规则,即设置的黑名单或白名单的域名,最大长度限制 300 个字符。
  var updateRefererBodyRefererInfoListItemValue *string 

  var updateRefererBodyRefererInfoListItemValueValue string = "live.example1.net" 

  updateRefererBodyRefererInfoListItemValue = &updateRefererBodyRefererInfoListItemValueValue 

  updateRefererBodyRefererInfoListItem.Value = updateRefererBodyRefererInfoListItemValue 
    
  body.RefererInfoList = append(body.RefererInfoList,updateRefererBodyRefererInfoListItem)
    
  //域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。
  body.Vhost = "push.example.com"
  
  resp, err := service.UpdateReferer(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

查询 Referer 黑白名单

您可以调用 DescribeReferer 接口查询 Referer 黑白名单。详细的参数说明可参见 DescribeReferer 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.DescribeRefererBody{}
     
  //应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
  // note:
  // 参数 `Domain` 和 `App` 至少传一个。
  var bodyApp *string 

  var bodyAppValue string = "live" 

  bodyApp = &bodyAppValue 

  body.App = bodyApp 
    
  //拉流域名,您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名。
  // note:
  // <li> 参数 `Domain` 和 `Vhost` 传且仅传一个。 </li>
  // <li> 参数 `Domain` 和 `App` 至少传一个。 </li>
  var bodyDomain *string 

  var bodyDomainValue string = "push.example.com" 

  bodyDomain = &bodyDomainValue 

  body.Domain = bodyDomain 
    
  //域名空间,即直播流地址的域名(`Domain`)所属的域名空间(`Vhost`)。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看拉流域名所属的域名空间。
  // note:
  // 参数 `Domain` 和 `Vhost` 传且仅传一个。
  var bodyVhost *string 

  var bodyVhostValue string = "push.example.com" 

  bodyVhost = &bodyVhostValue 

  body.Vhost = bodyVhost
  
  resp, err := service.DescribeReferer(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

删除 Referer 黑白名单

您可以调用 DeleteReferer 接口删除 Referer 黑白名单。详细的参数说明可参见 DeleteReferer 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.DeleteRefererBody{}
     
  //域名空间名称。
  body.Vhost = "live.push.example.com"
    
  //拉流域名。
  // <li> 如创建时传了 `Domain`,删除时需要传该参数; </li>
  // <li> 如创建时未传 `Domain`,删除时不传该参数。 </li>
  var bodyDomain *string 

  var bodyDomainValue string = "live.push.example.com" 

  bodyDomain = &bodyDomainValue 

  body.Domain = bodyDomain 
    
  //应用名称
  // <li> 如创建时传了 `App`,删除时需要传该参数; </li>
  // <li> 如创建时未传 `App`,删除时不传该参数。 </li>
  var bodyApp *string 

  var bodyAppValue string = "live" 

  bodyApp = &bodyAppValue 

  body.App = bodyApp
  
  resp, err := service.DeleteReferer(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

创建或更新 IP 访问限制

您可以调用 UpdateIPAccessRule 接口创建或更新 IP 访问限制。详细的参数说明可参见 UpdateIPAccessRule 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.UpdateIPAccessRuleBody{}
     
  //域名空间名称。
  body.Vhost = "push.example.com"
    
  //推/拉流域名。
  body.Domain = "push.example.com"
    
  //IP 访问限制规则。
  bodyIPAccessRule := live_v20230101.UpdateIPAccessRuleBodyIPAccessRule{}

  //IP 访问限制的类型,取值及含义如下。
  // <li> allow: 白名单; </li>
  // <li> deny: 黑名单。 </li>
  bodyIPAccessRule.Type = "deny"
    
  //是否开启当前限制,取值及含义如下。
  // <li> true: 开启; </li>
  // <li> false: 关闭。 </li>
  bodyIPAccessRule.Enable = true
    
  //名单中的 IP 信息。
  bodyIPAccessRuleIPList := []string{}

  var bodyIPAccessRuleIPList0 string 

  var bodyIPAccessRuleIPList0Value string  = "1.1.1.2" 

  bodyIPAccessRuleIPList0 = bodyIPAccessRuleIPList0Value 

  bodyIPAccessRuleIPList = append(bodyIPAccessRuleIPList, bodyIPAccessRuleIPList0)    

   var bodyIPAccessRuleIPList1 string 

  var bodyIPAccessRuleIPList1Value string  = "192.168.0.1/24" 

  bodyIPAccessRuleIPList1 = bodyIPAccessRuleIPList1Value 

  bodyIPAccessRuleIPList = append(bodyIPAccessRuleIPList, bodyIPAccessRuleIPList1)    

  bodyIPAccessRule.IPList = bodyIPAccessRuleIPList
    
  
  body.IPAccessRule = bodyIPAccessRule
  
  resp, err := service.UpdateIPAccessRule(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

查询 IP 访问限制

您可以调用 DescribeIPAccessRule 接口查询 IP 访问限制。详细的参数说明可参见 DescribeIPAccessRule 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.DescribeIPAccessRuleBody{}
     
  //域名空间名称。
  body.Vhost = "push.example.com"
    
  //推/拉流域名。
  body.Domain = "push.example.com"
  
  resp, err := service.DescribeIPAccessRule(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}

删除 IP 访问限制

您可以调用 DeleteIPAccessRule 接口删除 IP 访问限制。详细的参数说明可参见 DeleteIPAccessRule 接口文档。

接口调用示例如下所示。

package main

import (
    "os"
    "context"
    "fmt"

    "github.com/volcengine/volc-sdk-golang/base"
   	"github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main () {
  // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
  // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
  service := live_v20230101.NewInstance()

  service.SetCredential(base.Credentials{
    AccessKeyID:     os.Getenv("ACCESS_KEY_ID"),
    SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"),
  })

  body := &live_v20230101.DeleteIPAccessRuleBody{}
     
  //域名空间名称。
  body.Vhost = "push.example.com"
    
  //推/拉流域名。
  body.Domain = "push.example.com"
  
  resp, err := service.DeleteIPAccessRule(context.Background(), body)

  if err != nil {
    fmt.Printf("error %v", err)
  } else {
    fmt.Printf("success %+v", resp)
  }
}