Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwalten oder entwickeln Sie ECS-Instanzen über die API individuell

So verwalten oder entwickeln Sie ECS-Instanzen über die API individuell

坏嘻嘻
坏嘻嘻nach vorne
2018-09-30 13:56:222197Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Verwaltung oder Anpassung der Entwicklung von ECS-Instanzen. Er hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.

ECS-Instanzen flexibel verwalten

RAM-Unterkonto-AK-Schlüssel erhalten

Verwenden Sie die API, um ECS-Instanzen zu verwalten, die Sie benötigen um auf API-Schlüssel (AccessKey ID und AccessKey Secret) für den Zugriff auf ECS-Ressourcen zugreifen zu können. Um die Sicherheit von Cloud-Diensten zu gewährleisten, müssen Sie einen RAM-Benutzer erstellen, der auf ECS-Ressourcen zugreifen, den AccessKey des Benutzers erhalten und diesen RAM-Benutzer und diese API zum Verwalten von ECS-Instanzen verwenden kann.

Im Folgenden sind die Schritte aufgeführt, um den RAM-Benutzer-AccessKey zu erhalten:

Erstellen Sie einen RAM-Benutzer und erhalten Sie den AccessKey.

Autorisieren Sie RAM-Benutzer direkt und erteilen Sie RAM-Benutzern die Berechtigung, Cloud-Server-Dienste (ECS) zu verwalten.

Installieren Sie das ECS Python SDK

Stellen Sie zunächst sicher, dass Sie bereits über Pythons Runtime verfügen. Die in diesem Artikel verwendete Python-Version ist 2.7+.

pip install aliyun-python-sdk-ecs

Wenn Sie die Meldung erhalten, dass Sie keine Berechtigung haben, wechseln Sie bitte zu sudo, um mit der Ausführung fortzufahren.

sudo pip install aliyun-python-sdk-ecs

Die in diesem Artikel verwendete SDK-Version ist 2.1.2.

Hallo Alibaba Cloud

Erstellen Sie die Datei hello_ecs_api.py. Um das SDK zu verwenden, instanziieren Sie zunächst das AcsClient-Objekt, das die AccessKey-ID und das AccessKey-Geheimnis des RAM-Benutzers erfordert.

AccessKey ID und AccessKey Secret sind die Schlüssel für RAM-Benutzer für den Zugriff auf die Alibaba Cloud ECS-Dienst-API. Sie verfügen über vollständige Berechtigungen für das Konto, also bewahren Sie sie bitte sicher auf.

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

Nach Abschluss der Instanziierung können Sie die erste Anwendung entwickeln. Fragen Sie die Liste der vom aktuellen Konto unterstützten Regionen ab. Eine spezifische Dokumentation finden Sie unter Abfragen der Liste verfügbarer Regionen.

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

Führen Sie python hello_ecs_api.py in der Befehlszeile aus, um die aktuell unterstützte Regionsliste abzurufen. Eine ähnliche Ausgabe lautet wie folgt:

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

Fragen Sie die ECS-Instanzliste unter der aktuellen Region ab

Das Abfragen der Instanzliste ist dem Abfragen sehr ähnlich Regionsliste. Ersetzen Das Eingabeparameterobjekt ist DescribeInstancesRequest. Weitere Abfrageparameter finden Sie in der Abfrageinstanzliste.

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

Das Ausgabeergebnis lautet wie folgt:

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

Für eine weitere API-Referenz-ECS-API-Übersicht können Sie versuchen, die Festplattenliste abzufragen und die Instanzparameter durch DescribeDisksRequest zu ersetzen.

Vollständiges Codebeispiel

Das vollständige Codebeispiel für die obige Operation lautet wie folgt.

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

Das obige ist der detaillierte Inhalt vonSo verwalten oder entwickeln Sie ECS-Instanzen über die API individuell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:aliyun.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen