全部文档
当前文档

暂无内容

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

文档中心

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

最近更新时间: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

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

纯净模式

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