提交 0e682e6c 作者: martin

华为OBS云后台脚本

上级 3f045103
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/3/7 10:23
# @Author : Martin
"""
功能描述:
测试通过脚本访问华为obs
安装环境包
pip install esdk-obs-python -i https://mirrors.aliyun.com/pypi/simple/
"""
from obs import ObsClient
import os
from flask import Flask, jsonify, request
import argparse
app = Flask(__name__)
ak = os.getenv("VEHN7D0TJ9316H8AHCAV")
sk = os.getenv("heR353lvSWVPNU8pe2QxDtd8GDsO5L6PGH5eUoQY")
# 可选
security_token = os.getenv("SecurityToken")
# 端点
server = "https://obs.cn-north-1.myhuaweicloud.com"
# 创建obsClient实例
obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server)
@app.route('/audit', methods=['GET'])
def get_file_list():
bk_name = request.args.get('bk_name', default='zzsn-doc', type=str)
pref = request.args.get('pref', default='audit/', type=str)
res = []
try:
bucket_name = bk_name
# 指定列举对象的前缀
prefix = pref
# 指定单次列举对象个数为100
max_keys = 100
# 列举桶内对象
resp = obsClient.listObjects(bucket_name, prefix, max_keys=max_keys, encoding_type='url')
# 返回码为2xx时,接口调用成功,否则接口调用失败
if resp.status < 300:
index = 1
for content in resp.body.contents:
res.append(
{'id': index, "key": content.key, "lastModified": content.lastModified, "size": content.size,
"outer": "https://file.ciglobal.cn/obs",
"inner": "https://zzsn-doc.obs.cn-north-1.myhuaweicloud.com"})
index += 1
else:
res.clear()
res.append({'errorMessage:': resp.errorMessage})
except Exception as e:
print(e)
res.clear()
res.append({'errorMessage:': "List obj error"})
return jsonify(res)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--ip', '-i', default='0.0.0.0', help='服务监听IP')
parser.add_argument('--port', '-p', type=int, default=8887, help='服务监听端口号')
args = parser.parse_args()
app.run(host=args.ip, port=args.port)
# app.run(host='0.0.0.0', port=8877)
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论