sdk

package module
v1.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2025 License: Apache-2.0 Imports: 0 Imported by: 0

README

1、概述

金山云对象存储(Kingsoft Standard Storage Service,简称KS3),是金山云提供的无限制、多备份、分布式的低成本存储空间解决方案。目前提供多种语言SDK,替开发者解决存储扩容、数据可靠安全以及分布式访问等相关复杂问题,开发者可以快速的开发出涉及存储业务的程序或服务。

2、完整文档

该文档仅介绍了SDK的基本用法,如果您想了解更多用法,请查阅官网文档

3、环境准备

  • 环境要求 使用Golang 1.6及以上版本。

请参考Golang安装下载和安装Go编译运行环境。Go安装完毕后请新建系统变量GOPATH,并将其指向您的代码目录。要了解更多GOPATH相关信息,请执行以下命令。

go help gopath
  • 查看语言版本 要查看Go语言版本,请执行以下命令。
go version

4、初始化

4.1 下载安装 SDK

  • 安装方式:
go get github.com/ks3sdklib/aws-sdk-go
  • 使用方法 参见 Demo

4.2 获取密钥

  1. 开通 KS3 服务, 注册账号
  2. 进入控制台,获取 AccessKeyID 、AccessKeySecret

4.3 初始化

  1. 初始化客户端
// 金山云主账号AccessKey拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号进行API访问或日常运维,请登录https://uc.console.ksyun.com/pro/iam/#/user/list创建子账号。
// 通过指定Host(Endpoint),您可以在指定的地域创建新的存储空间。

// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建S3Client
client := s3.New(&aws.Config{
    Credentials:      cre,                          // 访问凭证
    Region:           "BEIJING",                    // 填写您的Region
    Endpoint:         "ks3-cn-beijing.ksyuncs.com", // 填写您的Endpoint
    DisableSSL:       false,                        // 是否禁用HTTPS,默认值为false
    LogLevel:         aws.Off,                      // 日志等级,默认关闭日志,可选值:Off, Error, Warn, Info, Debug
    LogHTTPBody:      false,                        // 是否把HTTP请求body打入日志,默认值为false
    Logger:           nil,                          // 日志输出位置,可设置指定文件
    S3ForcePathStyle: false,                        // 是否使用二级域名,默认值为false
    DomainMode:       false,                        // 是否开启自定义Bucket绑定域名,当开启时S3ForcePathStyle参数不生效,默认值为false
    SignerVersion:    "V2",                         // 签名方式可选值有:V2 OR V4 OR V4_UNSIGNED_PAYLOAD_SIGNER,默认值为V2
    MaxRetries:       1,                            // 请求失败时最大重试次数,默认请求失败时不重试
    CrcCheckEnabled:  false,                        // 是否开启CRC64校验,默认值为false
    HTTPClient:       nil,                          // HTTP请求的Client对象,可用于并发控制、超时控制等,若为空则使用Go语言定义的默认值
})

注意:

4.4 常见术语介绍

Object(对象,文件)

在 KS3 中,用户操作的基本数据单元是 Object。单个 Object 允许存储 0~48.8TB 的数据。 Object 包含 key 和 data。其中,key 是 Object 的名字;data 是 Object 的数据。key 为 UTF-8 编码,且编码后的长度不得超过 1024 个字符。

Key(文件名)

即 Object 的名字,key 为 UTF-8 编码,且编码后的长度不得超过 1024 个字符。Key 中可以带有斜杠,当 Key 中带有斜杠的时候,将会自动在控制台里组织成目录结构。

其他术语请参考概念与术语

5、快速使用

5.1 创建存储空间

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.CreateBucket(&s3.CreateBucketInput{
    Bucket:    aws.String(bucket),        // 存储空间名称,必填
    ACL:       aws.String("public-read"), // 存储空间访问权限,非必填
    ProjectId: aws.String(""),            // 项目制id,非必填
  })
  if err != nil {
    panic(err)
  }
  fmt.Println("结果:\n", awsutil.StringValue(resp))
}

5.2 上传对象

package main

import (
  "bytes"
  "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"
  "io/ioutil"
)

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>"
  // 填写对象的key
  key := "<object_key>"
  // 填写上传文件路径
  filePath := "/Users/test/demo.txt"
  // 读取文件
  file, err := ioutil.ReadFile(filePath)
  if err != nil {
    panic(err)
  }
  // 上传对象
  resp, err := client.PutObject(&s3.PutObjectInput{
    Bucket: aws.String(bucket),        // 存储空间名称,必填
    Key:    aws.String(key),           // 对象的key,必填
    Body:   bytes.NewReader(file),     // 要上传的文件,必填
    ACL:    aws.String("public-read"), // 对象的访问权限,非必填
  })
  if err != nil {
    panic(err)
  }
  fmt.Println("结果:\n", awsutil.StringValue(resp))
}

5.3 列举对象

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.ListObjects(&s3.ListObjectsInput{
    Bucket:    aws.String(bucket),    // 存储空间名称,必填
    Delimiter: aws.String("/"),       // 分隔符,用于对一组参数进行分割的字符,非必填
    MaxKeys:   aws.Long(int64(1000)), // 设置响应体中返回的最大记录数,默认为1000,非必填
    Prefix:    aws.String(""),        // 限定响应结果列表使用的前缀,正如您在电脑中使用的文件夹一样,非必填
    Marker:    aws.String(""),        // 指定列举指定空间中对象的起始位置,非必填
  })
  if err != nil {
    panic(err)
  }
  fmt.Println("结果:\n", awsutil.StringValue(resp))
}

5.4 删除对象

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>"
  // 填写删除对象的key
  key := "<object_key>"
  // 删除对象
  resp, err := client.DeleteObject(&s3.DeleteObjectInput{
    Bucket: aws.String(bucket), // 存储空间名称,必填
    Key:    aws.String(key),    // 对象的key,必填
  })
  if err != nil {
    panic(err)
  }
  fmt.Println("结果:\n", awsutil.StringValue(resp))
}

Documentation

Overview

Package sdk is the official AWS SDK for the Go programming language.

See our Developer Guide for information for on getting started and using the SDK.

https://github.com/ks3sdklib/aws-sdk-go/wiki

Directories

Path Synopsis
aws
awserr
Package awserr represents API error interface accessors for the SDK.
Package awserr represents API error interface accessors for the SDK.
credentials
Package credentials provides credential retrieval and management
Package credentials provides credential retrieval and management
internal
apierr
Package apierr represents API error types.
Package apierr represents API error types.
crc
endpoints
Package endpoints validates regional endpoints for services.
Package endpoints validates regional endpoints for services.
protocol/ec2query
Package ec2query provides serialisation of AWS EC2 requests and responses.
Package ec2query provides serialisation of AWS EC2 requests and responses.
protocol/json/jsonutil
Package jsonutil provides JSON serialisation of AWS requests and responses.
Package jsonutil provides JSON serialisation of AWS requests and responses.
protocol/jsonrpc
Package jsonrpc provides JSON RPC utilities for serialisation of AWS requests and responses.
Package jsonrpc provides JSON RPC utilities for serialisation of AWS requests and responses.
protocol/query
Package query provides serialisation of AWS query requests, and responses.
Package query provides serialisation of AWS query requests, and responses.
protocol/rest
Package rest provides RESTful serialisation of AWS requests and responses.
Package rest provides RESTful serialisation of AWS requests and responses.
protocol/restjson
Package restjson provides RESTful JSON serialisation of AWS requests and responses.
Package restjson provides RESTful JSON serialisation of AWS requests and responses.
protocol/restxml
Package restxml provides RESTful XML serialisation of AWS requests and responses.
Package restxml provides RESTful XML serialisation of AWS requests and responses.
protocol/xml/xmlutil
Package xmlutil provides XML serialisation of AWS requests and responses.
Package xmlutil provides XML serialisation of AWS requests and responses.
signer/v4
Package v4 implements signing for AWS V4 signer
Package v4 implements signing for AWS V4 signer
Package service contains automatically generated AWS clients.
Package service contains automatically generated AWS clients.
s3
Package s3 provides a client for Amazon Simple Storage Service.
Package s3 provides a client for Amazon Simple Storage Service.
s3/s3iface
Package s3iface provides an interface for the Amazon Simple Storage Service.
Package s3iface provides an interface for the Amazon Simple Storage Service.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL