Obtaining Bucket Metadata¶
Function¶
This API returns information about a bucket, including the storage class, region, CORS rules, and redundancy policy.
Restrictions¶
To obtain bucket metadata, you must be the bucket owner or have the required permission (obs:bucket:HeadBucket in IAM or HeadBucket in a bucket policy).
Method¶
func (obsClient ObsClient) GetBucketMetadata(input *GetBucketMetadataInput) (output *GetBucketMetadataOutput, err error)
Request Parameters¶
Parameter | Type | Mandatory (Yes/No) | Description |
---|---|---|---|
input | Yes | Explanation: Request parameters for obtaining bucket metadata. For details, see Table 2. |
Parameter | Type | Mandatory (Yes/No) | Description |
---|---|---|---|
Bucket | string | Yes | Explanation: Bucket name Restrictions:
Default value: None |
Responses¶
Parameter | Type | Description |
---|---|---|
output | Explanation: Returned results. For details, see Table 4. | |
err | error | Explanation: Error messages returned by the API |
Parameter | Type | Description |
---|---|---|
StatusCode | int | Explanation: HTTP status code Value range: A status code is a group of digits that can be 2xx (indicating successes) or 4xx or 5xx (indicating errors). It indicates the status of a response. Default value: None |
RequestId | string | Explanation: Request ID returned by the OBS server Default value: None |
ResponseHeaders | map[string][]string | Explanation: HTTP response headers Default value: None |
Location | string | Explanation: Region where a bucket is located Value range: To learn about valid regions and endpoints, see Regions and Endpoints. An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. To obtain the regions and endpoints, contact the enterprise administrator. |
Version | string | Explanation: OBS version of the bucket Value range:
Default value: None |
StorageClass | Explanation: Storage class of the bucket. For details, see Table 5. Value range: If the storage class of the bucket is Standard, leave this parameter blank. | |
AllowOrigin | string | Explanation: If Origin in the request meets the CORS rules of the bucket, AllowedOrigin in the CORS rules is returned. AllowedOrigin indicates the origin from which the requests can access the bucket. Restrictions: Domain name of the origin. Each origin can contain only one wildcard character ( Default value: None |
AllowHeader | string | Explanation: If RequestHeader in the request meets the CORS rules of the bucket, AllowedHeader in the CORS rules is returned. AllowedHeader indicates the allowed headers for cross-origin requests. Only CORS requests matching the allowed headers are valid. Restrictions: Each header can contain only one wildcard character ( Default value: None |
AllowMethod | string | Explanation: AllowedMethod in the CORS rules of the bucket. It specifies the HTTP method of cross-origin requests, that is, the operation type of buckets and objects. Value range: The following HTTP methods are supported:
Default value: None |
ExposeHeader | string | Explanation: ExposeHeader in the CORS rules of the bucket. It specifies the CORS-allowed additional headers in the response. These headers provide additional information to clients. By default, your browser can only access headers Content-Length and Content-Type. If your browser needs to access other headers, add them to a list of the allowed additional headers. Restrictions: Spaces, wildcard characters ( Default value: None |
MaxAgeSeconds | int | Explanation: MaxAgeSeconds in the CORS rules of the bucket. It specifies the time your client can cache the response for a cross-origin request. Restrictions: Each CORS rule can contain only one MaxAgeSeconds. Value range: 0 to (231 - 1), in seconds Default value: 100 |
Epid | string | Explanation: Enterprise project ID that can be specified during bucket creation. If you have enabled EPS, you can obtain the project ID from the EPS console. Restrictions: The value of Epid is a UUID. Epid is not required if you have not enabled EPS yet. Example: 9892d768-2d13-450f-aac7-ed0e44c2585f Default value: None |
Constant | Default Value | Description |
---|---|---|
StorageClassStandard | STANDARD | OBS Standard Features low access latency and high throughput and is used for storing massive, frequently accessed (multiple times a month) or small objects (< 1 MB) requiring quick response. |
StorageClassWarm | WARM | OBS Warm Used for storing data that is semi-frequently accessed (fewer than 12 times a year) but is instantly available when needed. |
StorageClassCold | COLD | OBS Cold Used for storing rarely accessed (once a year) data. |
Code Examples¶
This example returns the metadata of bucket examplebucket.
package main
import (
"fmt"
"os"
"obs-sdk-go/obs"
)
func main() {
//Obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. Using hard coding may result in leakage.
//Obtain an AK/SK pair on the management console.
ak := os.Getenv("AccessKeyID")
sk := os.Getenv("SecretAccessKey")
// (Optional) If you use a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding to reduce leakage risks. You can obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways.
// securityToken := os.Getenv("SecurityToken")
// Enter the endpoint of the region where the bucket locates.
endPoint := "https://your-endpoint"
// Create an obsClient instance.
// If you use a temporary AK/SK pair and a security token to access OBS, use the obs.WithSecurityToken method to specify a security token when creating an instance.
obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/)
if err != nil {
fmt.Printf("Create obsClient error, errMsg: %s", err.Error())
}
input := &obs.GetBucketMetadataInput{}
// Specify a bucket name.
input.Bucket = "examplebucket"
// Obtain the bucket metadata.
output, err := obsClient.GetBucketMetadata(input)
if err == nil {
fmt.Printf("Get bucket(%s)'s metadata successful!\n", input.Bucket)
fmt.Printf("RequestId:%s\n", output.RequestId)
fmt.Printf("StorageClass:%s\n", output.StorageClass)
fmt.Printf("Location:%s\n", output.Location)
fmt.Printf("AZRedundancy:%s\n", output.AZRedundancy)
fmt.Printf("Epid:%s\n", output.Epid)
return
}
fmt.Printf("Get bucket(%s)'s metadata fail!\n", input.Bucket)
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)
}
}