实战背景
本篇博客要完成一个真实的需求在阿里云或者其它云服务器(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 os
text = 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
命令行模式速度快,可以作为参考使用。
评论