文档首页/ 对象存储服务 OBS/ SDK参考/ Go/ 桶相关接口(Go SDK)/ 获取桶日志管理配置(Go SDK)
更新时间:2024-09-18 GMT+08:00
分享

获取桶日志管理配置(Go SDK)

功能介绍

调用获取桶日志管理配置,可获取指定桶的日志配置。

接口约束

  • 您必须是桶拥有者或拥有获取桶日志管理配置的权限,才能获取桶日志管理配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketLogging权限,如果使用桶策略则需授予GetBucketLogging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略自定义创建桶策略
  • OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点

方法定义

func (obsClient ObsClient) GetBucketLoggingConfiguration(bucketName string, extensions...extensionOptions) (output *GetBucketLoggingConfigurationOutput, err error)

请求参数说明

表1 请求参数列表

参数名称

参数类型

是否必选

描述

bucketName

string

必选

参数解释

桶名。

约束限制:

  • 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。
  • 桶命名规则如下:
    • 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
    • 禁止使用IP地址。
    • 禁止以“-”或“.”开头及结尾。
    • 禁止两个“.”相邻(如:“my..bucket”)。
    • 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。
  • 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

默认取值:

extensions

extensionOptions

可选

参数解释:

桶相关扩展信息。通过调用拓展配置项为对应请求配置额外的拓展请求头,详情参考extensionOptions

返回结果说明

表2 返回结果列表

参数名称

参数类型

描述

output

*GetBucketLoggingConfigurationOutput

参数解释:

接口返回信息,详情参考GetBucketLoggingConfigurationOutput

err

error

参数解释:

接口返回错误信息。

表3 GetBucketLoggingConfigurationOutput

参数名称

参数类型

描述

StatusCode

int

参数解释:

HTTP状态码。

取值范围:

状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码

默认取值:

RequestId

string

参数解释:

OBS服务端返回的请求ID。

默认取值:

ResponseHeaders

map[string][]string

参数解释:

HTTP响应头信息。

默认取值:

Agency

string

参数解释:

目标桶(存放日志文件的桶)的所有者通过统一身份认证服务(IAM)创建的对OBS云服务的委托的名称。

可以选择账号下已有的IAM委托,也可以创建一个新的委托。创建委托参见创建IAM委托

约束限制:

默认情况下,在为委托配置权限时只需设置日志存储桶的上传对象(PutObject)权限。如果日志存储桶开启了默认加密功能,还需要委托同时具有日志存储桶所在区域的KMS Administrator权限。

默认取值:

TargetBucket

string

参数解释:

日志存储桶的桶名,该桶用于存放日志文件。

约束限制:

  • 需要和开启日志功能的桶在同一个region中。
  • 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。
  • 桶命名规则如下:
    • 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
    • 禁止使用IP地址。
    • 禁止以“-”或“.”开头及结尾。
    • 禁止两个“.”相邻(如:“my..bucket”)。
    • 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。
  • 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

默认取值:

TargetPrefix

string

参数解释:

日志文件对象的对象名前缀,设置后日志文件对象将携带统一前缀存储在日志存储桶中。

取值范围:

长度大于0且不超过1024的字符串。

默认取值:

TargetGrants

[]Grant

参数解释:

被授权用户权限信息列表,定义哪些用户可以针对日志文件进行哪些访问操作,详情参考Grant

表4 Grant

参数名称

参数类型

描述

Grantee

Grantee

参数解释:

被授权用户,包括用户类型,账号ID,账号名和被授权用户组,详情参考Grantee

Permission

PermissionType

参数解释:

被授予的权限。

取值范围:

授权策略的取详情参考PermissionType

默认取值:

表5 Grantee

参数名称

参数类型

描述

Type

GranteeType

参数解释:

被授权用户的类型。

取值范围:

用户类型的取值范围详见GranteeType

默认取值:

ID

string

参数解释:

被授权用户的账号ID,即domain_id。

取值范围:

如何获取账号ID请参见如何获取账号ID和用户ID?

默认取值:

DisplayName

string

参数解释:

被授权用户的账号名。

约束限制:

  • 不支持中文。
  • 只能以字母开头。长度为6-32个字符。
  • 只能包含英文字母、数字或特殊字符(-_)。

默认取值:

URI

GroupUriType

参数解释:

被授权的用户组,详见GroupUriType

表6 GranteeType

常量名

原始值

说明

GranteeGroup

Group

用户组。

GranteeUser

CanonicalUser

单个用户。

表7 GroupUriType

常量名

原始值

说明

GroupAllUsers

AllUsers

所有用户。

表8 PermissionType

常量名

原始值

说明

PermissionRead

READ

读权限。

PermissionWrite

WRITE

写权限。

PermissionReadAcp

READ_ACP

读取ACL配置的权限。

PermissionWriteAcp

WRITE_ACP

修改ACL配置的权限。

PermissionFullControl

FULL_CONTROL

完全控制权限,包括对桶或对象的读写权限,以及对桶或对象ACL配置的读写权限。

代码示例

本示例用于获取桶名为examplebucket的日志管理配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
    "fmt"
    "os"
    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实例
    // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。
    obsClient, err := obs.New(ak, sk, endPoint, obs.WithSignature(obs.SignatureObs)/*, obs.WithSecurityToken(securityToken)*/)
    if err != nil {
        fmt.Printf("Create obsClient error, errMsg: %s", err.Error())
    }
    // 指定存储桶名称
    bucketname := "examplebucket"
    // 获取桶的日志管理配置
    output, err := obsClient.GetBucketLoggingConfiguration(bucketname)
    if err == nil {
        fmt.Printf("Get bucket(%s)'s BucketLoggingConfiguration successful!\n", bucketname)
        fmt.Printf("RequestId:%s\n", output.RequestId)
        fmt.Printf("TargetBucket:%s, TargetPrefix:%s\n", output.TargetBucket, output.TargetPrefix)
        for index, grant := range output.TargetGrants {
            fmt.Printf("Grant[%d]-Type:%s, ID:%s, URI:%s, Permission:%s\n",
                index, grant.Grantee.Type, grant.Grantee.ID, grant.Grantee.URI, grant.Permission)
        }
        return
    }
    fmt.Printf("Get bucket(%s)'s BucketLoggingConfiguration fail!\n", bucketname)
    if obsError, ok := err.(obs.ObsError); ok {
        fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.")
        fmt.Println(obsError.Error())
    } else {
        fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.")
        fmt.Println(err)
    }
}

相关链接

  • 关于获取桶日志管理配置的API说明,请参见获取桶日志管理配置
  • 更多关于获取桶日志管理配置的示例代码,请参见Github示例
  • 获取桶日志管理配置过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码

相关文档