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

Elastic Compute Service:自動プロビジョニンググループ関連の API 操作を使用して、複数の ECS インスタンスを一括作成する

最終更新日:Jun 18, 2025

多数の従量課金制 Elastic Compute Service (ECS) インスタンスを作成する場合、API 操作を呼び出して、より効率的にインスタンスを一括作成できます。このトピックでは、Java コードをコンパイルして CreateAutoProvisioningGroup 操作を呼び出すことにより、従量課金制の ECS インスタンスを一括作成する方法について説明します。また、RunInstances 操作と CreateAutoProvisioningGroup 操作の機能、長所、短所の違いについても説明します。

背景情報

RunInstances 操作は、従量課金制の ECS インスタンスの作成によく使用されます。この操作を呼び出すことで、最大 100 個の ECS インスタンスを一括作成できます。ただし、100 個を超える ECS インスタンスを一括作成する場合、RunInstances 操作を呼び出すと、技術的なボトルネックが発生する可能性があります。詳細については、このトピックの「RunInstances 操作を使用した場合に発生する可能性のある問題」セクションをご参照ください。

説明

RunInstances 操作の呼び出しによって発生する技術的なボトルネックを理解している場合は、前のセクションをスキップしてください。

100 個を超える ECS インスタンスを一括作成できるようにするために、Alibaba Cloud は自動プロビジョニンググループを提供しています。CreateAutoProvisioningGroup 操作を呼び出して自動プロビジョニンググループを作成し、そのグループを使用して、数回のクリックで課金方式、インスタンスファミリ、ゾーンをまたいでインスタンス クラスタをデプロイできます。多数の ECS インスタンスを一括作成する場合、CreateAutoProvisioningGroup 操作は、RunInstances 操作よりも適しています。2 つの操作の違いと利点については、このトピックの「RunInstances と CreateAutoProvisioningGroup の違い」セクションと「自動プロビジョニンググループの利点」セクションをご参照ください。

RunInstances と CreateAutoProvisioningGroup の違い

次の表は、ECS インスタンスを作成するための適切な操作を選択するのに役立つ、RunInstances 操作と CreateAutoProvisioningGroup 操作の機能の違いを示しています。

項目

RunInstances

CreateAutoProvisioningGroup

一括作成できるインスタンスの最大数

100

1,000 (最大 10,000 vCPU)

キャパシティ提供方法

インスタンスの特定の数

インスタンスの特定の数、vCPU の特定の数、および異なる重みのインスタンスタイプ。

複数ゾーンのサポート

いいえ。

はい。

複数インスタンスタイプのサポート

いいえ。

はい。

複数ディスクカテゴリのサポート

いいえ。

はい。

インスタンスの作成に使用できるポリシーのプロビジョニング

いいえ。

はい。次のポリシーが提供されています。

  • 従量課金制インスタンスの場合

    • コスト最適化ポリシー: 自動プロビジョニンググループは、候補インスタンスタイプから最も低コストのインスタンスタイプを選択してインスタンスを作成します。

    • 優先順位ベースのポリシー: 自動プロビジョニンググループは、候補インスタンスタイプに設定された優先順位に基づいてインスタンスの作成を試みます。

  • スポットインスタンスの場合

    • コスト最適化ポリシー: 自動プロビジョニンググループは、候補インスタンスタイプから最も低コストのインスタンスタイプを選択してインスタンスを作成します。

    • バランス分散ポリシー: 自動プロビジョニンググループは、指定されたゾーンにインスタンスを均等に分散します。

    • キャパシティ最適化分散ポリシー: 自動プロビジョニンググループは、リソースの可用性に基づいて、インスタンスを作成するためのインスタンスタイプとゾーンの最適な組み合わせを選択します。

配信の安定性

リソースの可用性の影響を受けます。

インスタンスタイプとゾーンの複数の組み合わせにより、リソースの可用性の影響が軽減されます。

応答方法

リアルタイムで応答を返します。

リアルタイムで応答を返します。

次のサンプル シナリオでは、RunInstances 操作の代わりに CreateAutoProvisioningGroup 操作を使用して ECS インスタンスを作成する方法について説明します。

  • 単一のゾーンで単一のインスタンスタイプのインスタンスを一括作成するために、RunInstances 操作を呼び出しました。代わりに CreateAutoProvisioningGroup 操作を呼び出してインスタンスを一括作成する場合、インスタンスタイプとゾーンの組み合わせを設定するだけで済みます。

  • インスタンスを一括作成するために RunInstances 操作を呼び出すときに、ビジネス デプロイメント プランを設定しました。代わりに、CreateAutoProvisioningGroup 操作を呼び出して、自動プロビジョニングによって提供されるさまざまなインスタンス プロビジョニング ポリシーに基づいて、複数のカテゴリのディスクが接続されたインスタンスを複数のインスタンスタイプとゾーンにデプロイできます。

    たとえば、インスタンスの作成成功率を向上させるために、RunInstances 操作を呼び出すときに、複数のインスタンスタイプとゾーンを走査するビジネス デプロイメント プランを手動で設定しました。代わりに CreateAutoProvisioningGroup 操作を呼び出して多数のインスタンスを一括作成する場合、インスタンスタイプとゾーンの複数の組み合わせを設定し、適切なポリシーを選択するだけで済みます。作成された自動プロビジョニンググループは、指定された設定とポリシーに基づいてインスタンスを自動的に一括作成します。

重要

インスタンスを作成するために自動プロビジョニンググループに使用されるポリシーには制限が適用されます。同時に最大 1,000 個のインスタンスを作成できます。WeightedCapacity パラメーターを使用して、指定された各インスタンスタイプの重みを指定する場合、毎回作成される最大加重キャパシティは 10,000 です。

RunInstances 操作を使用した場合に発生する可能性のある問題

RunInstances 操作の制限により、インスタンスを作成するために操作を呼び出すときに、次の問題が発生する可能性があります。

問題

説明

解決策

一括作成できるインスタンスの数が限られています。

RunInstances 操作を呼び出すことで、最大 100 個の ECS インスタンスを一括作成できます。

100 個を超える ECS インスタンスを作成する場合、この操作を循環的または同時的に複数回呼び出す必要があります。

インスタンスの一括作成の成功率は保証されません。

インスタンスを一括作成するために RunInstances 操作を呼び出すたびに、操作は単一のインスタンスタイプと単一のゾーンのみをサポートします。操作を呼び出してインスタンスを一括作成すると、次の問題が発生する可能性があります。

  • 特定のインスタンスタイプのリソースが不足しているため、インスタンスを作成できません。

  • インスタンスタイプが廃止されたため、特定のインスタンスタイプのインスタンスを作成できなくなりました。

  • 特定のゾーンで特定のインスタンスタイプが使用できないため、インスタンスを作成できません。

  • 特定のインスタンスタイプが特定のディスクカテゴリをサポートしていないため、インスタンスを作成できません。

  • インスタンスの一括作成が失敗する主な原因は、リソースの不足です。この問題を解決するには、DescribeAvailableResource 操作を呼び出して、ゾーンで使用可能なインスタンスタイプを事前にクエリすることをお勧めします。インスタンスタイプとゾーンの複数の組み合わせを設定して、ECS インスタンスを一括作成するための十分なリソースを確保できます。このインスタンス作成方法は、ビジネス配信の安定性の向上に役立ちます。

    インスタンスタイプとゾーンの複数の組み合わせを設定した後、適切なポリシーを作成してインスタンスを一括作成します。たとえば、設定した複数の組み合わせに基づいて、100 個の ECS インスタンスを順番に作成できます。使用可能なリソースを使用して組み合わせで最大 50 個のインスタンスを作成できる場合、別の組み合わせを使用してさらに 50 個のインスタンスを作成できます。

  • インスタンスタイプの制限に注意してください。DescribeAvailableResource 操作を呼び出して、インスタンスタイプの制限をクエリできます。次に、使用制限の変更による影響を防ぐために、制限固有のフォールトトレランス ソリューションを開発できます。

    説明

    各インスタンスファミリのインスタンスタイプの制限を表示できます。詳細については、「インスタンスファミリの概要」をご参照ください。

    サンプル シナリオ: ecs.g6e.large インスタンスタイプは拡張 SSD (ESSD) のディスクカテゴリのみをサポートしていますが、北京ゾーン X (cn-beijing-x) は ESSD をサポートしていません。

インスタンスの作成に使用される単純なポリシーは、多様なビジネス要件を満たすことができません。

RunInstances 操作は、単一のゾーンで単一のインスタンスタイプのインスタンスを作成するためにのみ使用できます。地理的災害復旧を実装するためにゾーンをまたいでインスタンスをデプロイしたり、最小限のコストで ECS インスタンスを作成したりする場合、インスタンスがデプロイされるようにビジネス デプロイメント プランを作成する必要があります。ビジネス デプロイメント プランを作成すると、次の問題が発生する可能性があります。

  • 高い開発コスト: 設定したビジネス デプロイメント プランを使用すると、いくつかの問題を解決する必要がある場合があります。たとえば、リソースが不足しているときに ECS インスタンスの作成に失敗したり、サーバーをスケールアップするときにスポットインスタンスの最低コストでコンピューティング能力を確保できなかったりする場合があります。

  • 低い安定性と低い専門性: Alibaba Cloud によって提供されるリソース用に作成するビジネス デプロイメント プランはテストできず、専門的に作成される可能性は低くなります。これにより、本番環境にリスクが生じます。

問題を解決するには、Alibaba Cloud にお問い合わせください。

自動プロビジョニンググループの利点

Alibaba Cloud は、RunInstances 操作を呼び出して ECS インスタンスを一括作成するときに発生する可能性のある問題に対処するために、自動プロビジョニンググループを提供しています。自動プロビジョニンググループを使用すると、数回のクリックで課金方式、インスタンスファミリ、ゾーンをまたいでインスタンス クラスタをデプロイできます。自動プロビジョニンググループは安定したコンピューティング能力を提供し、スポットインスタンスの回収メカニズムによる不安定性を軽減し、インスタンスを手動で作成する必要性をなくします。次の表は、自動プロビジョニンググループの利点を示しています。

利点

説明

多数の ECS インスタンスの一括作成

自動プロビジョニンググループを使用して、最大 1,000 個の ECS インスタンスを一括作成できます。

インスタンスタイプとゾーンをまたいで複数のカテゴリのディスクが接続されたインスタンスの作成

自動プロビジョニンググループを使用すると、インスタンスタイプとゾーンの最大 10 個の組み合わせを設定し、最大 5 つのディスクカテゴリを選択できるため、インスタンスの一括作成の可用性が高くなります。

サンプル シナリオ:

自動プロビジョニンググループによって提供されるバランス分散ポリシーに基づいて ECS インスタンスを作成する場合、複数のインスタンスタイプとゾーンを設定できます。ポリシーで要求されているように、インスタンスはゾーン全体で比較的バランスの取れた方法で作成する必要があります。ただし、必要な数のインスタンスをゾーンに作成できない場合、自動プロビジョニンググループは他のゾーンに同じ数のインスタンスを作成しようとします。

複数のディスクカテゴリを指定すると、自動プロビジョニンググループはディスクカテゴリの優先順位に基づいてインスタンスのディスクを作成し、ディスクカテゴリが使用できない場合はディスクカテゴリを変更します。

説明

すべてのディスクカテゴリが使用できない場合、自動プロビジョニンググループは別の作成方法を選択します。

インスタンスを作成するための複数ポリシーのサポート

自動プロビジョニンググループは、インスタンスを作成するための次のポリシーを提供します。

  • 従量課金制インスタンスの場合

    • コスト最適化ポリシー: 自動プロビジョニンググループは、候補インスタンスタイプから最も低コストのインスタンスタイプを選択してインスタンスを作成します。

    • 優先順位ベースのポリシー: 自動プロビジョニンググループは、候補インスタンスタイプに設定された優先順位に基づいてインスタンスの作成を試みます。

  • スポットインスタンスの場合

    • コスト最適化ポリシー: 自動プロビジョニンググループは、候補インスタンスタイプから最も低コストのインスタンスタイプを選択してインスタンスを作成します。

    • バランス分散ポリシー: 自動プロビジョニンググループは、指定されたゾーンにインスタンスを均等に分散します。

    • キャパシティ最適化分散ポリシー: 自動プロビジョニンググループは、リソースの可用性に基づいて、インスタンスを作成するためのインスタンスタイプとゾーンの最適な組み合わせを選択します。

スポットインスタンスの可用性の向上

スポットインスタンスの価格は変動し、保護期間の経過後に入札価格が現在の市場価格よりも低くなるとインスタンスが回収されるため、スポットインスタンスの需要は価格の優位性のために増加しています。したがって、スポットインスタンスは管理が困難です。自動プロビジョニンググループは、低コストのままスポットインスタンスの可用性を向上させるのに役立ちます。次の項目では、スポットインスタンスの可用性を向上させる方法について説明します。

  • デフォルトのコスト最適化ポリシーを使用できます。デフォルトのポリシーを使用する場合、自動プロビジョニンググループは、グループがスケールアウトされるたびに、インスタンスタイプの価格の昇順でインスタンスの作成を試みます。

  • スポットインスタンスの場合、インスタンスタイプに対応するリソースは、ゾーンに対応するリソースとは異なります。スポットインスタンスのインスタンスタイプとゾーンの複数の組み合わせを設定して、すべての組み合わせで使用可能なリソースがない確率を減らすことができます。

  • 自動プロビジョニンググループを作成するときに、複数のディスクカテゴリを設定できます。これにより、システムは適切なディスクカテゴリを選択してインスタンスを作成できます。

  • SpotInstancePoolsToUseCount パラメーターを設定して、インスタンスタイプとゾーンの最も低コストの組み合わせを使用してスポットインスタンスが作成されるようにすることができます。これは、インスタンスタイプのインスタンスがリサイクルされたときにコンピューティング能力が大幅に低下するという問題を防ぐのに役立ちます。

CreateAutoProvisioningGroup 操作を呼び出して自動プロビジョニンググループを作成するためのベスト プラクティス

このセクションでは、自動プロビジョニンググループ (CreateAutoProvisioningGroup) を作成するために使用される Java コードのサンプルを提供します。また、CreateAutoProvisioningGroup 操作を呼び出す方法についても説明します。

  1. ECS SDK for Java と Alibaba Cloud SDK コア ライブラリをインストールします。

    詳細については、「SDK の概要」をご参照ください。

  2. CreateAutoProvisioningGroup 操作を呼び出すために使用される Java コードをコンパイルします。

    サンプルコード:

    CreateAutoProvisioningGroupRequest request = new CreateAutoProvisioningGroupRequest();
    request.setRegionId(regionId);
    request.setLaunchConfigurationImageId(RequestHelper.IMAGE_ID);
    request.setLaunchConfigurationSecurityGroupId(securityGroupId);
    
    request.setTotalTargetCapacity(totalTargetCapacity);
    request.setPayAsYouGoTargetCapacity(payAsYouGoTargetCapacity);
    request.setSpotTargetCapacity(spotTargetCapacity);
    request.setLaunchConfigurationSystemDiskCategory("cloud_ssd");
    request.setLaunchConfigurationSystemDiskSize(40);
    request.setAutoProvisioningGroupType("instant");
    // スポットインスタンスを作成するために使用されるポリシーを設定します。
    request.setSpotAllocationStrategy("lowest-price");
    request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount);
    // 従量課金制インスタンスを作成するために使用されるポリシーを設定します。
    request.setPayAsYouGoAllocationStrategy("prioritized");
    request.setMaxSpotPrice(maxSpotPrice);
    // インスタンスタイプとゾーンの最大 10 個の組み合わせを設定します。
    request.setLaunchTemplateConfigs(launchTemplateConfigs);
    request.setClientToken(clientToken);
    CreateAutoProvisioningGroupResponse response = client.getAcsResponse(request);

    JSON 形式のサンプル応答:

    {
        "autoProvisioningGroupId":"apg-****",
        "launchResults":[
            {
                "instanceIds":[
                    "i-****"
                ],
                "instanceType":"ecs.c5.large",
                "spotStrategy":"NoSpot",
                "zoneId":"cn-shanghai-b"
            },
           {
                "instanceIds":[],
                "instanceType":"ecs.c5.large",
                "spotStrategy":"NoSpot",
                "zoneId":"cn-shanghai-b",
                "errorCode" : "Invalid.Parameter",
                "errorMsg" : "Specific Parameter 'imageId' is not valid"
            }
        ],
        "requestId":"20DA1E9F-BF7F-4BE7-8204-E4DE58E4FC7B"
    }

    自動プロビジョニンググループを作成するために CreateAutoProvisioningGroup 操作を呼び出すときは、インスタンスを一括作成するために使用される項目を設定します。作成プロセスについて心配する必要はありません。自動プロビジョニンググループは、ベストエフォート方式でインスタンスを作成します。

    説明

    ベストエフォート方式では、システムは 1 つの組み合わせを使用してインスタンスを一括作成しようとします。組み合わせを使用して十分な数のインスタンスを作成できない場合、システムはインスタンスタイプとゾーンの別の組み合わせを使用してインスタンスを一括作成します。ベストエフォート インスタンス作成方法には長い時間がかかり、作成結果は設定した作成ポリシーから逸脱する可能性があります。