冷存储 (Line Storage)
七牛冷存储服务是七牛云针对冷数据提供的存储服务,定位于在线存储 (online) 和离线存储 (offline) 之间的分级存储产品,既能提供接近离线存储的低廉存储成本和无限可扩展存储空间,又能做到类似在线存储的数据秒级访问(time-to-first-byte)性能,可以满足用户数据归档、数据备份和数据灾备等场景。七牛冷存储服务采用兼容 AWS S3 API 的标准实现,用户可直接选择使用 AWS S3 相关备份工具通过七牛冷存储备份数据。
特性
七牛冷存储有别于传统的离线存储方案(磁带机)、亚马逊归档存储(AWS Glacier)和阿里云归档存储(Aliyun OAS),提供了以下特性:
数据秒级可用,冷存储数据读取最高延时 2 ~ 3 秒钟,无需为恢复数据额外等待数小时之久
没有数据访问限制
没有存储对象大小限制
兼容 AWS S3 API 的标准访问方式
示例
package main
import (
"log"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
const (
s3host = "https://api-s3.qiniu.com"
s3region = "cn-east-1"
s3pathstyle = true
)
var (
s3client *s3.S3
)
func main() {
s3provider := credentials.StaticProvider{
Value: credentials.Value{
AccessKeyId: "<your-qiniu-access-key-id>",
SecretAccessKey: "<your-qiniu-access-key-secret>",
},
}
s3credential := credentials.NewCredentials(&s3provider)
s3session := session.New()
s3session.Config.WithEndpoint(s3host)
s3session.Config.WithRegion(s3region)
s3session.Config.WithCredentials(s3credential)
s3session.Config.WithS3ForcePathStyle(s3pathstyle)
s3session.Config.WithMaxRetries(1)
s3client = s3.New(s3session, nil)
lineBucket := "your-line-bucket-name"
lineObject := "your-line-object-name.txt"
// create line storage bucket
bucketInput := s3.CreateBucketInput{
Bucket: aws.String(lineBucket),
}
request, _ := s3client.CreateBucketRequest(&bucketInput)
request.HTTPRequest.Header.Add("X-Amz-Storage-Class", "line") // since s3 sdk does not support assign storage class within input, we use a custom header instead.
err := s3client.Send()
if err != nil {
log.Fatal(err.Error())
}
// upload object
objectIntput := s3.PutObjectInput{
Bucket: aws.String(lineBucket),
Key: aws.String(lineObject),
Body: strings.NewReader("Hello, Qiniu Line Storage!"),
}
_, err = s3client.PutObject(&objectIntput)
if err != nil {
log.Fatal(err.Error())
}
// ...
}