詳細には、API管理またはカスタマイズによるECS開発の例を説明する。
弾性管理ECS例
RAMサブアカウントAK鍵を取得する
API管理ECSの例を使用すると、ECSリソースにアクセスできるAPI鍵(Access Key IDとAccess Key Secret)が必要です。クラウドサービスの安全を保証するためには、ECSリソースにアクセスできるRAMユーザを作成し、ユーザのAccess Key鍵を取得し、このRAMユーザとAPIを用いてECSインスタンスを管理する必要があります。
RAMユーザのAccess Key鍵を取得するための操作手順は以下の通りです。
RAMユーザを作成してAccess Key鍵を取得します。
RAMユーザに直接授権し、クラウドサーバサービス(ECS)をRAMユーザに管理する権限を与える。
ECS Python SDKのインストール
まず、PythonのRuntimeを持っていることを確認します。ここで使用しているPythonのバージョンは2.7+です。
ハローAlibababa Cloud
ファイルを作成します。ハローecs_appi.py。SDKを使用するためには、まずAcsClientオブジェクトを具体化するために、RAMユーザのAccess Key IDとAccess Key Secretが必要である。
Access Key IDとAccess Key Secretは、RAMユーザが阿里クラウドECSサービスAPIにアクセスする鍵です。このアカウントの完全な権限を持っています。大切に保管してください。
クエリーのインスタンスリストとクエリのRegionリストは非常に似ています。参加対象をDescribeInstance Requestに置き換えてもいいです。より多くのクエリパラメータはクエリのインスタンスリストを参照してください。
完全コード例
以上の動作の完全なコード例を以下に示します。
RAMサブアカウントAK鍵を取得する
API管理ECSの例を使用すると、ECSリソースにアクセスできるAPI鍵(Access Key IDとAccess Key Secret)が必要です。クラウドサービスの安全を保証するためには、ECSリソースにアクセスできるRAMユーザを作成し、ユーザのAccess Key鍵を取得し、このRAMユーザとAPIを用いてECSインスタンスを管理する必要があります。
RAMユーザのAccess Key鍵を取得するための操作手順は以下の通りです。
RAMユーザを作成してAccess Key鍵を取得します。
RAMユーザに直接授権し、クラウドサーバサービス(ECS)をRAMユーザに管理する権限を与える。
ECS Python SDKのインストール
まず、PythonのRuntimeを持っていることを確認します。ここで使用しているPythonのバージョンは2.7+です。
pip install aliyun-python-sdk-ecs
ヒントがない場合は、sudoを切り替えて実行してください。
sudo pip install aliyun-python-sdk-ecs
本明細書で使用するSDKバージョンは2.1.2である。ハローAlibababa Cloud
ファイルを作成します。ハローecs_appi.py。SDKを使用するためには、まずAcsClientオブジェクトを具体化するために、RAMユーザのAccess Key IDとAccess Key Secretが必要である。
Access Key IDとAccess Key Secretは、RAMユーザが阿里クラウド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_appi.pyは現在サポートされているRegionリストを取得します。同様の出力は以下の通りです。
[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リストは非常に似ています。参加対象をDescribeInstance Requestに置き換えてもいいです。より多くのクエリパラメータはクエリのインスタンスリストを参照してください。
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の概観を参照して、実例のパラメータをDescribeDisRequestに置き換えるためのクエリーディスクのリストを作成してみてもいいです。完全コード例
以上の動作の完全なコード例を以下に示します。
# 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()