本文介绍如何使用多区域接入点。
使用多区域接入点访问存储桶前,您需要确保使用的账号拥有多区域接入点关联存储桶的操作权限,否则会因为没有存储桶的访问权限导致请求失败。您可以通过桶策略或 IAM 策略授予账号对应存储桶的权限,详细介绍, 请参见桶策略概述和 IAM 策略概述。
多区域接入点创建成功后,TOS 会自动生成一个别名。别名始终唯一,无法修改。访问 TOS 的存储桶时,需要在请求中指定存储桶名。然而通过多区域接入点访问存储桶时,无需指定桶名,需要指定别名,TOS 会通过别名将请求自动路由到多区域接入点下最近的存储桶。
别名用于构造 MRAP 域名,您可以通过 MRAP 域名访问多区域接入点下的存储桶,MRAP 域名格式如下:
通过多区域接入点域名访问 TOS 时,只支持对 TOS 执行部分操作,详细介绍,请参见多区域接入点支持的 API 操作。
分类 | 注意事项 |
---|---|
访问域名 | 多区域接入点的访问域名由 TOS 自动生成,无法编辑或重复使用。 |
访问方式 | 通过多区域接入点的域名访问存储桶时,仅支持内网访问,暂不支持外网访问。 |
访问带宽 | 通过多区域接入点的域名访问存储桶时,默认每个主账号跨区域访问带宽如下:
说明 如果您的业务有更大的带宽需求,请提交工单联系技术支持。 |
使用限制 |
|
Host
替换为<别名>.<TOS Endpoint>
,即可使用多区域接入点功能。以下以 GetObject 为例。关于 API 文档的详细介绍,请参见 API 概览。GET /objectName HTTP/1.1 Host: mc3fe2523****.mrap.accesspoint.tos-global.volces.com Date: Fri, 30 Jul 2021 08:05:36 GMT Authorization: authorization string
endpoint
替换为步骤 1 获取的 TOS Endpoint,将 bucketName
替换为步骤 1 获取的别名,即可使用多区域接入点功能。以下以 Go 语言的普通上传本地文件为例。关于 SDK 文档详细介绍,请参见 SDK 概览。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") endpoint = "https://mrap.accesspoint.tos-global.volces.com" region = "cn-beijing" // 填写为别名 bucketName = "mc3fe2523****" // 将文件上传到 example_dir 目录下的 example.txt 文件 objectKey = "example_dir/example.txt" ctx = context.Background() ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 直接使用文件路径上传文件 output, err := client.PutObjectFromFile(ctx, &tos.PutObjectFromFileInput{ PutObjectBasicInput: tos.PutObjectBasicInput{ Bucket: bucketName, Key: objectKey, }, FilePath: "./example.txt", }) checkErr(err) fmt.Println("PutObjectV2 Request ID:", output.RequestID) }
火山引擎云审计记录了账号对多区域接入点的访问行为,供您进行查询与跟踪。具体记录的行为说明如下:
关于云审计的详细介绍,请参见云审计。