一分钟学会使用阿里云对象存储OSS

42 阅读2分钟

写在前面

小白快问快答,非小白忽略

1. 什么是阿里云对象存储OSS

先上一张官网介绍的图

截屏2024-11-29 19.19.12.png 讲直白一点

可以将阿里云的OSS对象存储理解为一个个 key-value 键值对

  • Key:可以理解文件的名称(或路径),它是OSS中存储每个对象的唯一标识符
  • Value:文件本身的内容(如图片、视频、文档等),OSS存储的每个对象都是一个文件

在OSS里上传一个文件时,指定一个Key(比如文件名或路径),然后文件内容(Value)就会与这个Key绑定,通过这个Key进行文件的访问或下载,例如,Key-xxx.jpgValue-文件xxx.jpg的内容。这种方式让OSS非常灵活,支持存储各种类型的数据,并且能够支持快速检索

2. 使用阿里云OSS存储需要注意什么

防止流量盗刷

OSS存储的文件如果被恶意盗刷,会造成不必要的带宽消耗和费用增加,防止被盗刷的方法在阿里云官方及各类分享中已有不少,简单总结下的话大概有:

  • 限制带宽,控制下行速率

  • 开启防盗链功能,仅允许来自您的域名(如www.demo.com)的请求访问

  • 设置Bucket权限为私有,仅通过签名URL或临时授权访问

  • 绑定自定义域名并启用HTTPS

  • 配合阿里云CDN,将流量引导到缓存节点减少OSS直接请求

  • 设置流量监控

来看正文

快速学会使用阿里云对象存储OSS

1. 购买阿里云对象存储OSS并配置好bucket

阿里云官网选择适合需求的OSS对象存储

image.png

2. bucket权限控制

根据需求配置好访问权限等

截屏2024-12-02 14.51.03.png

3. 根据官方文档安装好sdk,配置访问凭证

官方文档点这里

4. 封装阿里云OSS上传pkg以进行调用

以上传文件举例(Go后端)

安装好sdk后,将获取到的访问凭证写入配置文件/常量中(根据需求)

// 阿里云 OSS 配置
var (
    Endpoint = ""        // 阿里云 OSS Endpoint
    OssUrl   = ""        // 阿里云 OSSUrl

    AccessKeyID     = "" // AccessKeyID
    AccessKeySecret = "" // AccessKeySecret
    BucketName      = "" // Bucket 名称
)

// 封装阿里云OSS
type AliOSSClient struct {
    Client *oss.Client
    Bucket *oss.Bucket
}

var OssClient AliOSSClient

// 初始化阿里云OSS
func init() {
    client, err := oss.New(Endpoint, AccessKeyID, AccessKeySecret)
    if err != nil {
       return
    }

    bucket, err := client.Bucket(BucketName)
    if err != nil {
       return
    }
    OssClient = AliOSSClient{
       Client: client,
       Bucket: bucket,
    }
}

func AliOssUpload(objectKey string, buffer bytes.Buffer) (url string, err error) {
    err = OssClient.Bucket.PutObject(objectKey, bytes.NewReader(buffer.Bytes()))
    if err != nil {
       return
    }

    url = fmt.Sprintf("%s%s", OssUrl, objectKey)
    return
}

最后,在需要用到阿里云oss对象存储的地方进行相应的调用即可