写点什么

Python 从 ECS 内网拉取 OSS 数据

作者:梦想橡皮擦
  • 2022 年 3 月 09 日
  • 本文字数:977 字

    阅读完需:约 3 分钟

实战背景

本篇博客要完成一个真实的需求在阿里云或者其它云服务器(ECS)中拉取 OSS 数据,走内网不消耗流量提前准备内容


  1. 阿里云 ECS 服务器一台

  2. 配置好的 OSS

  3. 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 命令行模式速度快,可以作为参考使用。


发布于: 刚刚阅读数: 2
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
Python从ECS内网拉取OSS数据_3月月更_梦想橡皮擦_InfoQ写作平台