阿里云OSS使用流程

 准备工作

无论怎么样,你需要准备一个阿里云账号,点击:注册阿里云

输入相关信息,然后注册成功以后,点击

image

image.gif

然后注册成功了,实名一下阿里云账号。打开实名入口,选择个人实名或者企业实名。

image

image.gif

如果你是个人用户,则建议你使用个人实名,如果你是企业用户,则建议你使用企业实名,这里要注意一下,个人实名的阿里云账号,在消费后,是无法索取企业发票的。

1.摘要


本篇博客对阿里云OSS的基本概念和使用进行总结,旨在快速上手该云存储产品,更为详细的内容可以参考官方文档,日后再进行补充。

2.概述


1)何为阿里云OSS?

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的分布式云存储产品

2)为何使用云存储?

传统数据存储的主要方式
①将数据存储于服务器本机,由操作系统(文件系统)直接通过文件路径实现对数据的存储与访问
②将数据存储于自建的存储系统中,通过本地进程间的或网络进程间的接口实现对数据的存储与访问(相当于在操作系统之上增加了一层数据存储与管理的应用,将业务与数据管理解耦)
这里的数据更具体的指各种非结构化的数据,即各种类型的文件或资源(如视频、图像、文本等)

传统数据存储方式的主要不足
需要自建存储系统并处理各种细节(基本功能、数据组织、备份容灾、扩容、安全性、数据迁移等)

云存储及其优势
与传统方式中的自建存储系统一致,只是将数据存储系统搭建、管理的任务交由第三方云服务提供商处理,省时省力省成本,是大数据、云服务时代敏捷开发的利器

3)使用方式

Web控制台
命令行工具ossutil
十多种语言的SDK
RESTfule API
图形化工具ossbrowser
4)存储类型


5)功能介绍


3.基本概念


1)存储空间Bucket

用于存储对象的容器

配置信息
①地域Region:OSS数据中心所在的物理位置,指定后不能修改,不同Region对应的访问域名不同
②访问域名Endpoint:OSS对外服务的访问域名,内外网不同
③访问密钥AcessKey:AK,用户通过用户标识AccessKeyId和密钥AccessKeySecret对称加密的方式进行身份验证,可以由Bucket创建者和Bucket授权者创建
④所属资源组:为Bucket打不同的标签

每个用户可以拥有多个存储空间,每个存储空间内部是扁平的,存储空间内的对象数目不限

存储空间名在整个OSS范围内是全局、唯一、不可修改的

命名规范
①只能包含数字、小写字母和短划线-
②必须以数字或小写字母开头和结尾
③长度在3-63字符之间

2)对象Object

对象是OSS存储数据的基本单元,也称OSS文件

组成
①元信息Object Meta(如最后修改时间、大小等信息)
②用户数据Data
③文件名Key(也称ObjectKey、ObjectName,使用UTF8编码、长度在1-1023字符之间、不能以正反斜杠开头)

对象类型
①Normal:简单模式上传的Object,适合5G以内的文件,只能读、不能修改,再次上传同名文件会覆盖
②Multipart:通过分片上传的Object,适合大文件,只能读,不能修改,再次上传同名文件会覆盖
③Appendable:追加方式上传的Object,可以追加上传,适用于视频监控、视频直播等实时视频流场景
不同类型之间不能相互转换

4.使用示例


4.1服务购买与开通


访问阿里云官网 → 登录 → 选择:产品/存储/对象存储OSS → 折扣套餐 → 选择套餐类型、付费 → 在对象存储OSS访问页中点击服务开通(账户第一次使用)

4.2Web控制台


创建存储空间Bucket
进入到管理控制台 → 点击Bucket列表 → 创建Bucket(进行配置)

文件管理
①上传文件:当前目录/指定目录(路径不存在自动创建) → 指定ACL(继承、私有、公共读、公共写)
②下载文件
③文件共享:URL共享下载(将HTTP头中的Content-Disposition设为attachment);自行绑定域名实现URL预览

通过自有域名访问OSS资源

4.3命令行工具ossutil


下面示例以Windows10 64位操作系统为例子

下载并安装对应操作系统的ossutil命令行工具
配置ossutil
①首先,创建AcessKey密钥:进入账户控制台 → 从右上角头像位置,进入AccessKey管理页 → 创建AccessKey密钥,验证账户即可(该步骤属于阿里云的访问控制RAM范畴)

②进入安装目录,运行ossutil.bat
③键入ossutil config,指定配置文件位置,或回车将配置文件存储在默认位置(推荐)
④设置语言,CH/EN,默认为CH
⑤键入对应的endpooint(可在对应Bucket概览查看)、accessKeyID、accessKeysecret、stsToken(回车为空)
⑥键入ossutil进行验证,若出现命令行提示,则证明配置成功(最后还可将该目录添加到系统的环境变量中)


简单示例

# 下载图片
ossutil cp oss://{bucket_name}/{file_name} {local_path}
# e.g.
ossutil cp oss://lincat-blog/image/my_pic1.jpg C:\Users\Administrator\Desktop

显示下载成功或失败提示:


其余命令行操作参见官方文档

4.4SDK编程


SDK编程以Java为例,OSS对Java的支持要求JDK版本在1.7及以上

引入依赖
①JDK1.9以下的依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.15.1</version>
</dependency>

②JDK1.9以上还需要添加jaxb相关依赖(略)示例代码:读文件并保存在本地
/** 通过OSS对Java的支持读取文件 **/

/** 通过OSS对Java的支持读取文件 **/
public class SDKDemo {

    public static void main(String[] args) {
        // 外网ip
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // accessKeyID
        String accessKeyId = "";
        // accessKeySecret
        String accessKeySecret = "";
        /* OSSClient是OSS的Java客户端,用于管理存储空间和文件等OSS资源
        需要初始化一个OSSClient实例,并根据需要修改ClientConfiguration的默认配置项*/
        OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
        try {
            // Bucket名
            String bucketName = "lincat-blog";
            // 对象名
            String objectName = "image/my_pic1.jpg";
            // 写入本地文件的路径
            String localFilePath = "my_pic1.jpg";
            // 获取对象
            OSSObject ossObject = ossClient.getObject(bucketName,objectName);
            // 转为输入流
            InputStream inputStream = ossObject.getObjectContent();
            FileOutputStream fileOutputStream = new FileOutputStream(localFilePath);
            // 写入输出文件流
            if(inputStream != null){
                int read;
                byte[] bytes = new byte[2048];
                while ((read = inputStream.read(bytes)) != -1) {
                    fileOutputStream.write(bytes, 0, read);
                }
            }
            // 关闭流与OSS客户端
            inputStream.close();
            fileOutputStream.close();
            ossClient.shutdown();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}


4.5RESTful API


通过OSS的RESTful API对OSS进行操作,这里通过Java语言,编写下载对象的例子

查阅OSS下载对象的接口

GET /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
Range: bytes=ByteRange(可选)

利用SpringBoot对RESTful请求的封装模板RestTemplate发起请求

<!-- 引入web starter以支持RestTemplate -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.7.2</version>
 </dependency>

编写代码(请求公共可读写的OSS对象则无需Authorization)

/* 通过OSS的RESTful API 下载图片 */
public class RestDemo {
    public static void main(String[] args) throws IOException {
        // Spring封装的RESTful请求模板类
        RestTemplate restTemplate = new RestTemplate();

        // Region端点
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // accessKeyID
        String accessKeyId = "";
        // accessKeySecret
        String accessKeySecret = "";
        // bucket名
        String bucketName = "lincat-blog";
        // 对象名
        String objectName = "image/my_pic1.jpg";
        // 写入本地文件的路径
        String localFilePath = "advanced/src/oss/my_pic1.jpg";
        // 构造Authorization参数
        Map<String,String> params = new HashMap<String, String>();
        String authorization = new StringBuilder().append("OSS ")
                .append(accessKeyId)
                .append(":")
                .append(accessKeySecret).toString();
        params.put("Authorization",authorization);
        // 构造URL
        String url = new StringBuilder().append("http://")
                .append(bucketName)
                .append(".")
                .append(endpoint)
                .append("/").append(objectName).toString();
        // 注意此处的返回值类型org.springframework.core.io.Resource
        Resource resource = restTemplate.getForObject(url, Resource.class,params);
        // 输入流
        InputStream inputStream = resource.getInputStream();
        // 输出文件流
        FileOutputStream fileOutputStream = new FileOutputStream(localFilePath);
        // 写入输出文件流
        if(inputStream != null){
            int read;
            byte[] bytes = new byte[2048];
            while ((read = inputStream.read(bytes)) != -1) {
                fileOutputStream.write(bytes, 0, read);
            }
        }
        // 关闭流
        inputStream.close();
        fileOutputStream.close();
    }
}


运行可实现OSS对象的下载


4.6图形化工具


5.其他功能


5.1签名工具
1)Header签名
2)PostObject Policy签名
3)URL签名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/530410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows wireshark抓包rtmp推流出现TCP Retransmission

解决办法&#xff1a;tcp.port1935 && !(tcp.analysis.retransmission)

签名失败当前系统没有安装苹果根证书

发生背景 第一次我没有iOS证书(.p12)和描述文件(.mobileprovision)。按照这个文档https://ask.dcloud.net.cn/article/152拿到后&#xff0c;安心打包出问题。 错误信息 [Info] begin getCertCName... [Info] begin codesignFramwork to ipa... [Error] DCUniBase.framework…

设计模式系列:单例模式

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;WPS二次开发QQ群:250325397&#xff09;&#xff0c;摸鱼吹牛嗨起来&#xff01…

RabbitMQ如何保证消息的幂等性???

在RabbitMQ中&#xff0c;保证消费者的幂等性主要依赖于业务设计和实现&#xff0c;而非RabbitMQ本身提供的一种直接功能。 在基于Spring Boot整合RabbitMQ的场景下&#xff0c;要保证消费者的幂等性&#xff0c;通常需要结合业务逻辑设计以及额外的技术手段来实现。以下是一个…

嵌入式学习51-单片机4

知识零碎&#xff1a; nop空指令 CRC校验 为了保证51单片与温度传感18b20 之间的高电平 采用一个上拉电阻改变电平的高低 温度寄存器原理

react17+antd4 动态渲染导航菜单中的icon

在路由信息对照表中的icon可以有两种形式&#xff1a;一种是组件形式&#xff0c;一种是字符串形式的。 在antd4的Menu.Item和SubMenu中的icon属性的格式为&#xff1a; 1.组件形式 这种方法在渲染时很方便&#xff0c;与antd中的Menu.Item中的icon属性的形式是一致的&#…

51单片机+TN901非接触式红外测温设计论文与源码PCB等资料

1、摘要 温度测量技术应用十分广泛&#xff0c;而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中&#xff0c;要求测量温度用的传感器不能与被测物体相接触&#xff0c;这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设…

如何让MacOS「终端」走代理

在 MacOS 操作系统中&#xff0c;默认情况下&#xff0c;终端命令行不会通过代理进行网络连接。这导致在应用软件研发过程中&#xff0c;许多需要通过命令行下载安装的软件或依赖包无法成功安装。经常出现Failed to connect to xxx port 443 after 75329 ms: Couldnt connect t…

【资源分享】MAC上最好用的截图软件-Snipaste

::: block-1 “时问桫椤“是一个关注本科生到研究生教育阶段的不严肃的公众号&#xff0c;希望能在大家迷茫、难受、困难之时帮助到大家。用广大研究生的经验总结&#xff0c;让大家能尽早的适应研究生生活&#xff0c;尽快的看透科研本质。祝好&#xff01;&#xff01;&#…

OLAP在线实时 数据分析平台

随着业务的增长&#xff0c;精细化运营的提出&#xff0c;产品对数据部门提出了更高的要求&#xff0c;包括需要对实时数据进行查询分析&#xff0c;快速调整运营策略&#xff1b;对小部分人群做 AB 实验&#xff0c;验证新功能的有效性&#xff1b;减少数据查询时间&#xff0…

IntelliJ IDEA 2024.1安装与激活[破解]

一&#xff1a;IDEA官方下载 ①如题&#xff0c;先到IDEA官方下载&#xff0c;简简单单 ②IDEA官方&#xff1a;IntelliJ IDEA – the Leading Java and Kotlin IDE 二&#xff1a;获取脚本 &#x1f31f;网盘下载&#xff1a;jetbra (密码&#xff1a;lzh7) &#x1f31f;获取…

macOS制作C/C++ app

C/C制作macOS .app 一、 .app APP其实是一个文件夹结构&#xff0c;只不过mac的界面中让它看起来像一个单独的文件。 在shell终端或者右键查看包结构即可看到APP的目录结构。 通常的app目录结构如下&#xff1a; _CodeSignature, CodeResources 一般为Mac APP Store上架程序…

Redis的RDB文件

Redis持久化 Redis是操作内存的&#xff0c;所以是内存数据库&#xff0c;断电即失&#xff0c;所以需要持久化 RDB 文件名:dump.rdb # The filename where to dump the DB dbfilename dump.rdb在指定时间间隔内&#xff0c;将内存中的数据&#xff0c;集体快照写入磁盘内&…

FineBI概述

FineBI是一款商业智能&#xff08;Business Intelligence&#xff09;工具&#xff0c;它通过最终业务用户自主分析企业已有的信息化数据&#xff0c;帮助企业发现并解决存在的问题&#xff0c;协助企业及时调整策略做出更好的决策&#xff0c;增强企业的可持续竞争性。它以自助…

HDFS读、写数据流程(图解)以及元数据的checkpoint机制

一、HDFS概述 HDFS集群由NameNode,DataNode,SecondaryNameNode构成。 NameNode&#xff1a;接受用户请求。存储元数据&#xff08;描述文件的数据&#xff0c;如文件名、文件大小、目录名、文件创建时间等&#xff09; DataNode&#xff1a;负责管理用户的文件数据块&#xff0…

openGauss学习笔记-259 openGauss性能调优-使用Plan Hint进行调优-指定不使用全局计划缓存的Hint

文章目录 openGauss学习笔记-259 openGauss性能调优-使用Plan Hint进行调优-指定不使用全局计划缓存的Hint259.1 功能描述259.2 语法格式259.3 示例 openGauss学习笔记-259 openGauss性能调优-使用Plan Hint进行调优-指定不使用全局计划缓存的Hint 259.1 功能描述 全局计划缓…

Linux内核之原子操作atomic_t用法实例(三十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

MYSQL 8.0版本修改用户密码(知道登录密码)和Sqlyog错误码2058一案

今天准备使用sqlyog连接一下我Linux上面的mysql数据库&#xff0c;然后就报如下错误 有一个简单的办法就是修改密码为password就完事!然后我就开始查找如何修改密码! 如果是需要解决Sqlyog错误码2058的话&#xff0c;执行以下命令&#xff0c;但是注意root对应host是不是loca…

【目标检测】-入门知识

1、回归与分类问题 回归问题是指给定输入变量(特征)和一个连续的输出变量(标签),建立一个函数来预测输出变量的值。换句话说,回归问题的目标是预测一个连续的输出值,例如预测房价、股票价格、销售额等。回归问题通常使用回归分析技术,例如线性回归、多项式回归、决策树…

【优选算法专栏】专题十八:BFS解决拓扑排序(一)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…