/
c3mc-cloud-qcloud-cos
executable file
·80 lines (63 loc) · 2.31 KB
/
c3mc-cloud-qcloud-cos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env /data/Software/mydan/python3/bin/python3
# -*- coding: utf-8 -*-
import sys
import json
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
sys.path.append("/data/Software/mydan/Connector/lib/pp")
from c3mc_utils import sleep_time_for_limiting
from c3mc_cloud_qcloud_cos import QcloudCos
# 查询cos标签的接口请求频率限制
max_times_list_cos_tags = 5
class Cos:
def __init__(self, access_id, access_key, region):
self.access_id = access_id
self.access_key = access_key
self.region = region
self.client = self.create_client()
self.lib_client = QcloudCos(access_id, access_key, region)
def create_client(self):
service_domain = f"cos.{self.region}.myqcloud.com"
config = CosConfig(
Region=self.region,
SecretId=self.access_id,
SecretKey=self.access_key,
Token=None,
Scheme="https",
ServiceDomain=service_domain,
)
return CosS3Client(config)
def sleep(self):
sleep_time_for_limiting(max_times_list_cos_tags)
def list_buckets(self):
try:
response = self.client.list_buckets()
except Exception as e:
if "Failed to establish a new connection" in str(e):
return []
else:
raise e
result = []
if response["Buckets"] is None:
return []
for bucket in response["Buckets"]["Bucket"]:
if "Type" in bucket and bucket["Type"] == "tcb":
# 忽略tcb类型的数据, tcb看着也不是存储桶
# 并且这种数据在后续处理中可能会出错
continue
self.sleep()
bucket["tags"] = self.lib_client.list_tag(bucket["Name"], bucket["Location"])
result.append(bucket)
return result
def show(self):
buckets = self.list_buckets()
for bucket in buckets:
print(json.dumps(bucket))
def main(access_id, access_key, region):
try:
Cos(access_id, access_key, region).show()
except Exception as e:
print(f"同步腾讯云cos资源出错. access_id: {access_id}, region: {region}", file=sys.stderr)
raise e
if __name__ == "__main__":
main(sys.argv[1], sys.argv[2], sys.argv[3])