对象存储
您可以通过加速域名向加速资源发送请求,该请求会自动转发到 TOS 加速器,实现数据加速访问。本文介绍使用加速器的注意事项、操作步骤。
TOS 加速器通过借助单区域接入点的域名解析调度能力,将请求调度到加速资源。单区域接入点创建成功后,TOS 会自动生成一个别名。别名始终唯一,无法修改。访问桶内资源时,需要在请求中指定存储桶名。然而访问加速器的加速资源时,无需指定桶名,需要指定加速器绑定的单区域接入点别名,TOS 会通过别名将请求路由到加速资源。
您可以通过 API 、SDK 访问加速器的加速资源,也可以在 FSX 工具中使用加速器,具体操作步骤如下:
Host 替换为<别名>.<TOS 访问域名>。以下以 GetObject 为例,关于 API 文档的详细介绍,请参见API 概览。说明
只有向加速策略下的资源发送请求,TOS 才会将请求转发至加速器,加速器才会发挥作用,如果向其他资源发送请求,并不会转发至加速器,而是直接转发至 TOS。因此使用加速器时,必须请求加速器加速的资源,否则加速器不会发挥作用。
GET /image/test.jpg HTTP/1.1 Host: example-0196a48a48937a6db124a80ec141****-tosalias.tos-cn-beijing.ivolces.com Date: Fri, 30 Jul 2021 08:05:36 GMT Authorization: authorization string
bucketName 替换为步骤 1 获取的别名。以下以 Go 语言的下载数据到本地文件为例。关于 SDK 文档详细介绍,请参见 SDK 概览。说明
只有向加速策略下的资源发送请求,TOS 才会将请求转发至加速器,加速器才会发挥作用,如果向其他资源发送请求,并不会转发至加速器,而是直接转发至 TOS。因此使用加速器时,必须请求加速器的加速资源,否则加速器不会发挥作用。
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 if clientErr, ok := err.(*tos.TosClientError); ok { fmt.Println("Error:", clientErr.Error()) fmt.Println("Client Cause Err:", clientErr.Cause.Error()) } else { fmt.Println("Error:", err) } panic(err) } } func main() { var ( accessKey = os.Getenv("TOS_ACCESS_KEY") secretKey = os.Getenv("TOS_SECRET_KEY") // Bucket 对应的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.ivolces.com endpoint = "https://tos-cn-beijing.ivolces.com" region = "cn-beijing" // 填写为别名 bucketName = "apc-01971ef8e4c47d14b3a31cd1aa22****-tosalias" // 下载指定文件名的文件 objectKey = "example_dir/example.txt" ctx = context.Background() ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 下载文件到指定的路径,示例中下载文件到 example_dir/example.txt getObjectToFileOutput, err := client.GetObjectToFile(ctx, &tos.GetObjectToFileInput{ GetObjectV2Input: tos.GetObjectV2Input{ Bucket: bucketName, Key: objectKey, }, FilePath: "example_dir/example.txt", }) checkErr(err) fmt.Println("GetObjectToFile Request ID:", getObjectToFileOutput.RequestID) fmt.Println("GetObjectToFile File Size:", getObjectToFileOutput.ContentLength) }
说明
只有向加速策略下的资源发送请求,TOS 才会将请求转发至加速器,加速器才会发挥作用,如果向其他资源发送请求,并不会转发至加速器,而是直接转发至 TOS。因此使用加速器时,必须请求加速器的加速资源,否则加速器不会发挥作用。
mount -t fsx /tos/<别名> <挂载点> -o region="<地域>",endpoint="<TOS 访问域名>",access_key_id="AK",secret_access_key="SK",no_writeback_cache