安装sdk依赖包
pip install aliyun-python-sdk-core
阿里云通用接口函数
apiyun_api.py
#-*- coding=utf-8 -*-
#-*- encoding:utf-8 -*-
import sys
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
def get_product_info(product = ""):
if product == "ecs":
return {'product_url': "ecs.aliyuncs.com",
'product_version': "2014-05-26"}
elif product == "vpc":
return {'product_url': "vpc.aliyuncs.com",
'product_version': "2016-04-28"}
elif product == "rds":
return {'product_url': "rds.aliyuncs.com",
'product_version': "2014-08-15"}
elif product == "slb":
return {'product_url': "slb.aliyuncs.com",
'product_version': "2014-05-15"}
elif product == "redis":
return {'product_url': "r-kvstore.aliyuncs.com",
'product_version': "2015-01-01"}
elif product == "mongodb":
return {'product_url': "mongodb.aliyuncs.com",
'product_version': "2015-12-01"}
elif product == "dns":
return {'product_url': "alidns.aliyuncs.com",
'product_version': "2015-01-09"}
elif product == "domain":
return {'product_url': "domain.aliyuncs.com",
'product_version': "2018-01-29"}
elif product == "business":
return {'product_url': "business.aliyuncs.com",
'product_version': "2017-12-14"}
elif product == "metrics":
return {'product_url': "metrics.aliyuncs.com",
'product_version': "2019-01-01"}
else:
return False
def request_aliyun_api(
accesskeyid = "",
accesskeysecret = "",
action_name = "",
product = "",
query_params = {}):
product_info = get_product_info(product)
if product_info:
client = AcsClient(accesskeyid, accesskeysecret)
request = CommonRequest()
request.set_accept_format('json')
request.set_method('POST')
request.set_domain(product_info['product_url'])
request.set_version(product_info['product_version'])
for k, v in query_params.items():
request.add_query_param(k, v)
request.set_action_name(action_name)
api_count(product, action_name)
response = json.loads(
client.do_action_with_exception(request),
encoding = "utf-8"
)
return response
else:
return False
获取ecs配置信息
get_aliyun_ecs_info.py
#-*- coding=utf-8 -*-
#-*- encoding:utf-8 -*-
import sys
import traceback
from aliyun_api import *
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
def get_aliyun_regions(accesskeyid, accesskeysecret):
reginos = {}
rs = request_aliyun_api(
accesskeyid,
accesskeysecret,
action_name = "DescribeRegions",
product = "ecs",
query_params = {
"PageNumber": "1",
"PageSize": "50"
}
)
for region in rs['Regions']['Region']:
reginos[region['RegionId']] = region['LocalName']
return regions
def get_aliyun_ecs_hosts(accesskeyid, accesskeysecret):
regions = get_aliyun_regions(accesskeyid, accesskeysecret)
for region in regions.keys():
page_count = 99
real_page_count = 1
for count in range(1, page_count):
rs = request_aliyun_api(
accesskeyid,
accesskeysecret,
action_name = "DescribeInstances",
product = "ecs",
query_params = {
'RegionId': region,
'PageSize': '50',
'PageNumber': count
}
)
if count == 1:
if rs['TotalCount'] == 0:
break
else:
real_page_count = rs['TotalCount'] / 50 + 1
for host in rs['Instances']['Instance']:
# 可以自定义处理
print(region, host)
if count == real_page_count:
break
if __name__ == "__main__":
try:
# 下面两个参数需要修改
accesskeyid = "{yourid}"
accesskeysecret = "{yourkey}"
get_aliyun_ecs_hosts(accesskeyid, accesskeysecret)
except Exception as e:
traceback.print_exc()
参考文档:https://help.aliyun.com/document_detail/25484.html?spm=a2c4g.11174283.6.1209.1bf852feCQRpdd
网友评论