设置桶日志管理配置-SetBucketLogging
功能介绍
用户在创建或访问桶时,默认是不生成桶日志的。用户可通过打开日志配置管理开关,开启桶日志功能。OBS会为您记录跟桶操作相关的各种请求日志,产生的桶日志记录会被存储至同账号同区域下的同一个桶或其他桶中,便于您通过检索和分析日志来完成异常事件回溯和定位等工作。了解更多有关桶日志信息,请参见配置桶的日志记录。
接口约束
- 日志可以存储在产生日志的源桶,也可以存储在其他桶,但日志存储桶和源桶必须属于同一账号下的相同区域。
- 默认存储类别为低频访问存储或归档存储的桶不能作为存放日志文件的桶。日志文件存放到桶中后,这些日志文件会占用空间,并按照用户存放数据同样的计费策略进行计费。
授权信息
调用接口需要的授权
您必须是桶拥有者或拥有设置桶日志管理配置的权限,才能调用本接口,建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见OBS不同权限控制方式的区别。
- 如果使用IAM授权,那么请在“角色与策略授权”、“身份策略授权”两种IAM授权方式中选择一种,并配置相应权限:
- 如果使用角色与策略授权(旧版IAM,即IAM v3接口),需具备obs:bucket:PutBucketLogging权限,授权操作请参见创建IAM自定义策略。
- 如果使用身份策略授权(新版IAM,即IAM v5接口),如下表所示,需具备obs:bucket:putBucketLogging权限,授权操作请参见创建IAM自定义身份策略。
授权项
Action
访问级别
Access Level
资源类型(*为必须)
Resource Type (*: required)
Condition Key
Alias
依赖的授权项
Dependencies
obs:bucket:putBucketLogging
Write
bucket *
-
-
-
- obs:EpochTime
- obs:SourceIp
- obs:TlsVersion
- obs:CustomDomain
- 如果使用桶策略进行授权,需具备obs:bucket:PutBucketLogging权限,具体操作请参见自定义创建桶策略。
请求消息样式
以下为请求消息样例,请将示例中的BucketName修改为您的桶名,RegionID修改为桶所在的区域ID,可参考支持区域获取区域ID。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | PUT /?logging HTTP/1.1 Host: BucketName.obs.RegionID.myhuaweicloud.com Date: GMT Date Authorization: SignatureValue <?xml version="1.0" encoding="UTF-8"?> <BucketLoggingStatus> <Agency>agency-name</Agency> <LoggingEnabled> <TargetBucket>mybucketlogs</TargetBucket> <TargetPrefix>mybucket-access_log-/</TargetPrefix> <TargetGrants> <Grant> <Grantee> <ID>domainID</ID> </Grantee> <Permission>READ</Permission> </Grant> </TargetGrants> </LoggingEnabled> </BucketLoggingStatus> |
URI参数(URI Parameters)
该请求消息中不使用消息参数。
请求头参数(Request headers)
该请求使用公共请求头,具体参见表3。
请求体参数(Request body)
| 名字 | 描述 | 是否必选 |
|---|---|---|
| BucketLoggingStatus | 日志状态信息的容器。 当BucketLoggingStatus为空时,桶日志功能关闭。 类型:Container | 是 |
| Agency | 目标桶Owner通过统一身份认证服务创建的对OBS服务的委托的名称。 类型:String | 设置logging时必选。关闭logging时勿选。 |
| LoggingEnabled | 该元素起到对日志配置管理的使能作用(呈现此元素则打开日志配置,否则关闭配置)。在此元素下,可加入具体的日志配置信息。 类型:Container | 设置logging时必选。关闭logging时勿选。 |
| Grant | 是被授权者及其权限的容器。用于描述谁有什么权限来访问产生的日志文件。 类型:Container | 否 |
| Grantee | 作为被授权logging权限用户的容器。 类型:Container | 否 |
| ID | 被授权者的租户ID,全局唯一标识。 类型:String | 否 |
| Permission | 产生的日志文件对被授权者的具体权限。 类型:String 权限有效值:FULL_CONTROL | READ | WRITE | 否 |
| TargetBucket | 在生成日志时,配置日志桶的所有者可以指定一个桶用于存放产生的日志文件。需要保证配置日志文件的桶owner对存放日志文件的桶有FULL_CONTROL权限。支持多个桶生成的日志放在同一个目标桶中,如果这样做,就需要指定不同的TargetPrefix以达到为来自不同源桶的日志分类的目的。 类型:String | 设置logging时必选。关闭logging时勿选。 |
| TargetPrefix | 通过该元素指定一个前缀,所有生成的日志对象的对象名都以此元素的内容为前缀。 类型:String | 设置logging时必选。关闭logging时勿选。 |
| TargetGrants | 授权信息的容器。 类型:Container | 否 |
存储访问日志的object命名规则
1 | <TargetPrefix>YYYY-mm-DD-HH-MM-SS-<UniqueString> |
- <TargetPrefix>为用户指定的目标前缀。
- YYYY-mm-DD-HH-MM-SS为日志生成的日期与时间,各字段依次表示年、月、日、时、分、秒。
- <UniqueString>为OBS自动生成的字符串。
一个实际用于存储OBS访问日志的object名称示例如下:
1 | bucket-log2015-06-29-12-22-07-N7MXLAF1BDG7MPDV |
- "bucket-log"为用户指定的目标前缀。
- "2015-06-29-12-22-07"为日志生成的日期与时间。
- "N7MXLAF1BDG7MPDV"为OBS自动生成的字符串。
桶访问日志格式
以下所示为在目标桶生成的桶访问日志文件记录:
1 | 787f2f92b20943998a4fe2ab75eb09b8 bucket [13/Aug/2015:01:43:42 +0000] xx.xx.xx.xx 787f2f92b20943998a4fe2ab75eb09b8 281599BACAD9376ECE141B842B94535B REST.GET.BUCKET.LOCATION - "GET /bucket?location HTTP/1.1" 200 - 211 - 6 6 "-" "HttpClient" - - |
每个桶访问日志都包含如下信息:
| 名称 | 示例 | 含义 |
|---|---|---|
| BucketOwner | 787f2f92b20943998a4fe2ab75eb09b8 | 桶的ownerId |
| Bucket | bucket | 桶名 |
| Time | [13/Aug/2015:14:43:42 +0000] | 请求时间戳。格式为:[dd/MMM/yyyy:HH:mm:ss Z],即 [日/月/年:小时:分钟:秒 时区] |
| Remote IP | xx.xx.xx.xx | 请求IP |
| Requester | 787f2f92b20943998a4fe2ab75eb09b8 | 请求者ID
|
| RequestID | 281599BACAD9376ECE141B842B94535B | 请求ID |
| Operation | REST.GET.BUCKET.LOCATION | 操作名称 |
| Key | - | 对象名 |
| Request-URI | GET /bucket?location HTTP/1.1 | 请求URI |
| HTTPStatus | 200 | 返回码。 |
| ErrorCode | - | 错误码 |
| BytesSent | 211 | HTTP响应的字节大小 |
| ObjectSize | - | 对象大小 |
| TotalTime | 6 | 服务端处理时间 单位:ms |
| Turn-AroundTime | 6 | 总请求时间 单位:ms |
| Referer | - | 请求的referrer头域 |
| User-Agent | HttpClient | 请求的user-agent头域 |
| VersionID | - | 请求中带的versionId |
| STSLogUrn | - | 联邦认证及委托授权信息 |
| StorageClass | STANDARD_IA | 当前的对象存储类型。
|
| TargetStorageClass | GLACIER | 通过转换后的对象存储类型 |
| DentryName | 12456%2Ffile.txt |
|
| IAMUserId | 8f3b8c53d29244a780084f2b8c106c32 | IAM用户ID。 当使用匿名用户发起请求,记为Anonymous。 |
| AccessKeyID | UDSIAMSTUBTEST002852 | 请求者的AccessKey ID。取值-表示匿名请求。 |
响应消息样式
1 2 3 | HTTP/1.1 status_code Date: date Content-Length: length |
响应头 (Response Headers)
该请求的响应消息使用公共响应头,具体请参考表1。
响应体 (Response Body)
本接口的响应消息中不携带响应体。
错误响应消息
无特殊错误,所有错误已经包含在表2中。
请求示例
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 | PUT /?logging HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 02:40:06 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mCOjER/L4ZZUY9qr6AOnkEiwvVk= Content-Length: 528 <?xml version="1.0" encoding="UTF-8"?> <BucketLoggingStatus> <Agency>agencyGrantPutLogging</Agency> <LoggingEnabled> <TargetBucket>log-bucket</TargetBucket> <TargetPrefix>mybucket-access_log-/</TargetPrefix> <TargetGrants> <Grant> <Grantee> <ID>783fc6652cf246c096ea836694f71855</ID> </Grantee> <Permission>READ</Permission> </Grant> </TargetGrants> </LoggingEnabled> </BucketLoggingStatus> |
响应示例
1 2 3 4 5 6 | HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643663CE53B6AF31C619FD x-obs-id-2: 32AAAQAAEAABSAAkpAIAABAAAQAAEAABCT9CjuOx8cETSRbqkm35s1dL/tLhRNdZ Date: WED, 01 Jul 2015 02:40:06 GMT Content-Length: 0 |
请求示例:关闭桶日志转存
PUT /?logging HTTP/1.1 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4= User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Date: WED, 01 Jul 2015 02:37:22 GMT Content-Type: application/xml <BucketLoggingStatus> </BucketLoggingStatus>
响应示例:关闭桶日志转存
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSalxuWjLa91ewuXRoIcCKZFjFgCrYn0 x-obs-request-id: 0000018A2BC32FB6D2C62C9689DD14B3 Server: OBS Content-Length: 0 Date: WED, 01 Jul 2015 02:37:22 GMT
使用SDK调用接口
建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作,直接调用SDK接口函数即可访问OBS,无需手动计算签名。

