更新时间:2026-08-03 GMT+08:00
分享

获取DIS通知策略

功能说明

如果想查询OBS桶上配置的DIS通知策略,可以调用此接口,接口会返回桶上配置的所有策略,一次性返回,不分页。了解更多设置DIS通知策略的相关信息,请参见使用DIS发送OBS事件通知

融合桶不支持设置DIS通知策略。

接口约束

  • 须知:调用DIS策略相关接口前,需在初始化obsClient时调用obs.WithSignature(obs.SignatureObs)指定协议类型。

授权信息

您必须是桶拥有者或者拥有Tenant Administrator权限,才能调用本接口。配置Tenant Administrator权限,需要使用角色与策略授权(旧版IAM,即IAM v3接口),授权操作请参考使用IAM授权

方法定义

func (obsClient ObsClient) GetDisPolicy(bucketName string, extensions ...extensionOptions) (output *GetDisPolicyOutput, err error)

请求参数说明

表1 请求参数说明

参数

类型

必填

说明

bucketName

string

桶名

响应参数说明

表2 GetDisPolicyOutput参数说明

字段

类型

说明

BaseModel

BaseModel

基础模型,包含 RequestId 等

Rules

[]DisPolicyRule

DIS 策略规则列表

表3 DisPolicyRule参数说明

字段

类型

说明

ID

string

规则 ID

取值范围:

[1, 256],满足“^[a-zA-Z0-9_-]{1, 256}$”

Stream

string

DIS服务通道名称。

需要先在DIS服务创建此通道

Project

string

DIS服务通道所属的项目ID

Events

[]string

OBS事件列表

有效值:长度[0, 1023],值允许为任意字符,支持如下事件类型:

  • ObjectCreated:* (所有上传操作)
  • ObjectCreated:Put (上传对象)
  • ObjectCreated:Post (使用浏览器上传对象)
  • ObjectCreated:Copy (拷贝对象)
  • ObjectCreated:CompleteMultipartUpload (合并段)
  • ObjectRemoved:* (所有删除操作)
  • ObjectRemoved:Delete (指定对象版本号删除对象)
  • ObjectRemoved:DeleteMarkerCreated (不指定对象版本号删除对象)

Prefix

string

对象名前缀,用于指定的对象名关键字,根据定义的前缀,输入需要过滤的对象的关键字信息,字符越长匹配精度越高,最大可支持1024个字符,最小可为空。同时,prefix和suffix加起来长度最大为1024个字符

Suffix

string

对象名后缀。用于指定的对象名关键字,根据定义的后缀,输入需要过滤的对象的关键字信息,字符越长匹配精度越高,最大可支持1024个字符,最小可为空。同时,prefix和suffix加起来长度最大为1024个字符

Agency

string

IAM委托名,被委托方必须包含OBS服务,赋予的权限必须是DIS服务的DIS Administrator或DIS User

代码示例

示例-查询桶examplebucket上已经配置的DIS通知策略

package main

import (
	"fmt"
	"log"
        obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
)

func main() {
    //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
    //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。
        ak := os.Getenv("AccessKeyID")
        sk := os.Getenv("SecretAccessKey")
    // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。
    securityToken := os.Getenv("SecurityToken")
    // endpoint填写Bucket对应的Endpoint,这里以华北-北京四为例,其他地区请按实际情况填写。     endPoint := "https://obs.cn-north-4.myhuaweicloud.com"
	// 创建客户端
    obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityToken(securityToken))
    if err != nil {
        fmt.Printf("Create obsClient error, errMsg: %s", err.Error())
    }
// 获取 DIS 策略
	output, err := client.GetDisPolicy("my-bucket")
	if err != nil {
		log.Fatalf("Failed to get DIS policy: %v", err)
	}

	fmt.Printf("Request ID: %s\n", output.RequestId)
	fmt.Printf("Total rules: %d\n\n", len(output.Rules))

	for i, rule := range output.Rules {
		fmt.Printf("[%d] DIS Rule:\n", i+1)
		fmt.Printf("  ID: %s\n", rule.ID)
		fmt.Printf("  Stream: %s\n", rule.Stream)
		fmt.Printf("  Project: %s\n", rule.Project)
		fmt.Printf("  Events: %v\n", rule.Events)
		fmt.Printf("  Prefix: %s\n", rule.Prefix)
		fmt.Printf("  Suffix: %s\n", rule.Suffix)
		fmt.Printf("  Agency: %s\n", rule.Agency)
		fmt.Println()
	}
}

相关链接

  • 更多关于桶清单的示例代码,请参见Github示例
  • DIS通知接口返回的错误码含义、问题原因及处理措施可参考OBS错误码

相关文档