Maison  >  Article  >  Opération et maintenance  >  Comment gérer ou développer des instances ECS via l'API

Comment gérer ou développer des instances ECS via l'API

坏嘻嘻
坏嘻嘻avant
2018-09-30 13:56:222242parcourir

Le contenu de cet article explique comment gérer ou personnaliser le développement d'instances ECS via l'API. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Gérer de manière flexible les instances ECS

Obtenir la clé AK du sous-compte RAM

Utiliser l'API pour gérer les instances ECS, dont vous avez besoin pouvoir disposer de clés API (AccessKey ID et AccessKey Secret) pour accéder aux ressources ECS. Pour garantir la sécurité des services cloud, vous devez créer un utilisateur RAM pouvant accéder aux ressources ECS, obtenir la clé d'accès de l'utilisateur et utiliser cet utilisateur RAM et cette API pour gérer les instances ECS.

Voici les étapes pour obtenir la clé d'accès de l'utilisateur RAM :

Créez un utilisateur RAM et obtenez la clé d'accès.

Autorisez directement les utilisateurs de RAM et accordez aux utilisateurs de RAM l'autorisation de gérer les services de serveur cloud (ECS).

Installez le SDK Python ECS

Assurez-vous d'abord que vous disposez déjà du runtime de Python. La version de Python utilisée dans cet article est 2.7+.

pip install aliyun-python-sdk-ecs

Si vous êtes invité à indiquer que vous n'avez pas l'autorisation, veuillez passer à sudo pour continuer l'exécution.

sudo pip install aliyun-python-sdk-ecs

La version du SDK utilisée dans cet article est la 2.1.2.

Bonjour Alibaba Cloud

Créez le fichier hello_ecs_api.py. Pour utiliser le SDK, instanciez d'abord l'objet AcsClient, qui nécessite l'ID AccessKey et le secret AccessKey de l'utilisateur RAM.

AccessKey ID et AccessKey Secret sont les clés permettant aux utilisateurs de RAM d'accéder à l'API du service Alibaba Cloud ECS. Ils disposent d'autorisations complètes pour le compte, veuillez donc les protéger.

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')

Une fois l'instanciation terminée, la première application peut être développée. Recherchez la liste des régions prises en charge par le compte actuel. Pour obtenir une documentation spécifique, consultez Interroger la liste des régions disponibles.

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

Exécutez python hello_ecs_api.py sur la ligne de commande pour obtenir la liste des régions actuellement prises en charge. Un résultat similaire est le suivant :

[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']

Interrogation de la liste d'instances ECS dans la région actuelle

L'interrogation de la liste d'instances est très similaire à En interrogeant la liste des régions, remplacez simplement l'objet de paramètre d'entrée par DescribeInstancesRequest. Pour plus de paramètres de requête, veuillez vous référer à la liste des instances de requête.

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

Le résultat de sortie est le suivant :

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

Pour plus de références sur l'API Présentation de l'API ECS, vous pouvez essayer d'interroger la liste des disques et de remplacer les paramètres d'instance par DescribeDisksRequest.

Exemple de code complet

L'exemple de code complet pour l'opération ci-dessus est le suivant.

#  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()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer