阿里云OSS是阿里提供的海量云存储服务,同时安全可靠,可靠性远高于本地存储,在日常中运用最多的可能还是文件存储。OSS提供各种操作方式,可以简单方便的上传下载文件。
1 oss的购买
oss对新用户提供3个 月100G的免费试用,40g的半年套餐也十分优惠,购买页面如下:
选择合适的套餐,如果是新用户会有100G的免费3个月套餐,免费套餐购买前需要清空账户以前欠费,这里要注意的地域的选择,如果自己以前有ECS或者RDS等实例,尽可能选择和这些实例同一地域,这样就可以通过内网访问OSS进行上传下载,如果选择了不同地域的产品,就需要外网访问了,可能会增加不必要的费用。
2 访问OSS控制台,创建bucket,配置安全策略
登录阿里云账号,访问控制台,可以看到自己已经购买的所有阿里云产品
点击OSS存储,可以跳转到OSS管理控制台
点击左侧导航栏的bucket列表,可以看到已经创建的bucket,在这里也可以创建新的bucket,
点击bucket名称可以查看bucket的详细信息,也可以创建目录,设置权限等
创建目录比较简单,直接点击新建目录,权限管理则稍微复杂一点,有多种设置和选择,可以根据自己的需要灵活设置。
首先要设置的Bucket ACL,界面如下图所示
bucket ACL的设置有三个选项,选择私有则对bucket的所有访问都需要经过身份验证,选择公共读则允许匿名用户对bucket进行读,公共读写则允许匿名用户对bucket进行读写。
私有模式下无论是上传还是下载比其它两种模式下复杂了不少,本文主要是接受这种模式下的操作。
3 使用oss控制台上传下载文件
使用控制台上传下载文件操作非常简单,点击bucket管理界面左侧的导航栏的文件管理
上图中可以看到bucket的各个文件夹和文件,点击进入文件要上传的目录中,点击上传文件
可以看到当前上传到的目录,可以将文件和目录直接拖到待上传文件区域上传,点击扫描文件则可以从本地选择要上传的文件,点击扫描文件夹则可以选择要上传的文件夹。
下载文件操作也比较简单直接
点击文件右侧的更多后再点击下载即可。也可以选择多个文件,点击上方的批量操作,进行批量下载。
4 使用ossutil进行下载上传
ossutil是阿里云提供的命令行工具,支持linux、windows、mac等各种操纵系统,可以执行包括上传、下载在内的各种oss操作。
4.1 ossutil的下载及安装
ossutil的下载地址在这里
https://help.aliyun.com/document_detail/120075.html
根据自己的操作系统选择合适的安装包,点击相应的连接即可下载相应平台的安装包,linux64为平台下的安装包是二机制文件,下载后上传到liunx服务器中,移动到可执行文件的目录下比如/usr/local/bin后,加上执行权限即可执行。安装完后检查一下可执行文件ossutil64的权限及位置
[root@iZ2ze0t8khaprrpfvmevjiZ bin]# ls -l /usr/local/bin/ossutil64
-rwxr-xr-x 1 root root 10459836 Jun 29 17:11 /usr/local/bin/ossutil64
4.2 创建一个配置文件
由于我这里的bucket ACL的设置值为私有,对bucket的读和写都要进行身份验证,如果每次操作都输入连接及验证信息操作起来比较繁琐。想要避免重复输入,可以创建一个配置文件,每次对bucket操作时使用这个配置就可以省去频繁输入endpoint、AccessKey ID、AccessKey Secret的痛苦了,这些都很不容易记住。创建配置文件之前先准备一下上面的信息:
endpoint在上面的bucket overview页面上可以看到,由于我这里的ECS和OSS处于同一地域,使用内网的地址即可。
access key的信息在上面的页面上获取,点击页面右上角的头像,后可以看到管理access key选项,点击一下,就进入上图的访问key管理界面,如果这里没显示访问key则须要创建一个,如果已有访问key则点击右面的查看key,获取手机验证码并输入后访问key id和密钥会显示在屏幕上。
获取必要的信息后可以创建配置文件了,使用ossutil工具以交互式方式创建,也可以直接编辑文件或者使用ossutil命令带选项方式创建
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 config
The command creates a configuration file and stores credentials.
Please enter the config file name,the file name can include path(default /root/.ossutilconfig, carriage return will use the default file. If you specified this option to other file, you should specify --config-file option to the file when you use other commands):my_oss
For the following settings, carriage return means skip the configuration. Please try "help config" to see the meaning of the settings
Please enter language(CH/EN, default is:EN, the configuration will go into effect after the command successfully executed):CH
Please enter endpoint:threemonth.oss-cn-beijing-internal.aliyuncs.com
Please enter accessKeyID:LTAI5t725qPPeJhpsCoM3epR
Please enter accessKeySecret:****************************
Please enter stsToken:
根据提示输入配置文件名,语言(cn或者ch),access key id, access key 密钥,stsToken则不必输入直接回车即可。
4.3 使用ossutil工具bucket的管理、文件上传下载
显示bucket
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 ls -s --config-file my_oss
Error: oss: service returned error: StatusCode=403, ErrorCode=SignatureDoesNotMatch, ErrorMessage="The request signature we calculated does not match the signature you provided. Check your key and signing method.", RequestId=62BCF78D4CABF13632A1FBEE
这里的错误信息显示的是signature不匹配,查询阿里官网得知endpoint信息是不含bucket的,从显示endpoint的图里也可以看到,上面创建配置文件时实际输入的bucket地址,用vi编辑一下配置文件,去掉endpoint里的bucket信息再执行命令
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 ls --config-file my_oss
CreationTime Region StorageClass BucketName
2022-06-29 17:29:59 +0800 CST oss-cn-beijing Standard oss://threemonth
Bucket Number is: 1
0.173934(s) elapsed
可以看到创建时间,区域及bucket名称
上传一个文件
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 cp gdb.log oss://threemonth/upload --config-file my_oss
Succeed: Total num: 1, size: 1,925. OK num: 1(upload 1 files).
average speed 25000(byte/s)
0.080086(s) elapsed
文件没有上传到upload目录下,反而上传到了bucket根目录下,文件名也改为了upload,要想上传到指定目录下,目录名后面需要加上‘/’,如下所示
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 cp gdb.log oss://threemonth/upload/ --config-file my_oss
Succeed: Total num: 1, size: 1,925. OK num: 1(upload 1 files).
average speed 25000(byte/s)
文件已经上传到了upload目录下,查看文件详细信息,可以看到文件的url,使用wget在ECS中下载一下试试
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# wget https://threemonth.oss-cn-beijing.aliyuncs.com/upload/%E9%82%93%E4%B8%BD%E5%90%9B%20-%20%E4%BD%86%E6%84%BF%E4%BA%BA%E9%95%BF%E4%B9%85.mp3?Expires=1656553431&OSSAccessKeyId=TMP.3KewYToct7R9i9kETqz4LjLRb59FNXi82t6DgBikZU7ge7hsNX8MxZSZFqPwBAgQy7XLebr3Knt1qCEqWKrmM5anVMY64P&Signature=XESKN%2FwBVsmIp1S05YqqnLUs3w8%3D
[1] 320163
[2] 320164
[root@iZ2ze0t8khaprrpfvmevjiZ ~]#
Redirecting output to ‘wget-log’.
[2]+ Done OSSAccessKeyId=TMP.3KewYToct7R9i9kETqz4LjLRb59FNXi82t6DgBikZU7ge7hsNX8MxZSZFqPwBAgQy7XLebr3Knt1qCEqWKrmM5anVMY64P
下载报错了,报错日志重定向到wget-log中,看一下这个日志的内容:
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# cat wget-log
--2022-06-30 09:39:17--
https://threemonth.oss-cn-beijing.aliyuncs.com/upload/%E9%82%93%E4%B8%BD%E5%90%9B%20-%20%E4%BD%86%E6%84%BF%E4%BA%BA%E9%95%BF%E4%B9%85.mp3?Expires=1656553431
Resolving threemonth.oss-cn-beijing.aliyuncs.com (threemonth.oss-cn-beijing.aliyuncs.com)... 59.110.190.48
Connecting to threemonth.oss-cn-beijing.aliyuncs.com (threemonth.oss-cn-beijing.aliyuncs.com)|59.110.190.48|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2022-06-30 09:39:17 ERROR 403: Forbidden.
显示403错误,拒绝访问
使用ossutil工具下载,将文件重命名一下
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ossutil64 cp oss://threemonth/upload/gdb.log ./gdb.log_download --config-file=my_oss
Succeed: Total num: 1, size: 1,925. OK num: 1(download 1 objects).
average speed 13000(byte/s)
0.138836(s) elapsed
显示一下文件
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# ls
gdb.init oracle-database-preinstall-21c-1.0-1.el8.x86_64.rp
gdb.log percona-release-latest.noarch.rpm
gdb.log_download PolarDB-for-PostgreSQL
文件下载成功。