关于阿里云oss:golang使用阿里云OSS对象存储
概念Bucket:存储空间Object:文件ObjectKey:文件名,文件的惟一标识,与Key、ObjectName为同一概念Region:地区,OSS数据中心的地理位置Endpoint:域名AccessKey:密钥,由AccessKey ID和AccessKey Secret组成计费总费用 = 存储费 + 长期存储费 + 数据取回费 + 流量费 + 申请费 + 其他费用 一、存储费存储费 = 文件大小(GB) x 单价 ÷ 30 ÷ 24 x 存储时长(hour) 存储类型单价规范-本地冗余0.12规范-同城冗余0.15低频拜访-本地冗余0.08低频拜访-同城冗余0.10归档0.033冷归档0.015最贵的规范存储的单价是最便宜的冷归档存储的8倍。存储一个大小为1G的文件每月须要领取0.12元的存储费。二、长期存储费长期存储费 = 文件大小(GB) x 单价 ÷ 30 ÷ 24 x 冻结时长(hour) 存储类型单价冷归档0.12冷归档文件在冻结期间,须额定领取一笔依照规范存储单价计算的长期存储费用。三、数据取回费数据取回费 = 文件大小(GB) x 单价 存储类型单价规范0低频拜访0.0325归档0.06冷归档0.03~0.2四、流量费流量费 = 流量(GB) x 单价 流量方向单价上传0内网下载0外网下载(0-8)0.25外网下载(8-24)0.50CDN回源下载0.15跨区域复制(中国大陆)0.50外网下载(0-8)0.25上传收费,下载免费。一个大小为1G的文件,每下次1次,须要领取0.25元的流量费。五、申请费申请费 = math.Ceil(申请次数/10000) x 单价 申请类型规范低频拜访归档冷归档PUT0.010.10.10.1GET0.010.10.10.1取回///0.3 ~ 30冷归档文件的取回申请每一万次需领取30元的申请费。六、其他费用跨区域文件复制流量费、图片处理费、图片压缩费、视频截帧费、标签费、传输减速费、DDoS防护费、元数据管理费、敏感数据保护费等等。 存储类型规范 + 低频 + 归档 + 冷归档。 比照指标规范低频归档冷归档最小计量单位064KB64KB64KB最小存储时长030天60天180天拜访提早001min1-12hour数据取回费用030天60天180天URL公共:<Schema>://<Bucket>.<Endpoint>/<Object>公有:<Schema>://<Bucket>.<Endpoint>/<Object>?签名信息 BucketCRUDBucket创立后不反对批改,所以只有CRD,没有U。 package mainimport ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss")func main() { // 创立OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint。 // 以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。 client, err := oss.New( "yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret", ) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 新增 err = client.CreateBucket( "examplebucket", oss.StorageClass(oss.StorageIA), oss.ACL(oss.ACLPublicRead), oss.RedundancyType(oss.RedundancyZRS) ) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } /* StorageClass:存储类型。 StorageStandard=规范存储 StorageIA=低频拜访 StorageArchive=归档存储 StorageColdArchive=冷归档存储 ACL:拜访权限。 ACLPrivate=公有 ACLPublicRead=公共读 ACLPublicReadWrite=公共读写 RedundancyType:冗余类型。 RedundancyLRS=本地冗余 RedundancyZRS=同城冗余 */ // 查问 marker := "" for { lsRes, err := client.ListBuckets(oss.Marker(marker)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 默认状况下一次返回100条记录。 for _, bucket := range lsRes.Buckets { fmt.Println("Bucket: ", bucket.Name) } if lsRes.IsTruncated { marker = lsRes.NextMarker } else { break } } // 查问Region ID regionID, err := client.GetBucketLocation("examplebucket") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println("Bucket Location:", regionID) // oss-cn-shanghai /* Region ID能够了解为Endpoint的前缀: 外网Endpoint:oss-cn-shanghai.aliyuncs.com 内网Endpoint:oss-cn-shanghai-internal.aliyuncs.com */ // 删除 err = client.DeleteBucket("examplebucket") if err != nil { fmt.Println("Error:", err) os.Exit(-1) }}生命周期通过设置生命周期,能够实现定期将Bucket内的Object转换存储类型,或者将过期的Object和碎片文件删除,进而升高存储费用。 ...