国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解通過API管理或定制開發ECS實例

2020-01-04 14:25:54
字體:
來源:轉載
供稿:網友

彈性管理 ECS 實例

獲取 RAM 子賬號 AK 密鑰

使用API管理ECS實例,您需要能訪問ECS資源的API密鑰(AccessKey ID 和 AccessKey Secret)。為了保證云服務的安全,您需要創建一個能訪問ECS資源的RAM用戶,獲取該用戶的AccessKey密鑰,并使用這個RAM用戶和API管理ECS實例。

以下是獲取RAM用戶AccessKey密鑰的操作步驟:

創建RAM用戶并獲取AccessKey密鑰。

直接給RAM用戶授權,授予RAM用戶 管理云服務器服務(ECS)的權限。

安裝 ECS Python SDK

首先確保您已經具備Python的Runtime,本文中使用的Python版本為2.7+。

pip install aliyun-python-sdk-ecs

如果提示您沒有權限,請切換sudo繼續執行。

sudo pip install aliyun-python-sdk-ecs

本文使用的SDK版本為 2.1.2。

Hello Alibaba Cloud

創建文件 hello_ecs_api.py。為了使用SDK,首先實例化AcsClient對象,這里需要RAM用戶的AccessKey ID和AccessKey Secret。

AccessKey ID和AccessKey Secret是RAM用戶訪問阿里云ECS服務API的密鑰,具有該賬戶完全的權限,請妥善保管。

from aliyunsdkcore import clientfrom aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequestfrom aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequestclt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')

完成實例化后可以進行第一個應用的開發。查詢當前賬號支持的地域列表。具體的文檔參見 查詢可用地域列表。

def hello_aliyun_regions():  request = DescribeRegionsRequest()  response = _send_request(request)  region_list = response.get('Regions').get('Region')  assert response is not None  assert region_list is not None  result = map(_print_region_id, region_list)  logging.info("region list: %s", result)def _print_region_id(item):  region_id = item.get("RegionId")  return region_iddef _send_request(request):  request.set_accept_format('json')  try:    response_str = clt.do_action(request)    logging.info(response_str)    response_detail = json.loads(response_str)    return response_detail  except Exception as e:    logging.error(e)hello_aliyun_regions()

在命令行運行 python hello_ecs_api.py 會得到當前支持的 Region列表。類似的輸出如下:

[u'cn-shenzhen', u'ap-southeast-1', u'cn-qingdao', u'cn-beijing', u'cn-shanghai', u'us-east-1', u'cn-hongkong', u'me-east-1', u'ap-southeast-2', u'cn-hangzhou', u'eu-central-1', u'ap-northeast-1', u'us-west-1']

查詢當前的 Region 下的 ECS 實例列表

查詢實例列表和查詢 Region 列表非常類似,替換入參對象為DescribeInstancesRequest 即可,更多的查詢參數參考 查詢實例列表。

def list_instances():  request = DescribeInstancesRequest()  response = _send_request(request)  if response is not None:    instance_list = response.get('Instances').get('Instance')    result = map(_print_instance_id, instance_list)    logging.info("current region include instance %s", result)def _print_instance_id(item):  instance_id = item.get('InstanceId');  return instance_id

輸出結果為如下:

current region include instance [u'i-****', u'i-****'']

更多的API參考 ECS API 概覽,您可以嘗試作一個 查詢磁盤列表,將實例的參數替換為 DescribeDisksRequest。

完整代碼示例

以上操作完整的代碼示例如下所示。

# coding=utf-8# if the python sdk is not install using 'sudo pip install aliyun-python-sdk-ecs'# if the python sdk is install using 'sudo pip install --upgrade aliyun-python-sdk-ecs'# make sure the sdk version is 2.1.2, you can use command 'pip show aliyun-python-sdk-ecs' to checkimport jsonimport loggingfrom aliyunsdkcore import clientfrom aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequestfrom aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest# configuration the log output formatter, if you want to save the output to file,# append ",filename='ecs_invoke.log'" after datefmt.logging.basicConfig(level=logging.INFO,          format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',          datefmt='%a, %d %b %Y %H:%M:%S')clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')# sample api to list aliyun open api.def hello_aliyun_regions():  request = DescribeRegionsRequest()  response = _send_request(request)  if response is not None:    region_list = response.get('Regions').get('Region')    assert response is not None    assert region_list is not None    result = map(_print_region_id, region_list)    logging.info("region list: %s", result)# output the instance owned in current region.def list_instances():  request = DescribeInstancesRequest()  response = _send_request(request)  if response is not None:    instance_list = response.get('Instances').get('Instance')    result = map(_print_instance_id, instance_list)    logging.info("current region include instance %s", result)def _print_instance_id(item):  instance_id = item.get('InstanceId');  return instance_iddef _print_region_id(item):  region_id = item.get("RegionId")  return region_id# send open api requestdef _send_request(request):  request.set_accept_format('json')  try:    response_str = clt.do_action(request)    logging.info(response_str)    response_detail = json.loads(response_str)    return response_detail  except Exception as e:    logging.error(e)if __name__ == '__main__':  logging.info("Hello Aliyun OpenApi!")  hello_aliyun_regions()  list_instances()
 


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平度市| 搜索| 叶城县| 瑞昌市| 岫岩| 潞城市| 丰顺县| 周至县| 贵定县| 大姚县| 鲁山县| 隆回县| 奉节县| 灌云县| 青铜峡市| 嘉禾县| 张掖市| 介休市| 梓潼县| 汉沽区| 炉霍县| 盐城市| 贵定县| 策勒县| 延津县| 井研县| 平邑县| 丰台区| 潮州市| 忻城县| 大荔县| 韩城市| 大兴区| 武陟县| 永新县| 密山市| 铜山县| 扶沟县| 漠河县| 麻城市| 莎车县|