新闻中心

浏览量:0
2021-03-14 00:23
华为云计算
大数据
RedHat
修改系统密码
Cisco
修复文件系统
修改密码
VMware
修改系统密码
Cisco
大数据
修复文件系统
华为云计算
修改密码
RedHat
VMware

热门关键词

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享

[Aliyun-ACP] 使用云存储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. 了解Linux的基本命令操作;

2. 了解Python语言的基本使用方法;

 

1.1 背景知识

        阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种结构化或非结构化数据文件。以下的术语为OSS相关的基本概念:

·       Bucket,是一个用户用来管理所存储Object的存储空间。 每个用户可以拥有多个Bucket。Bucket的名称在OSS的范围内必须是全局唯一的,一旦创建之后无法修改名称。Bucket内部的Object数目是没有限制的。

·       Object,是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。根据不同的上传方式,Object的大小限制是不一样的。Object由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。Object由一个在Bucket内部唯一的Key来标示。Object操作在OSS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。OSS保证用户一旦上传完成之后读到的Object是完整的,OSS不会返回给用户一个只上传成功了部分的Object。分片上传最大支持48.8TB的Object,其他的上传方式最大支持5GB。

·       Region,表示OSS的数据中心所在的区域,物理位置。 一旦指定之后就不允许更改,该Bucket下所有的Object都存储在对应的数据中心。

·       Endpoint,表示OSS对外服务的访问域名。OSS以HTTP REST API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。

        用户可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过阿里云Web控制台对数据进行简单的管理。目前阿里云OSS支持如下几种语言版本的SDK调用API:Python SDK,Java SDK,Android SDK,iOS SDK,JavaScript SDK,.NET SDK,PHP SDK,Ruby SDK,C SDK,Go SDK,Media-C SDK。本实验中主要介绍如何使用Python SDK调用OSS API实现文件的简单上传,下载和删除等操作。

        OSS作为对象存储提供商,常用的使用场景如下:

·       适用于图片、音视频、日志等海量文件的存储,支持各种终端设备,Web网站程序和移动应用直接向OSS写入或读取数据,支持 流式写入 和 文件写入 两种方式。

img1

·       开发者不仅可以直接使用OSS,利用BGP带宽,实现超低延时的数据直接下载;OSS也可以配合阿里云CDN加速服务,为图片、音视频、移动应用更新分发,提供最佳体验等场景。

img2

·       上传文件到OSS后,可以配合媒体转码服务(MTS),图片处理服务(IMG)进行云端的数据处理。

img3

 

 

img4

 

2.3 查看OSS环境

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

img5

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

img6img7

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

子用户打开OSS

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

找到bucket

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

找到文件夹内无内容

 

 

2.4 调用OSS API上传小文件

1.     OSS 上传方式分为两类:简单上传和分块上传;其中,简单上传由于不支持断点续传,适合用于上传小文件;而分块上传支持断点续传,适合上传比较大的文件,一般超过100MB 的文件都推荐使用分块上传。 本小节中,使用OSS Python SDK 调用 OSS API,将用户本地的小文件上传到本次实验分配的 Object路径 中。 

 

2.    首先,远程登录到 OSS Python环境 的ECS服务器,请使用本实验提供的ECS服务器的 外网地址 用户名 和 密码 

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

img11

 

3.      登录到 ECS 服务器后,在使用 OSS API 进行文件上传和下载之前,用户需配置阿里云账号的 AccessKeyIDAccessKeySecret 和 Endpoint 信息(均可从 实验资源 获取),以便于通过 OSS 的权限验证。在 ECS 命令行中,使用命令 cd aliyun-lab   进入 aliyun-lab 目录。 然后,使用命令 vim configure.json ,configure.json 文件用于提供调用 OSS API 时所需的公共参数。

img12

       按 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

img13

 

4.     完成 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)

img14

 

5.        执行如下命令,运行脚本程序。将本地文件 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 路径,可能会导致未知错误。

img15

 

6.     输入命令 cat lab.txt ,查看上传到OSS指定路径的文件内容:Hello first object! 

img16

 

7.     返回 OSS 管理控制台,并进入 实验资源 分配的 Bucket 和该 Bucket 的 Object 路径下,点击右上角的 刷新 ,刷新 Object 管理页面。此时,在 Object 径下,查看到通过Python SDK上传的文件 lab_object.txt 

上传成功后新增一个文件

 

 

2.5 调用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)

img18

3.    执行如下命令,将 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

img19

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

2.6 调用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])

img20

    执行命令 python object_delete.py <Bucket 名称> <Object路径>/lab_object.txt 。删除 bucket 中的指定路径的 object 。

img21

3.        此时,浏览器返回OSS管理控制台的 Object管理 页面,并点击右上角的 刷新 ,将会看到本次实验提供的 OSS 环境中,没有任何 Object 数据。

删除后

4.         至此,完成本实验的全部操作,下一章中将对 OSS 的基础操作进行补充说明。

img23

3.2 创建OSS Bucket

1.     在真实的生产工作环境中,用户在上传或者管理 OSS 中的存储文件之前,首先需要在 OSS 中创建一个 Bucket,也就是 OSS 的存储空间。

说明:实验仅提供创建的 Python 脚本文件,但不提供实验环境。

2.     在 ECS 服务器访问终端界面中,执行命令: cd aliyun-lab/  ,进入 aliyun-lab/ 目录下。输入命令:vim bucket_create.py ,修改脚本文件 bucket_create.py 。修改创建 bucket 的 python 脚本。用户可以使用此脚本调用OSS 创建Bucket的 API。在代码的 #调用OSS API的create_bucket()创建bucket 下方。添加如下的代码,完成修改后,保存并退出。

result = bucket.create_bucket()

注意:确保插入的代码,与上下文中非注释的代码缩进一致。否则运行脚本时会报错。

img24

 

        执行命令:python bucket_create.py lab ,其中 lab 为用户自定义的 bucket 名称,运行脚本程序,创建一个新的bucket lab-xxxx 

注意:创建的新bucket名称为:<用户输入的自定义bucket名称>-< Access Key ID信息>。这是由于 OSS bucket 全局唯一,避免bucket名称已存在而导致创建错误,此脚本会自动将 Access KeyID 信息,作为 bucket 名称的后缀。输入 bucket 名称时,必须符合如下的 Bucket 命名规则,否则,无法成功创建 bucket。

img25

3.        访问OSS控制台,可以在页面中看到新建的 bucket。同时,在右侧的页面中显示当前 bucket 里面还没有保存任何数据。

api-创建成功

4.     用户不仅可以通过如上的执行脚本的方式创建 Bucket ,也可以通过管理控制台新建 Bucket 。在阿里云 OSS 管理控制台,点击 Bucket 栏右侧的 新建 ,弹出 Bucket 创建对话框。

2-2-新建bucket

        在弹出的对话框中,输入如下参数信息,完成后,点击 提交 

BucketName:aliyunlab003

 

地域:华东2

 

读写权限:私有

2-3-新建bucket信息

注意:请遵循 Bucket 的命名规则,且 Bucket 名称全局唯一。

 

 

3.3 使用OSS管理控制台上传文件

1.     用户不仅可以通过 OSS API 上传本地文件到 OSS 服务指定 Bucket,也可以通过管理控制台上传本地文件到 OSS 指定 Bucket 的目录下。3.     在 OSS 管理控制台的概览页面中,点击与 实验资源 分配的 Bucket名称 相同的 Bucket。例如:实验资源分配的 OSS Bucket名称 为 lab-oss-900hd2 ,则点击 Bucket 栏下的 lab-oss-900hd2 ,找到右侧页面的 文件管理 ,在文件管理页面找到实验文件夹 SL003

2.     首先,访问OSS管理控制台。点击页面顶部导航栏的 产品与服务,然后,在下拉菜单中,依次选择 云计算基础服务 ---> 存储与CDN  ---> 对象存储OSS ,进入OSS管理页面。

img29

 

3.     在 OSS 管理控制台的概览页面中,点击与 实验资源 分配的 Bucket名称 相同的 Bucket。例如:实验资源分配的 OSS Bucket名称 为 lab-oss-900hd2 ,则点击 Bucket 栏下的 lab-oss-900hd2 ,找到右侧页面的 文件管理 ,在文件管理页面找到实验文件夹 SL003

3-2-sl003

        在 SL003 的文件夹中,点击云中沙箱分配的 二级Object路径 ,也就是,若用户分配的 Object路径 为 SL003/u-xxx ,则点击 u-xxx ,进入 SL003/u-xxx Object 路径中。

3-3-sl003:u-b

        在 Object 管理的列表中,用户可以在第一行中,查看到当前 Object 路径。此时,实验资源 分配的 Object 路径下,没有任何数据。点击 上传文件 ,弹出上传文件的对话框,选择上传文件的本地路径。

3-4-u无内容

3-5-上传文件

     点击图片右侧红框内的 直接上传 ,进入本地上传文件路径,然后,选中文件,并点击 打开 。将本地文件上传到 OSS 管理控制台。

说明:点击本节左上角的附件部分,就可以下载本节中使用的图片 黑猫.jpg 。

img34

 

4.     上传成功后,可以在 文件管理 页面看到该图片。

注意:在网络不稳定或者上传文件较大的情况下,建议学员使用 OSS 断点续传的方式,具体实现方式,请参考自助实验  SL006 使用OSS处理大文件之断点续传 。

3-8-上传成功显示

 

3.4 使用OSS管理控制台查看Object文件

1.     完成上传后,用户可以在 OSS 管理控制台查看上传的图片信息。点击黑猫.jpg ,页面右侧弹出预览页面,用户可以查看到上传的图片信息。 若希望其他用户在某个时间段,可以查看图片信息。点击 黑猫.jpg 右侧的 复制url , 默认链接的有效时间为3600秒,用户可以自定义有效时间。

3-9-复制url

2.   在浏览器中,打开一个空白页面,并将 Object地址 粘贴到地址栏,就可以查看到上传的图片。

3-10-打开url

3.5 使用OSS管理控制台删除Object文件

1.     用户不仅可以通过调用 OSS API 删除文件,也可以通过 OSS 管理控制台删除 OSS Bucket 中存储的文件。

 

2.    返回OSS管理控制台,在 Object管理 页面,点击 黑猫.jpg 右侧的 删除 ,弹出删除提示对话框。

3-11-删除图片

         在弹出的提示对话框中,点击 确定,则删除 黑猫.jpg 文件。

3-12-确认删除

3.     此时,Object路径下,没有 黑猫.jpg 文件。

3-13-删除后

 

 

3.6 删除OSS Bucket

1.     由于一个阿里云账号最多仅能创建 30  Bucket,因此,在真实的生产环境中,若某个 Bucket 不再使用,强烈建议用户删除此 Bucket。但是,在删除此 Bucket 前,请务必清空 Bucket 中的所有 Object 以及 碎片。若 Bucket 不为空,则无法删除 Bucket。本小节将介绍如何通过调用 OSS API 删除一个空的 OSS Bucket。

说明:实验仅提供删除的Python脚本文件,但不提供实验环境。

 

2.     在 ECS 服务器访问终端界面中,执行命令:cd aliyun-lab/ ,进入aliyun-lab/目录下,输入命令:vim bucket_delete.py ,修改脚本文件 bucket_delete.py 。修改删除bucket的 python 脚本。用户可以使用此脚本调用 OSS 删除 Bucket的 API。在代码的 #调用delete_bucket()删除bucket 下方。添加如下的代码,完成修改后,保存脚本。

bucket.delete_bucket()

img41

 

3.     执行命令 python bucket_delete.py <Bucket 名称> ,例如,某空 Bucket 名为 lab-xxxx 。运行结束,提示成功删除 bucket 。

img42

 

4.      访问阿里云 OSS 管理控制台,并在 概览 页面中,没有上一小节中创建的 Bucket,证明 Bucket 已删除。

api-删除成功

 

5.     用户不仅可以通过调用 API 删除 Bucket,也可以在阿里云 OSS 管理控制台直接删除 Bucket。在 Bucket 列表中,点击删除的 Bucket 右上角的 垃圾桶 图标,弹出删除对话框。

控制台删除bucket

        在弹出删除提示对话框中,点击 确定 ,删除 Bucket。

控制台确认删除

 

 

问:在第 2 章第 3 小节 调用OSS API上传小文件 中,执行 python bucket_create.py lab 报错。

    答:请检查 configure.json 文件,其中的 id , secret 参数值必须实验资源 提供的 AK ID 和 AK Secret ;参数 endpoint 使用的 地域 必须与 实验资源 提供的 地域 相同。若如上配置信息正确,仍旧报错。请发送报错的截图给云中沙箱客服(架构云:培训),届时,会有沙箱的工作人员为您解答问题。

 

首页    阿里云    [Aliyun-ACP] 使用云存储OSS的API上传和下载文件