すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ECS Python V2.0 SDK の呼び出し例

最終更新日:Apr 01, 2026

Elastic Compute Service (ECS) SDK V2.0 for Python を使用すると、Python から直接 ECS の API オペレーションを呼び出すことができます。このガイドでは、SDK のインストール方法と、DescribeInstances オペレーションを呼び出して ECS インスタンスを一覧表示する方法について説明します。

前提条件

開始する前に、以下をご確認ください。

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
TeaExceptionAPI エラーまたはビジネスエラーcodemessagedata

例外をキャッチしてエラーを記録し、正常に終了させます。

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」をご参照ください。