You need to enable JavaScript to run this app.
Torch Object Storage

Torch Object Storage

Copy page
Download PDF
Manage Bucket Configuration
Managing Custom Domains (Go SDK)
Copy page
Download PDF
Managing Custom Domains (Go SDK)
After you upload a file to TOS, you can access or download the file using the file URL automatically generated by TOS. If you wish to access files stored in TOS using your own domain name, you can bind your domain name to the storage bucket. After binding, files can be accessed using the corresponding domain name.​
Configure Custom Domain Name Rules​
warning​
  • A domain name can be associated with only one storage bucket.​
  • A storage bucket can be associated with up to 20 domain names.​
Sample Code​
The following code is used to configure custom domain name rules for the bucket.​
​
package main​
​
import (​
"context"​
"fmt"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
​
input := &tos.PutBucketCustomDomainInput{​
Bucket: bucketName,​
Rule: tos.CustomDomainRule{​
Domain: "www.example.com",​
},​
}​
output, err := client.PutBucketCustomDomain(context.Background(), input)​
checkErr(err)​
fmt.Println("PutBucketCustomDomain Request ID:", output.RequestID)​
​
}​
​
Enumerate Custom Domain Name Rules​
warning​
To list the custom domain name rules of a bucket, you must, by default, be the owner of the bucket.​
Sample Code​
The following code is used to enumerate the custom domain name rules for the bucket.​
​
package main​
​
import (​
"context"​
"fmt"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
output, err := client.ListBucketCustomDomain(context.Background(), &tos.ListBucketCustomDomainInput{Bucket: bucketName})​
checkErr(err)​
fmt.Println("ListBucketCustomDomain Request ID:", output.RequestID)​
​
for _, rule := range output.Rules {​
fmt.Println("ListBucketCustomDomain Rule Domain:", rule.Domain)​
}​
​
}​
​
Delete Custom Domain Name Rule​
warning​
By default, you must be the bucket owner to delete the bucket's custom domain name rules.​
Sample Code​
The following code is used to delete custom domain name rules for a bucket.​
​
package main​
​
import (​
"context"​
"fmt"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
output, err := client.DeleteBucketCustomDomain(context.Background(), &tos.DeleteBucketCustomDomainInput{Bucket: bucketName, Domain: "Provide your custom domain"})​
checkErr(err)​
fmt.Println("DeleteBucketCustomDomain Request ID:", output.RequestID)​
}​
​
Relevant Documentation​
For more information on custom domain configuration, please refer to Custom Domain.​
Last updated: 2025.09.19 17:30:20