如何通过 API 管理或定制开发 ECS 实例


本文摘自PHP中文网,作者坏嘻嘻,侵删。

本篇文章给大家带来的内容是关于如何通过 API 管理或定制开发 ECS 实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

弹性管理 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+。

1

pip install aliyun-python-sdk-ecs

如果提示您没有权限,请切换sudo继续执行。

1

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的密钥,具有该账户完全的权限,请妥善保管。

1

2

3

4

from aliyunsdkcore import client

from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest

from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')

完成实例化后可以进行第一个应用的开发。查询当前账号支持的地域列表。具体的文档参见 查询可用地域列表。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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_id

def _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列表。类似的输出如下:

1

2

3

[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 即可,更多的查询参数参考 查询实例列表。

1

2

3

4

5

6

7

8

9

10

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

输出结果为如下:

1

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

更多的API参考 ECS API 概览,您可以尝试作一个 查询磁盘列表,将实例的参数替换为 DescribeDisksRequest。

完整代码示例

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

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

#  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 check

import json

import logging

from aliyunsdkcore import client

from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest

from 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_id

def _print_region_id(item):

    region_id = item.get("RegionId")

    return region_id

# send open api request

def _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()

以上就是如何通过 API 管理或定制开发 ECS 实例的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Linux中root用户密码错误

Linux中如何修改ip地址

Linux ..是什么目录

Linux中如何解压rar文件

Linux如何查看内存

Linux本地提权漏洞介绍

Linux如何使用rpm安装命令

Linux下文件乱码怎么办?

怎么设置windows实例带宽和cpu跑满或跑高排查

Linux系统怎么开启root权限

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...