ks3bill.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. package s3
  2. import (
  3. "github.com/ks3sdklib/aws-sdk-go/aws"
  4. "github.com/ks3sdklib/aws-sdk-go/internal/signer/open_api"
  5. )
  6. type QueryKs3DataInput struct {
  7. // 查询用量开始时间,格式为:yyyyMMdd,如:20250901 表示查询从2025年9月1日0点0分开始的用量
  8. StartTime *string `location:"querystring" locationName:"StartTime" type:"string" required:"true"`
  9. // 查询用量结束时间,格式为:yyyyMMdd,如:20250902 表示查询到2025年9月2日23点59分结束的用量
  10. EndTime *string `location:"querystring" locationName:"EndTime" type:"string" required:"true"`
  11. // 支持按天粒度查询,固定值:Day
  12. DateType *string `location:"querystring" locationName:"DateType" type:"string"`
  13. // 存储空间名称,最多支持同时查询5个存储桶的用量明细
  14. BucketNames []string `location:"querystrings" locationName:"Bucketname" type:"list" required:"true"`
  15. // 可以查询单个或多个计费项,如果不填,则查询除带宽外的所有计费项
  16. // DataSize:存储量
  17. // NetworkFlowUp:外网上行流量
  18. // NetworkFlow:外网下行流量
  19. // CDNFlow:CDN回源流量
  20. // ReplicationFlow:跨区域复制流量
  21. // RequestsGet:GET类请求次数
  22. // RequestsPut:PUT类请求次数
  23. // RestoreSize:数据取回量
  24. // TagNum:对象标签梳理
  25. // BandwidthUp:上行带宽(不区分外网和CDN)
  26. // BandwidthDown:下行带宽(不区分外网和CDN)
  27. // NetBandwidthUp:外网上行带宽
  28. // NetBandwidthDown:外网下行带宽
  29. // CDNBandwidthDown:CDN回源带宽
  30. // IntranetBandwidthUp:内网上行带宽
  31. // IntranetBandwidthDown:内网下行带宽
  32. // IntranetFlowUp:内网上行流量
  33. // IntranetFlowDown:内网下行流量
  34. // ObjectNum:桶内的对象数量
  35. Ks3Products []string `location:"querystrings" locationName:"Ks3Product" type:"list"`
  36. // 可以查询单个或多个统计项的流量情况,可选值:Object、Referer、IP、UA,返回TOP200数据
  37. Transfers []string `location:"querystrings" locationName:"Transfer" type:"list"`
  38. // 可以查询单个或多个统计项的请求次数情况,可选值:Object、Referer、IP、UA,返回TOP200数据
  39. Requests []string `location:"querystrings" locationName:"Request" type:"list"`
  40. }
  41. type QueryKs3DataOutput struct {
  42. // 查询结果
  43. Ks3DataResult *Ks3DataResult `locationName:"Ks3DataResult" type:"structure"`
  44. // 响应头
  45. Metadata map[string]*string `location:"headers" type:"map"`
  46. // HTTP 状态码
  47. StatusCode *int64 `location:"statusCode" type:"integer"`
  48. metadataQueryKs3DataOutput `json:"-" xml:"-"`
  49. }
  50. type metadataQueryKs3DataOutput struct {
  51. SDKShapeTraits bool `type:"structure" payload:"Ks3DataResult"`
  52. }
  53. type Ks3DataResult struct {
  54. // 响应码
  55. Code *string `locationName:"Code" type:"string"`
  56. // 响应信息
  57. Message *string `locationName:"Message" type:"string"`
  58. // 包含一个或多个Bucket的容器
  59. Data *Ks3Data `locationName:"Data" type:"structure"`
  60. // 请求ID
  61. RequestId *string `locationName:"RequestId" type:"string"`
  62. }
  63. type Ks3Data struct {
  64. // 包含一个或多个Bucket的列表
  65. Buckets []*Ks3DataBucket `locationName:"Buckets" type:"list"`
  66. }
  67. type Ks3DataBucket struct {
  68. // Bucket的名称
  69. Name *string `locationName:"Name" type:"string"`
  70. // 数据开始时间
  71. StartTime *string `locationName:"StartTime" type:"string"`
  72. // 数据结束时间
  73. EndTime *string `locationName:"EndTime" type:"string"`
  74. // Bucket的标准存储量,单位是Bytes
  75. StandardDataSize *string `locationName:"StandardDataSize" type:"string"`
  76. // Bucket的低频存储量,单位是Bytes
  77. StandardIADataSize *string `locationName:"StandardIADataSize" type:"string"`
  78. // Bucket的归档存储量,单位是Bytes
  79. ArchiveDataSize *string `locationName:"ArchiveDataSize" type:"string"`
  80. // 标准存储的PUT请求次数
  81. StandardPutRequest *string `locationName:"StandardPutRequest" type:"string"`
  82. // 低频存储的PUT请求次数
  83. StandardIAPutRequest *string `locationName:"StandardIAPutRequest" type:"string"`
  84. // 归档存储的PUT请求次数
  85. ArchivePutRequest *string `locationName:"ArchivePutRequest" type:"string"`
  86. // 标准存储的GET请求次数
  87. StandardGetRequest *string `locationName:"StandardGetRequest" type:"string"`
  88. // 低频存储的GET请求次数
  89. StandardIAGetRequest *string `locationName:"StandardIAGetRequest" type:"string"`
  90. // 归档存储的GET请求次数
  91. ArchiveGetRequest *string `locationName:"ArchiveGetRequest" type:"string"`
  92. // 外网下行流量,单位是Bytes
  93. NetworkFlow *string `locationName:"NetworkFlow" type:"string"`
  94. // CDN回源流量,单位是Bytes
  95. CDNFlow *string `locationName:"CDNFlow" type:"string"`
  96. // 跨区域复制流量,单位是Bytes
  97. ReplicationFlow *string `locationName:"ReplicationFlow" type:"string"`
  98. // 外网上行带宽,不区分外网上行和CDN上行,单位是bps
  99. BandwidthUp []map[string]*string `locationName:"BandwidthUp" type:"list"`
  100. // 外网下行带宽,不区分外网下行和CDN下行,单位是bps
  101. BandwidthDown []map[string]*string `locationName:"BandwidthDown" type:"list"`
  102. // 外网下行带宽,单位是bps
  103. OuterBandwidthDown []map[string]*string `locationName:"OuterBandwidthDown" type:"list"`
  104. // CDN回源带宽,单位是bps
  105. CDNBandwidthDown []map[string]*string `locationName:"CDNBandwidthDown" type:"list"`
  106. // 低频存储数据取回量,单位是Bytes
  107. StandardIAData *string `locationName:"StandardIAData" type:"string"`
  108. // 外网上行带宽
  109. NetBandwidthUp []map[string]*string `locationName:"NetBandwidthUp" type:"list"`
  110. // 外网上行流量
  111. NetworkFlowUp *string `locationName:"NetworkFlowUp" type:"string"`
  112. // 内网上行带宽
  113. IntranetBandwidthUp []map[string]*string `locationName:"IntranetBandwidthUp" type:"list"`
  114. // 内网上行流量
  115. IntranetFlowUp *string `locationName:"IntranetFlowUp" type:"string"`
  116. // 内网下行带宽
  117. IntranetBandwidthDown []map[string]*string `locationName:"IntranetBandwidthDown" type:"list"`
  118. // 内网下行流量
  119. IntranetFlowDown *string `locationName:"IntranetFlowDown" type:"string"`
  120. // 桶内的对象数量
  121. ObjectNum *string `locationName:"ObjectNum" type:"string"`
  122. // 归档存储解冻数据量,单位是Bytes
  123. ArchiveData *string `locationName:"ArchiveData" type:"string"`
  124. // 对象标签的数量
  125. TagNum *string `locationName:"TagNum" type:"string"`
  126. // Object、Referer、IP、UA产生的流量
  127. Transfer *Ks3DataTransfer `locationName:"Transfer" type:"structure"`
  128. // Object、Referer、IP、UA产生的请求次数
  129. Request *Ks3DataRequest `locationName:"Request" type:"structure"`
  130. }
  131. type Ks3DataTransfer struct {
  132. // 指定Object产生的流量
  133. Objects []*Ks3DataTransferObject `locationName:"Object" type:"list"`
  134. // 指定Referer产生的流量
  135. Referers []*Ks3DataTransferReferer `locationName:"Referer" type:"list"`
  136. // 指定IP产生的流量
  137. IPs []*Ks3DataTransferIP `locationName:"Ip" type:"list"`
  138. // 指定UA产生的流量
  139. UAs []*Ks3DataTransferUA `locationName:"Ua" type:"list"`
  140. }
  141. type Ks3DataTransferObject struct {
  142. // Object名称
  143. Object *string `locationName:"object" type:"string"`
  144. // Object产生的流量
  145. Traffic *string `locationName:"traffic" type:"string"`
  146. }
  147. type Ks3DataTransferReferer struct {
  148. // Referer名称
  149. Referer *string `locationName:"referer" type:"string"`
  150. // Referer产生的流量
  151. Traffic *string `locationName:"traffic" type:"string"`
  152. }
  153. type Ks3DataTransferIP struct {
  154. // IP地址
  155. IP *string `locationName:"ip" type:"string"`
  156. // IP产生的流量
  157. Traffic *string `locationName:"traffic" type:"string"`
  158. }
  159. type Ks3DataTransferUA struct {
  160. // UA名称
  161. UA *string `locationName:"ua" type:"string"`
  162. // UA产生的流量
  163. Traffic *string `locationName:"traffic" type:"string"`
  164. }
  165. type Ks3DataRequest struct {
  166. // 指定Object产生的流量
  167. Objects []*Ks3DataRequestObject `locationName:"Object" type:"list"`
  168. // 指定Referer产生的流量
  169. Referers []*Ks3DataRequestReferer `locationName:"Referer" type:"list"`
  170. // 指定IP产生的流量
  171. IPs []*Ks3DataRequestIP `locationName:"Ip" type:"list"`
  172. // 指定UA产生的流量
  173. UAs []*Ks3DataRequestUA `locationName:"Ua" type:"list"`
  174. }
  175. type Ks3DataRequestObject struct {
  176. // Object名称
  177. Object *string `locationName:"object" type:"string"`
  178. // Object产生的请求次数
  179. Times *string `locationName:"times" type:"string"`
  180. }
  181. type Ks3DataRequestReferer struct {
  182. // Referer名称
  183. Referer *string `locationName:"referer" type:"string"`
  184. // Referer产生的请求次数
  185. Times *string `locationName:"times" type:"string"`
  186. }
  187. type Ks3DataRequestIP struct {
  188. // IP地址
  189. IP *string `locationName:"ip" type:"string"`
  190. // IP产生的请求次数
  191. Times *string `locationName:"times" type:"string"`
  192. }
  193. type Ks3DataRequestUA struct {
  194. // UA名称
  195. UA *string `locationName:"ua" type:"string"`
  196. // UA产生的请求次数
  197. Times *string `locationName:"times" type:"string"`
  198. }
  199. // QueryKs3DataRequest generates a request for the QueryKs3DataRequest operation.
  200. func (c *S3) QueryKs3DataRequest(input *QueryKs3DataInput) (req *aws.Request, output *QueryKs3DataOutput) {
  201. op := &aws.Operation{
  202. Name: "QueryKs3Data",
  203. HTTPMethod: "GET",
  204. HTTPPath: "/?Action=QueryKs3Data",
  205. }
  206. if input == nil {
  207. input = &QueryKs3DataInput{}
  208. }
  209. if input.StartTime != nil && aws.ToString(input.StartTime) != "" {
  210. input.StartTime = aws.String(aws.ToString(input.StartTime) + "0000")
  211. }
  212. if input.EndTime != nil && aws.ToString(input.EndTime) != "" {
  213. input.EndTime = aws.String(aws.ToString(input.EndTime) + "2359")
  214. }
  215. if input.DateType == nil || aws.ToString(input.DateType) == "" {
  216. input.DateType = aws.String("Day")
  217. }
  218. req = c.newRequest(op, input, output)
  219. req.RequestType = "ks3bill"
  220. req.ContentType = "application/json"
  221. req.HTTPRequest.URL.Host = c.Config.Ks3BillEndpoint
  222. req.Handlers.Sign.Clear()
  223. req.Handlers.Sign.PushBack(open_api.Sign)
  224. output = &QueryKs3DataOutput{
  225. Ks3DataResult: &Ks3DataResult{},
  226. }
  227. req.Data = output
  228. return
  229. }
  230. // QueryKs3Data 桶用量详情及业务分析查询
  231. func (c *S3) QueryKs3Data(input *QueryKs3DataInput) (*QueryKs3DataOutput, error) {
  232. req, out := c.QueryKs3DataRequest(input)
  233. err := req.Send()
  234. return out, err
  235. }
  236. func (c *S3) QueryKs3DataWithContext(ctx aws.Context, input *QueryKs3DataInput) (*QueryKs3DataOutput, error) {
  237. req, out := c.QueryKs3DataRequest(input)
  238. req.SetContext(ctx)
  239. err := req.Send()
  240. return out, err
  241. }
  242. type QueryBucketRankInput struct {
  243. // 查询用量开始时间,格式为:yyyyMMdd,如:20250901 表示查询从2025年9月1日0点0分开始的用量
  244. StartTime *string `location:"querystring" locationName:"StartTime" type:"string" required:"true"`
  245. // 查询用量结束时间,格式为:yyyyMMdd,如:20250902 表示查询到2025年9月2日23点59分结束的用量
  246. EndTime *string `location:"querystring" locationName:"EndTime" type:"string" required:"true"`
  247. // 支持按天粒度查询,固定值:Day
  248. DateType *string `location:"querystring" locationName:"DateType" type:"string"`
  249. // 可以查询单个或多个统计项,如果不填,则查询所有统计项
  250. // DataSize:存储量
  251. // Flow:外网下行流量
  252. // RequestsGet:GET类请求次数
  253. // RequestsPut:PUT类请求次数
  254. Ks3Products []string `location:"querystrings" locationName:"Ks3Product" type:"list"`
  255. // TOP排序的Bucket数量,取值范围为[1-500],默认值为200
  256. Number *int64 `location:"querystring" locationName:"Number" type:"integer"`
  257. }
  258. type QueryBucketRankOutput struct {
  259. // 查询结果
  260. BucketRankResult *BucketRankResult `locationName:"BucketRankResult" type:"structure"`
  261. // 响应头
  262. Metadata map[string]*string `location:"headers" type:"map"`
  263. // HTTP 状态码
  264. StatusCode *int64 `location:"statusCode" type:"integer"`
  265. metadataQueryBucketRankOutput `json:"-" xml:"-"`
  266. }
  267. type metadataQueryBucketRankOutput struct {
  268. SDKShapeTraits bool `type:"structure" payload:"BucketRankResult"`
  269. }
  270. type BucketRankResult struct {
  271. // 响应码
  272. Code *string `locationName:"Code" type:"string"`
  273. // 响应信息
  274. Message *string `locationName:"Message" type:"string"`
  275. // 桶用量排序数据
  276. Data *BucketRankData `locationName:"Data" type:"structure"`
  277. // 请求ID
  278. RequestId *string `locationName:"RequestId" type:"string"`
  279. }
  280. type BucketRankData struct {
  281. // Bucket的存储量,单位是Bytes
  282. DataSize []map[string]*string `locationName:"DataSize" type:"list"`
  283. // Bucket的外网下行流量,单位是Bytes
  284. Flow []map[string]*string `locationName:"Flow" type:"list"`
  285. // Bucket的GET类请求次数,单位是次
  286. RequestsGet []map[string]*string `locationName:"RequestsGet" type:"list"`
  287. // Bucket的PUT类请求次数,单位是次
  288. RequestsPut []map[string]*string `locationName:"RequestsPut" type:"list"`
  289. }
  290. // QueryBucketRankRequest generates a request for the QueryBucketRankRequest operation.
  291. func (c *S3) QueryBucketRankRequest(input *QueryBucketRankInput) (req *aws.Request, output *QueryBucketRankOutput) {
  292. op := &aws.Operation{
  293. Name: "QueryBucketRank",
  294. HTTPMethod: "GET",
  295. HTTPPath: "/?Action=QueryBucketRank",
  296. }
  297. if input == nil {
  298. input = &QueryBucketRankInput{}
  299. }
  300. if input.StartTime != nil && aws.ToString(input.StartTime) != "" {
  301. input.StartTime = aws.String(aws.ToString(input.StartTime) + "0000")
  302. }
  303. if input.EndTime != nil && aws.ToString(input.EndTime) != "" {
  304. input.EndTime = aws.String(aws.ToString(input.EndTime) + "2359")
  305. }
  306. if input.DateType == nil || aws.ToString(input.DateType) == "" {
  307. input.DateType = aws.String("Day")
  308. }
  309. if input.Number == nil {
  310. input.Number = aws.Long(200)
  311. }
  312. req = c.newRequest(op, input, output)
  313. req.RequestType = "ks3bill"
  314. req.ContentType = "application/json"
  315. req.HTTPRequest.URL.Host = c.Config.Ks3BillEndpoint
  316. req.Handlers.Sign.Clear()
  317. req.Handlers.Sign.PushBack(open_api.Sign)
  318. output = &QueryBucketRankOutput{
  319. BucketRankResult: &BucketRankResult{},
  320. }
  321. req.Data = output
  322. return
  323. }
  324. // QueryBucketRank 桶用量排序查询
  325. func (c *S3) QueryBucketRank(input *QueryBucketRankInput) (*QueryBucketRankOutput, error) {
  326. req, out := c.QueryBucketRankRequest(input)
  327. err := req.Send()
  328. return out, err
  329. }
  330. func (c *S3) QueryBucketRankWithContext(ctx aws.Context, input *QueryBucketRankInput) (*QueryBucketRankOutput, error) {
  331. req, out := c.QueryBucketRankRequest(input)
  332. req.SetContext(ctx)
  333. err := req.Send()
  334. return out, err
  335. }