全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

管理存储空间镜像回源规则(Go)

最近更新时间:2025-09-09 14:18:22

设置镜像回源规则

以下代码用于设置镜像回源规则:

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("https://example1.com"),
                aws.String("https://example1.com"),
            },
            // 文件上传KS3时,指定文件的权限
            SavingSetting: &s3.SavingSetting{
                ACL: aws.String("private"),
            },
            // KS3回源协议类型
            MirrorType: aws.String("V4"),
        },
        //同步回源规则,设置触发条件(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("https://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{
                            {
                                Key: aws.String("c"),
                            },
                            {
                                Key: aws.String("d"),
                            },
                        },
                        PassAll: aws.Boolean(false), // 将客户端发给ks3的header全部透传给源站,该字段与pass_headers互斥
                        // 将客户端发给ks3的header中指定的几个透传给源站,只能指定header中的key,不能指定value
                        PassHeaders: []*s3.PassHeaders{
                            {
                                aws.String("key"),
                            },
                        },
                    },
                },
                // 文件上传KS3时,指定文件的权限
                SavingSetting: &s3.SavingSetting{
                    ACL: aws.String("private"),
                },
                // KS3回源协议类型
                MirrorType: aws.String("V4"),
            },
        },
    }
    // 设置存储空间镜像回源规则
    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

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈