第4 章 : 掌握云存储OSS

云存储OSS使用初体验

实验概述

开始实验后,系统会自动去创建一台Linux ECS。其中,创建的ECS中已经部署了web应用和OSS python SDK。在本实验中,已创建的ECS作为web服务器,浏览器中直接访问其IP地址会显示包含四个小图片的页面,并且四个图片都保存在ECS本地。通过调用OSS API将四个图片上传到OSS中,同时删除保存在ECS本地的四个图片,此时访问ECS IP将会看到页面中没有图片可以显示。为了在页面中显示原有的四个图片,实验中需要修改web应用服务器根目录下默认访问页面中的图片地址,将图片地址修改为四个图片分别在OSS中的访问地址。

实验目标

完成此实验后,可以掌握的能力有:

  1. 通过阿里云管理控制台管理对象存储服务OSS

  2. 在实际的web开发中使用对象存储服务OSS存储页面中的图片

  3. 调用OSS API上传图片

实验手册

1 查看图片分享网站

  1. 本小节将展示一个在ECS上已搭建的图片分享网站,以及图片分享网站的源码。
    
  2.  首先,在浏览器中新建一个页面。然后,在浏览器的地址栏中,输入本次实验分配的ECS实例 弹性IP。查看到当前页面中显示1张“花园”的图片,该图片实际是由4张小图片组成的。
    
  3. 远程登录到ECS服务器,查看图片并分享网站的源码。登录信息请使用本实验 实验资源 提供的ECS服务器的 外网地址,用户名和 密码。
    

说明:本实验ECS服务器为 Linux操作系统,因此远程登录ECS实例的详细步骤,请参考云中沙箱帮助文档远程连接Linux系统

  1.  登录到ECS服务器后,执行如下命令,进入网站系统的根目录。
    

cd /alidata/www/default
然后,使用如下查看命令,查看保存在根目录下的四张图片01.png,02.png,03.png和04.png,也就是图片分享网站所展示的4张小图片。

ls

    在浏览器中,新建一个页面,并在地址栏中输入 <ECS实例外网地址>/01.png,可以查看到01.png的图片内容。同理,可以查看"02.png","03.png"以及“04.png”的图片内容。
  1. 使用如下命令,查看网站首页的源码,可以看到图片分享网页中显示的图片,是从网站根目录 /alidata/www/default 中,读取图片 01.png,02.png,03.png 和 04.png拼接的。
    

cat index.html

2 上传图片文件

  1. 本小节将存储在本地的图片上传到OSS Bucket中,从而,图片分享网站将从OSS Bucket中读取图片,本地无需保存图片。
    
  2. 在ECS实例的 /alidata/www/default 目录中,执行如下命令,进入 cfg.json 的编辑页面,并修改OSS的配置信息。
    

vim cfg.json

    在编辑页面中,修改如下参数信息。

id:云中沙箱 实验资源 分配的 AK ID 值;

secret:云中沙箱 实验资源 分配的 AK Secret 值

endpoint:请根据下面的 OSS地域与Endpoint对应关系表,输入 实验资源 所分配 地域 相对应的 外网Endpoint 。例如:分配的 地域

为 华东1(杭州),则输入 oss-cn-hangzhou.aliyuncs.com。

bucket:云中沙箱 实验资源 分配的 OSS资源 Bucket 名称

object_dir:云中沙箱 实验资源 分配的 OSS资源 Object路径。

完成后,首先按 esc键 退出编辑状态,然后输入下面命令保存并退出编辑页面。

:wq
OSS地域与外网Endpoint对应关系表:

地域 外网Endpoint
华东 1 (杭州) oss-cn-hangzhou.aliyuncs.com
华东 2 (上海) oss-cn-shanghai.aliyuncs.com
华北 1 (青岛) oss-cn-qingdao.aliyuncs.com
华北 2 (北京) oss-cn-beijing.aliyuncs.com
华南 1 (深圳) oss-cn-shenzhen.aliyuncs.com

  1. 执行如下命令,将01.png上传到OSS,该脚本使用OSS 提供的API接口put_object_from_file()将本地文件上传到 实验资源 分配的 Object路径 中。
    

python oss_upload.py 01.png
然后,执行相同命令,只把 01.png 改为 02.png 等,将02.png、03.png 和 04.png三个图片分别上传到OSS。接下来,用户将访问OSS管理控制台,并查看上传到OSS的文件。

说明:通过 Python SDK 的方式上传本地文件到OSS的具体方法,请参考实验 SL003 使用OSS API上传和下载文件。

  1. 首先,请点击左侧的 实验资源,然后点击 前往管理控制台,访问阿里云RAM登录界面。
    

前往控制台登陆.png

在阿里云RAM登录界面,输入本次实验 实验资源 中分配的 子用户名称 和 子用户密码 。点击 登录,进入阿里云管理控制台。

  1. 登录成功后,找到并点击 对象存储OSS,从而进入OSS管理控制台。
    

子用户打开OSS

  1. 进入OSS管理控制台后,在 概览 的 Bucket 栏中,点击 实验资源 提供的 Bucket名称,例如 lab-oss-898hd2,进入 lab-oss-898hd2 Bucket管理页面。

OSS找到bucket

  1. 点击 文件管理 ,可以查看到当前Object列表中存在一个或多个文件夹。点击 实验资源 分配的一级 Object路径。例如:用户分配的 Object路径 为 SL004/u-xxx/,则 SL004 为一级Object路径。点击 SL004,进入Object “SL004” 路径中。

找到sl004

    在“SL004”的Object路径中,点击云中沙箱分配的二级 Object路径。例如:用户分配的 Object路径 为 SL004/u-xxx/,则 u-xxx 为二级Object路径。点击 u-xxx 进入Object  SL004/u-xxx 路径中。

    此时,在Object管理的列表的第一行中,用户可以查看到当前Object路径信息。在 Object管理 的Object列表中,展示已上传并保存到“SL 004/u-xxx/”路径下的4张图片:01.png,02.png,03.png,04.png。

图片上传成功

3 使用OSS存储图片分享网站

  1. 本小节中,搭建的图片分享网站将图片等静态资源,存储在OSS中,并直接从OSS中读取。

  2. 返回ECS实例终端页面,执行下面命令进入alidata/www/default目录。

cd /alidata/www/default
然后执行如下命令,删除当前目录中的所有“.png”文件,也就是,图片分享网站中读取的4张图片01.png, 02.png, 03.png 和 04.png。

rm -rf *.png
执行查看文件命令,查看当前目录中无图片文件,证明图片已删除。

ls

  1. 打开(在浏览器的地址栏中,输入 实验资源 分配的ECS 外网地址 并访问)或刷新图片分享网站主页面,查看到当前页面中所有图片均无法正常显示。这是因为图片分享网站读取的是本地图片文件,而本地存储的图片文件已被删除,因此无法读取到图片信息。

注意:若访问页面仍旧可以显示图片,可能是由于浏览器缓存问题,建议清理下浏览器的缓存或者换一个浏览器查看ECS服务器主页。

  1. 接下来,将重新配置index.html中的图片访问信息,按照以下步骤将图片链接修改为上传到OSS的图片的URL访问地址:
    
  1. 返回OSS管理控制台,进入云中沙箱 实验资源 分配的 Object路径 中,获取图片的URL访问地址。点击 01.png ,找到并点击右侧弹出框的 复制文件 URL。

获取图片url

  1. 执行如下命令返回ECS服务器的/alidata/www/default目录下,并进入服务器访问首页 index.html 的编辑界面。

cd /alidata/www/default
vim index.html
3) 在 下,找到第一张图片的链接参数 src=“01.png”,删除01.png,并粘贴上面步骤中复制的上传到OSS 01.png 图片的访问 地址。 同理,修改 02.png,03.png,04.png的链接地址为OSS的存储地址。

  1. 完成所有图片的修改后,点击 esc键 退出编辑状态,执行以下命令保存并退出编辑页面。

:wq
5. 在浏览器中,刷新 ECS实例的 外网地址 的访问页面,页面将再次显示 花园 的图片,说明现在网站可以使用存储在OSS上的图片来显示页面。

使用云存储OSS的API上传和下载文件

实验概述

实验开始后,系统会自动去创建一台Linux ECS。且ECS实例已经部署了OSS python SDK。用户可以使用OSS Python SDK来访问OSS服务,包括上传文件,下载文件,查看文件列表等。默认这些程序是写在一个脚本文件里,通过Python程序可以执行。OSS上传方式大致可以分为两类:简单上传和分块上传。本实验通过OSS的Python SDK,使用简单上传的方式实现小文件的上传和下载;最后指导您实现如何去删除OSS Bucket。

实验目标

完成此实验后,可以掌握的能力有:

  1. 使用OSS python SDK来调用OSS API

  2. 掌握OSS简单上传的方式

  3. 掌握OSS分块上传的方式

  4. 使用OSS python SDK快速删除OSS Object

实验手册

1 查看OSS环境

  1. 首先,查看本次实验提供的OSS存储环境。请通过云中沙箱 实验资源 提供的方式,点击 前往控制台 。
    

前往控制台登陆.png

在跳转的阿里云RAM登录界面,输入本次实验分配的 子用户名称 和 子用户密码。完成后,点击 登录 ,访问阿里云管理控制台。

  1. 进入控制台后找到 对象存储OSS ,进入OSS管理控制台。
    

子用户打开OSS

  1. 在OSS管理控制台的概览页面,在下图红框内,找到并点击与 实验资源 提供的 Bucket名称 一致的Bucket名,例如 lab-oss-900hd2 ,进入Bucket的管理页面。

找到bucket

  1. 在 文件管理 页面中,进入 实验资源 分配的 Object 路径 ,例如 SL003/u-xxxx ,查看到当前 OSS 的 Object 所在的路径 暂无数据 。
    

找到文件夹内无内容

2 调用OSS API上传小文件

  1. OSS 上传方式分为两类:简单上传和分块上传;其中,简单上传由于不支持断点续传,适合用于上传小文件;而分块上传支持断点续传,适合上传比较大的文件,一般超过100MB 的文件都推荐使用分块上传。 本小节中,使用OSS Python SDK 调用 OSS API,将用户本地的小文件上传到本次实验分配的 Object路径 中。 
    
  2. 首先,远程登录到 OSS Python环境 的ECS服务器,请使用本实验提供的ECS服务器的 外网地址 ,用户名 和 密码 。

说明:远程登录Linux系统ECS实例的详细步骤,请参考云中沙箱 帮助文档

  1.  登录到 ECS 服务器后,在使用 OSS API 进行文件上传和下载之前,用户需配置阿里云账号的 AccessKeyID, AccessKeySecret 和 Endpoint 信息(均可从 实验资源 获取),以便于通过 OSS 的权限验证。在 ECS 命令行中,使用命令 cd aliyun-lab   进入 aliyun-lab 目录。 然后,使用命令 vim configure.json ,configure.json 文件用于提供调用 OSS API 时所需的公共参数。
    
    
    
    按 i 键进入编辑状态, 修改文件中如下的参数信息,完成后,键入 esc  退出编辑状态,并输入vim的编辑命令  :wq ,保存且退出。
    

id-参数值为本实验中,实验资源 分配的AK ID;

secret-参数值为本实验中,实验资源 分配的AK Secret;

endpoint-参数值为本实验中,实验资源 的“地域”对应的“外网Endpoint”数值。比如:提供的“地域”为“华东 1(杭州)”,则选择“华东 1(杭州)”的“外网Endpoint”。
OSS 地域与外网 Endpoint 的对应关系如下表:

地域

外网Endpoint

华东 1 (杭州)

oss-cn-hangzhou.aliyuncs.com

华东 2 (上海)

oss-cn-shanghai.aliyuncs.com

华北 1 (青岛)

oss-cn-qingdao.aliyuncs.com

华北 2 (北京)

oss-cn-beijing.aliyuncs.com

华南 1 (深圳)

oss-cn-shenzhen.aliyuncs.com

  1. 完成 OSS 的基本配置信息后,在 aliyun-lab 路径下,执行命令 vim object_upload.py ,修改脚本文件 object_upload.py 。此脚本通过调用 OSS API,上传本地文件 (__file_name:本地文件路径) 到 bucket 中,并重命名 object (__object_name:Bucket中Object名称) 。在代码的 #调用OSS API的put_object()上传文件 下方,添加如下的代码,完成修改后,保存脚本并退出编辑页面。
    

注意:

with open(__file_name,‘rb’) as fileobj:

         bucket.put_object(__object_name, fileobj)
  1.    执行如下命令,运行脚本程序。将本地文件 lab.txt 上传到本实验分配 OSS bucket 的 Object 路径下,并重命名为 lab_object.txt 。
    

python object_upload.py <oss bucket名称> lab.txt <oss object路径>/lab_object.txt
注意:请删除 <oss bucket名称>,并修改为实验资源分配的OSS Bucket名称 ;删除 <oss object 路径> ,并修改为实验资源分配的OSS Object路径。若没有使用本实验提供的Bucket 或 Object 路径,可能会导致未知错误。

  1. 输入命令 cat lab.txt ,查看上传到OSS指定路径的文件内容:Hello first object! 。
    
  2. 返回 OSS 管理控制台,并进入 实验资源 分配的 Bucket 和该 Bucket 的 Object 路径下,点击右上角的 刷新 ,刷新 Object 管理页面。此时,在 Object 径下,查看到通过Python SDK上传的文件 lab_object.txt 。
    

上传成功后新增一个文件

3 调用OSS API下载小文件

  1.    在真实的工作环境中,存储在 OSS 环境下的文件资源,可能由于业务需求,需要下载到本地,进行审计等。本小节将介绍如何将 OSS 中的对象文件通过 API 下载到本地服务器。
    
  2.    返回 ECS 服务器访问终端,在 ECS 的 aliyun-lab 目录下,执行命令 vim object_download.py ,修改脚本文件 object_download.py 。此脚本通过调用 OSS API,下载 OSS的 bucket 中名称为 __object_name 的 object 到本地,并重命名为 __local_name 。在代码的 #调用OSS API的get_object_to_file()下载object 下方。添加如下的代码,完成修改后,保存脚本。
    

bucket.get_object_to_file(__object_name, __local_name)

  1. 执行如下命令,将 OSS 存储的文件 lab_object.txt 下载到本地,并重命名为 lab_local.txt 。下载成功后,执行命令 ls ,列出当前目录下所有的文件,可以看到文件lab_local.txt 已经保存在当前目录下。请注意替换 <oss bucket 名称> 和 <oss object路径> 为 实验资源 提供的信息。

python object_download.py <oss bucket 名称> <oss object路径>/lab_object.txt lab_local.txt

  1. 执行命令 cat lab_local.txt 和 cat lab.txt ,分别查看原文件与下载后的文件,对比两个文件中的内容,可以发现两个文件中的内容一致,证明 object 下载并成功保存到本地。
    

4 调用OSS API删除Object

  1.    在真实的生产环境中,由于 OSS 主要用于存储对象文件等。因此,为了避免大量的垃圾文件存在,建议用户对垃圾资源进行清理,这样不仅可以节约资源也可以节约用户在存储服务中的开销。本小节中,用户将体验如何通过调用OSS API,清理垃圾 Object 资源。
    
  2.    返回ECS服务器访问终端界面,然后,执行 vim object_delete.py ,修改脚本文件 object_delete.py 。此脚本通过调用 OSS API ,删除 OSS Bucket 中的 object。在代码的 #调用OSS API batch_delete_objects(),批量删除objects 下方。添加如下的代码,完成修改后,保存脚本。
    

result = bucket.batch_delete_objects([__object_name])

执行命令 python object_delete.py <Bucket 名称> <Object路径>/lab_object.txt 。删除 bucket 中的指定路径的 object 。
  1.    此时,浏览器返回OSS管理控制台的 Object管理 页面,并点击右上角的 刷新 ,将会看到本次实验提供的 OSS 环境中,没有任何 Object 数据。
    

删除后

  1.     至此,完成本实验的全部操作,下一章中将对 OSS 的基础操作进行补充说明。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值