实战背景
本篇博客要完成一个真实的需求在阿里云或者其它云服务器(ECS)中拉取 OSS 数据,走内网不消耗流量提前准备内容
阿里云 ECS 服务器一台
配置好的 OSS
ECS 的经典网络访问(内网),Endpoint(地域节点)
这里有一个需要注意的是,Endpoint(地域节点)要和云服务器(ECS)地域保持一致,例如都是华北 2(北京)。
第一种方案
通过 Python 调用控制台,使用 ossutil 完成该内容。在开始前,先提前安装好 ossutil 工具,安装和基本使用参考本篇博客即可。
以下几个命令再次学习一下
./ossutil64 config # 对AK值进行配置cat /root/.ossutilconfig # 查看配置./ossutil64 ls # 列举Buckets或者Objects
复制代码
提前在 OSS 上传一个数据文件,任何格式都可以(尽量大一些)然后除了 AK 配置外,还需要配置一下使用内网访问。
对于下述配置,回车将跳过相关配置项的设置,配置项的具体含义,请使用"help config"命令查看。请输入endpoint:请输入accessKeyID:请输入accessKeySecret:请输入stsToken:
复制代码
先完成一个拷贝命令
/root/ossutil64 cp oss://examplebucket/destfolder/examplefile.txt localfolder/example.txt
复制代码
然后将其编写到 Python 脚本中,使用 os.syetem() 方法运行。
import ostext = os.system('/root/ossutil64 cp oss://examplebucket/examplefile.mp4 /home/videos/examplefile.mp4')print("*"*100)print(text)
复制代码
执行结果返回 0,表示成功。
第二种方案
使用 python 调用 oss2 模块完成下载文件操作,代码如下:
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。auth = oss2.Auth('AccessKey ID', 'AccessKey Secret')# Endpoint以杭州为例,其它Region请按实际情况填写。# 填写Bucket名称,例如examplebucket。bucket = oss2.Bucket(auth, 'http://oss-cn-beijing-internal.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,完整路径中不包含Bucket名称,例如testfolder/exampleobject.txt。# 下载Object到本地文件,并保存到指定的本地路径D:\\localpath\\examplefile.txt。如果指定的本地文件存在会覆盖,不存在则新建。bucket.get_object_to_file('examplefile.mp4', '/home/videos/examplefile_pull.mp4')
复制代码
该方式速度不如直接使用 ossutil 命令行模式速度快,可以作为参考使用。
评论