ホームページ >運用・保守 >Linuxの運用と保守 >API 経由で ECS インスタンスを管理またはカスタム開発する方法

API 経由で ECS インスタンスを管理またはカスタム開発する方法

坏嘻嘻
坏嘻嘻転載
2018-09-30 13:56:222280ブラウズ

この記事の内容は、API を使用して ECS インスタンスの開発を管理またはカスタマイズする方法についてです。必要な方は参考にしていただければ幸いです。

ECS インスタンスを柔軟に管理する

RAM サブアカウント AK キーを取得する

API を使用して ECS インスタンスを管理するには、ECS リソースにアクセスするための API キー (AccessKey ID と AccessKey Secret) を使用できる必要があります。クラウド サービスのセキュリティを確保するには、ECS リソースにアクセスできる RAM ユーザーを作成し、ユーザーの AccessKey を取得し、この RAM ユーザーと API を使用して ECS インスタンスを管理する必要があります。

RAM ユーザーの AccessKey を取得する手順は次のとおりです。

RAM ユーザーを作成し、AccessKey を取得します。

RAM ユーザーを直接承認し、クラウド サーバー サービス (ECS) を管理する権限を RAM ユーザーに付与します。

ECS Python SDK のインストール

まず、Python のランタイムがあることを確認してください。この記事で使用されている 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 ユーザーが Alibaba Cloud ECS サービス API にアクセスするためのキーです。これらのユーザーはアカウントに対する完全な権限を持っているため、適切に保管してください。

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

インスタンス化が完了したら、最初のアプリケーションを開発できます。現在のアカウントでサポートされている地域のリストをクエリします。特定のドキュメントについては、「利用可能なリージョンのリストをクエリする」を参照してください。

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 を実行して、現在サポートされているリージョンのリストを取得します。同様の出力は次のとおりです。

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

現在のリージョンの ECS インスタンス リストをクエリします

インスタンス リストのクエリは、リージョン リスト。入力パラメータ オブジェクトは 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 に置き換えることができます。

完全なコード例

上記の操作の完全なコード例は次のとおりです。

rree

以上がAPI 経由で ECS インスタンスを管理またはカスタム開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はaliyun.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。