ホームページ >運用・保守 >Linuxの運用と保守 >API 経由で ECS インスタンスを管理またはカスタム開発する方法
この記事の内容は、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 サイトの他の関連記事を参照してください。