Elastic Compute Service (ECS) SDK V2.0 for Python を使用すると、Python から直接 ECS の API オペレーションを呼び出すことができます。このガイドでは、SDK のインストール方法と、DescribeInstances オペレーションを呼び出して ECS インスタンスを一覧表示する方法について説明します。
前提条件
開始する前に、以下をご確認ください。
AliyunECSReadonlyAccessシステムポリシーを持つ RAM ユーザー (または、必要な権限を持つカスタムポリシー。詳細は「認可情報」をご参照ください)RAM ユーザー用の AccessKey ペア。作成方法については、「AccessKey を作成する」をご参照ください。
AccessKey ID と AccessKey Secret 環境変数として設定されたもの (
ALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET)
Alibaba Cloud ルートアカウントの AccessKey を使用すると、すべてのリソースへのフルアクセスが可能になり、重大なセキュリティリスクが生じます。常に、必要な権限のみを持つ RAM ユーザーを使用してください。
SDK のインストール
次のコマンドを実行して、ECS SDK V2.0 for Python をインストールします。
pip install alibabacloud_ecs20140526これにより、ECS 固有のパッケージがインストールされます。その他のインストールオプションについては、「SDK Center」をご参照ください。
DescribeInstances オペレーションの呼び出し
以下の手順では、DescribeInstances を例として使用します。同じパターンが、すべての ECS API オペレーションに適用されます。
ステップ 1:クライアントの初期化
認証情報とエンドポイントを Config オブジェクトに渡して、クライアントを作成します。SDK は、機密性の高い値をコードにハードコーディングすることを避けるため、環境変数から認証情報を読み取ります。
import os
from alibabacloud_tea_openapi.models import Config
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
def create_client() -> Ecs20140526Client:
config = Config(
# 環境変数から認証情報を読み取ります。ハードコーディングは絶対にしないでください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint='ecs.cn-hangzhou.aliyuncs.com'
)
return Ecs20140526Client(config)SDK は、Security Token Service (STS) トークンなど、他の認証情報タイプもサポートしています。詳細については、「アクセス認証情報の管理」をご参照ください。
ステップ 2:リクエストオブジェクトの作成
リクエストオブジェクトは、{OperationName}Request の命名パターンに従います。 DescribeInstances の場合、DescribeInstancesRequest を使用します。利用可能なすべてのパラメーターについては、「DescribeInstances」をご参照ください。
from alibabacloud_ecs20140526 import models as ecs_20140526_models
describe_instances_request = ecs_20140526_models.DescribeInstancesRequest(
region_id='cn-hangzhou'
)ステップ 3:オペレーションの呼び出し
リクエストオブジェクトと RuntimeOptions オブジェクトをクライアントメソッドに渡します。レスポンスオブジェクトは、{OperationName}Response という命名パターンに従います。
from alibabacloud_tea_util import models as util_models
runtime = util_models.RuntimeOptions()
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)タイムアウト、リトライ、プロキシ設定を構成する方法については、「高度な設定」をご参照ください。
ステップ 4:例外処理
SDK は 2 種類の例外を発生させます。
| 例外 | 原因 | 利用可能なフィールド |
|---|---|---|
UnretryableException | ネットワークエラー (最大リトライ回数後に発生) | message |
TeaException | API エラーまたはビジネスエラー | code、message、data |
例外をキャッチしてエラーを記録し、正常に終了させます。
from Tea.exceptions import UnretryableException, TeaException
try:
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)
except UnretryableException as e:
# ネットワークエラー。ログに記録して処理します。サイレントに無視しないでください。
print(e)
except TeaException as e:
# API エラー。詳細については、e.code、e.message、e.data を確認してください。
print(e)
except Exception as e:
# 予期しないエラー。ログに記録して処理します。サイレントに無視しないでください。
print(e)完全なサンプル
以下は、すべてのステップを組み合わせた、実行可能な完全なサンプルです。
import os
from Tea.exceptions import UnretryableException, TeaException
from alibabacloud_tea_openapi.models import Config
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_tea_util import models as util_models
from alibabacloud_ecs20140526 import models as ecs_20140526_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> Ecs20140526Client:
config = Config(
# 環境変数から認証情報を読み取ります。ハードコーディングは絶対にしないでください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint='ecs.cn-hangzhou.aliyuncs.com'
)
return Ecs20140526Client(config)
@staticmethod
def main():
client = Sample.create_client()
describe_instances_request = ecs_20140526_models.DescribeInstancesRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
describe_instances_response = client.describe_instances_with_options(
describe_instances_request, runtime
)
print(describe_instances_response.body)
except UnretryableException as e:
# ネットワークエラー。本番環境では注意して処理してください。無視しないでください。
print(e)
except TeaException as e:
# API エラー。本番環境では注意して処理してください。無視しないでください。
print(e)
except Exception as e:
# 予期しないエラー。本番環境では注意して処理してください。無視しないでください。
print(e)
if __name__ == '__main__':
Sample.main()次のステップ
ECS SDK V2.0 for Python を使用して、厳密に型指定されたリクエストオブジェクトなしで ECS API オペレーションへのジェネリックコールを行います。
ECS SDK V1.0 for Python を使用している場合は、「V1.0 Python SDK」をご参照ください。