最近更新时间:2023-11-03 16:35:20
以下代码用于设置镜像回源规则:
package main
import (
"fmt"
"github.com/ks3sdklib/aws-sdk-go/aws"
"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
"github.com/ks3sdklib/aws-sdk-go/service/s3"
)
func main() {
// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建S3Client,更多配置项请查看Go-SDK初始化文档
client := s3.New(&aws.Config{
Credentials: cre, // 访问凭证
Region: "BEIJING", // 填写您的Region
Endpoint: "ks3-cn-beijing.ksyuncs.com", // 填写您的Endpoint
})
// 填写存储空间名称
bucket := "<bucket_name>"
// 构造存储空间镜像回源规则
bucketMirror := &s3.BucketMirror{
Version: aws.String("V3"), // 回源规则版本,有效值: V3
UseDefaultRobots: aws.Boolean(false), // 是否使用默认的robots.txt,如果为true则会在bucket下生成一个robots.txt
// 异步回源规则,设置源站url、ACL权限
AsyncMirrorRule: &s3.AsyncMirrorRule{
// 一组源站url,数量不超过10个,url必须以http或者https开头,域名部分最多不超过256个字符,path部分最多不超过1024个字符
MirrorUrls: []*string{
aws.String("http://abc.om"),
aws.String("http://wps.om"),
},
// 文件上传KS3时,指定文件的权限
SavingSetting: &s3.SavingSetting{
ACL: aws.String("private"),
},
},
//同步回源规则,设置触发条件(http_codes和文件前缀)、源站url、query string是否透传、是否follow 302/301、header配置、ACL权限
SyncMirrorRules: []*s3.SyncMirrorRules{
{
// 回源触发条件,可不填,不填表示对该bucket中不存在的object发送get请求时,将会触发回源
MatchCondition: s3.MatchCondition{
HTTPCodes: []*string{aws.String("404")}, // 发回源的http状态码,目前仅支持404一种
KeyPrefixes: []*string{aws.String("abc")}, // 请求的object key的前缀与任意一个key_prefix匹配时触发回源,仅支持一个前缀
},
MirrorURL: aws.String("http://v-ks-a-i.originalvod.com"), // 源站url,必须以http或者https开头
// ks3请求源站时的配置,可不填
MirrorRequestSetting: &s3.MirrorRequestSetting{
PassQueryString: aws.Boolean(true), // ks3请求源站时是否将客户端请求ks3时的query string透传给源站
Follow3Xx: aws.Boolean(true), // 设置访问源站时,ks3是否响应源站的301和302跳转
// ks3请求源站时的header配置
HeaderSetting: &s3.HeaderSetting{
// 自定义header,这些header的key和value均是固定的,ks3请求源站时会带上这些header
SetHeaders: []*s3.SetHeaders{
{
aws.String("a"),
aws.String("b"),
},
},
// 从客户端发给ks3的header中移除以下指定的header,通常与pass_all或者pass_headers配合使用,只能指定header中的key,不能指定value
RemoveHeaders: []*s3.RemoveHeaders{
{
aws.String("daaaaa"),
},
},
PassAll: aws.Boolean(false), // 将客户端发给ks3的header全部透传给源站,该字段与pass_headers互斥
// 将客户端发给ks3的header中指定的几个透传给源站,只能指定header中的key,不能指定value
PassHeaders: []*s3.PassHeaders{
{
aws.String("asdb"),
},
},
},
},
// 文件上传KS3时,指定文件的权限
SavingSetting: &s3.SavingSetting{
ACL: aws.String("private"),
},
},
},
}
// 设置存储空间镜像回源规则
resp, err := client.PutBucketMirror(&s3.PutBucketMirrorInput{
Bucket: aws.String(bucket), // 存储空间名称,必填
BucketMirror: bucketMirror, // 镜像回源规则,必填
})
if err != nil {
panic(err)
}
fmt.Println("结果:\n", awsutil.StringValue(resp))
}
设置镜像回源规则的更多详情,请参见 PUT BucketMirror 。
以下代码用于获取镜像回源规则:
package main
import (
"fmt"
"github.com/ks3sdklib/aws-sdk-go/aws"
"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
"github.com/ks3sdklib/aws-sdk-go/service/s3"
)
func main() {
// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建S3Client,更多配置项请查看Go-SDK初始化文档
client := s3.New(&aws.Config{
Credentials: cre, // 访问凭证
Region: "BEIJING", // 填写您的Region
Endpoint: "ks3-cn-beijing.ksyuncs.com", // 填写您的Endpoint
})
// 填写存储空间名称
bucket := "<bucket_name>"
// 获取存储空间镜像回源规则
resp, err := client.GetBucketMirror(&s3.GetBucketMirrorInput{
Bucket: aws.String(bucket), // 存储空间名称,必填
})
if err != nil {
panic(err)
}
fmt.Println("结果:\n", awsutil.StringValue(resp))
}
获取镜像回源规则的更多详情,请参见 GET BucketMirror 。
以下代码用于删除镜像回源规则:
package main
import (
"fmt"
"github.com/ks3sdklib/aws-sdk-go/aws"
"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
"github.com/ks3sdklib/aws-sdk-go/service/s3"
)
func main() {
// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建S3Client,更多配置项请查看Go-SDK初始化文档
client := s3.New(&aws.Config{
Credentials: cre, // 访问凭证
Region: "BEIJING", // 填写您的Region
Endpoint: "ks3-cn-beijing.ksyuncs.com", // 填写您的Endpoint
})
// 填写存储空间名称
bucket := "<bucket_name>"
// 删除存储空间镜像回源规则
resp, err := client.DeleteBucketMirror(&s3.DeleteBucketMirrorInput{
Bucket: aws.String(bucket), // 存储空间名称,必填
})
if err != nil {
panic(err)
}
fmt.Println("结果:\n", awsutil.StringValue(resp))
}
删除镜像回源规则的更多详情,请参见 DELETE BucketMirror 。
纯净模式