冷存储 (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())
    }

    // ...
}

results matching ""

    No results matching ""