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

Elastic Compute Service:自動プロビジョニンググループ API 操作を使用して ECS インスタンスをバッチ作成する

最終更新日:Nov 09, 2025

多数の従量課金 Elastic Compute Service (ECS) インスタンスを効率的に作成するには、CreateAutoProvisioningGroup API 操作を呼び出します。このトピックでは、Java コードを使用してこの API 操作を呼び出し、インスタンスをバッチ作成する方法について説明します。このトピックでは、RunInstances API 操作と CreateAutoProvisioningGroup API 操作の特徴、利点、欠点も比較します。

背景情報

従量課金 ECS インスタンスを必要とするシナリオでは、RunInstances API 操作が最も頻繁に使用されます。RunInstances 操作を 1 回呼び出すと、最大 100 個の ECS インスタンスを作成できます。ただし、本番環境で RunInstances を使用して一度に 100 個を超えるインスタンスを作成すると、技術的なボトルネックが発生する可能性があります。詳細については、「RunInstances を使用したインスタンス作成時の問題」をご参照ください。

説明

RunInstances 操作を使用してインスタンスをバッチ作成する際の技術的なボトルネックに精通している場合は、「RunInstances を使用したインスタンス作成時の問題」セクションをスキップできます。

多数の ECS インスタンスを作成する需要を満たすために、Alibaba Cloud は自動プロビジョニンググループを提供しています。CreateAutoProvisioningGroup API 操作を呼び出して、自動プロビジョニンググループを作成できます。これにより、単一の操作で、複数の課金方法、ゾーン、インスタンスタイプにまたがるインスタンスクラスターをデプロイできます。RunInstances と比較して、CreateAutoProvisioningGroup は多数の ECS インスタンスを作成する必要があるシナリオにより適しています。特徴の比較と利点の分析については、「RunInstances と CreateAutoProvisioningGroup の比較」および「自動プロビジョニンググループの利点」をご参照ください。

RunInstances と CreateAutoProvisioningGroup の比較

このセクションでは、RunInstances API 操作と CreateAutoProvisioningGroup API 操作のいくつかの特徴を比較します。この比較は、それらの違いをすばやく理解し、インスタンスを作成するための適切なメソッドを選択するのに役立ちます。

項目

RunInstances

CreateAutoProvisioningGroup

バッチ作成あたりの最大インスタンス数

100

1,000 (最大 10,000 vCPU)

キャパシティ提供方法

インスタンス数

インスタンス数、vCPU コア数、インスタンスタイプの重みなど。

マルチゾーンサポート

いいえ

はい

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

いいえ

はい

複数ディスクタイプサポート

いいえ

はい

インスタンス作成ポリシー

いいえ

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

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

    • コスト最適化ポリシー: 指定されたインスタンスタイプの中で最もコストの低いインスタンスタイプのインスタンスを作成します。

    • 優先度ベースのポリシー: 指定されたインスタンスタイプの優先度に基づいてインスタンスを作成しようとします。

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

    • コスト最適化ポリシー: 指定されたインスタンスタイプの中で最もコストの低いインスタンスタイプのインスタンスを作成します。

    • 分散配置ポリシー: 指定されたゾーンにインスタンスを均等に作成します。

    • キャパシティ最適化分散ポリシー: スポットインスタンスの在庫に基づいて、最適なインスタンスタイプとゾーンからインスタンスを作成します。

配信の安定性

リソース在庫の影響を強く受けます。

複数のゾーンとインスタンスタイプを持つ構成は、リソース在庫の影響を効果的に軽減します。

API 応答フォーマット

作成結果を同期的に返します。

作成結果を同期的に返します。

以下は、インスタンスを作成するために RunInstances 操作から CreateAutoProvisioningGroup 操作に切り替える場合のサンプルシナリオです。

  • 以前に RunInstances を使用して単一ゾーンで単一インスタンスタイプのインスタンスをバッチ作成していた場合、CreateAutoProvisioningGroup に切り替えることができます。切り替え後は、インスタンスタイプとゾーンの組み合わせを構成するだけで、インスタンスをバッチ作成できます。

  • 以前に RunInstances を使用する際に手動のデプロイメントプランを構成していた場合、CreateAutoProvisioningGroup に切り替えることができます。この操作は、複数のゾーン、インスタンスタイプ、ディスク構成にまたがるワンクリックのデプロイメント機能を提供します。また、選択可能なさまざまなインスタンス作成ポリシーも提供します。

    たとえば、以前はインスタンス作成の成功率を向上させるために RunInstances を呼び出す際に、複数のインスタンスタイプとゾーンを走査するプランを作成していたかもしれません。CreateAutoProvisioningGroup に切り替えた後は、インスタンスタイプとゾーンの複数の組み合わせを構成し、適切な作成ポリシーを選択するだけで済みます。その後、自動プロビジョニンググループがインスタンスを自動的にバッチ作成します。

重要

自動プロビジョニンググループの作成ポリシーには制限があります。一度に最大 1,000 個のインスタンスを作成できます。インスタンスタイプに重み (WeightedCapacity) を指定する場合、各作成の最大合計重み付きキャパシティは 10,000 です。

RunInstances を使用したインスタンス作成時の問題

RunInstances 操作の制限により、多数のインスタンスを作成する際に、次の表で説明する問題が発生する可能性があります。

問題

説明

解決策

バッチ作成機能の制限

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

100 個を超える ECS インスタンスを作成するには、ビジネス要件を満たすために、この API 操作をループまたは同時に複数回呼び出します。

バッチ作成の安定性不足

RunInstances 操作の呼び出しは、単一のゾーンと単一のインスタンスタイプのみをサポートします。したがって、ECS インスタンスをバッチ作成する際に、在庫不足、販売中止、インスタンスタイプの使用制限などの問題が発生する可能性があります。これにより、次のような状況が発生する可能性があります。

  • 特定の期間中にインスタンスタイプの在庫が不足しているため、バッチ作成が失敗します。

  • 指定されたインスタンスタイプは、特定の期間中に廃止されたため、作成できなくなりました。

  • 指定されたインスタンスタイプは、一部のゾーンでのみ販売されています。

  • 指定されたインスタンスタイプは、特定のディスクタイプでのみ使用できます。

  • 在庫不足は、ECS インスタンスのバッチ作成が失敗する主な理由です。したがって、Alibaba Cloud は、まず DescribeAvailableResource API 操作を呼び出して、特定のインスタンスタイプとゾーンのリソースの在庫をクエリすることを推奨します。在庫が十分にあるゾーンとインスタンスタイプの複数の組み合わせを手動で確認した後、ECS インスタンスをバッチ作成できます。この複雑な作成メソッドは、より高いビジネス配信の安定性を提供します。

    サンプルシナリオ: 在庫が十分にあるゾーンとインスタンスタイプの複数の組み合わせを確認した後、ECS インスタンスを作成するための適切な戦略を構築する必要もあります。たとえば、確認された組み合わせの順序に基づいて、100 個の ECS インスタンスを順番に作成できます。最初の組み合わせのリソース在庫が 50 個の ECS インスタンスの作成しかサポートしない場合、2 番目の組み合わせを使用して残りの 50 個のインスタンスを作成しようとする必要があります。

  • インスタンスタイプには使用制限があります。DescribeAvailableResource を呼び出して制限をクエリし、使用制限の変更による影響を回避するために独自のフォールトトレランスプランを作成できます。

    説明

    また、ドキュメントに記載されているインスタンスタイプの属性に基づいて制限を判断することもできます。詳細については、「インスタンスファミリー」をご参照ください。

    サンプルシナリオ: ecs.g6e.large インスタンスタイプはエンタープライズ SSD (ESSD) ディスクタイプのみをサポートし、cn-beijing-x ゾーンは ESSD ディスクタイプをサポートしません。

作成ポリシーが単純すぎる

RunInstances 操作は、単一のゾーンと単一のインスタンスタイプのみをサポートします。ビジネスでディザスタリカバリのためにマルチゾーンデプロイメントが必要な場合や、最低コストで ECS インスタンスを作成する必要がある場合は、インスタンスのデプロイメントを成功させるために独自のデプロイメントプランを構築する必要があります。自作のデプロイメントプランには、次の問題があります。

  • 開発コストが高い。自作のデプロイメントプランでは、一連の問題を処理する必要があります。たとえば、在庫が不足している場合に ECS インスタンスを正常に作成する方法や、サーバーのスケールアウト中にスポットインスタンスの最低コストを確保しながら計算能力を確保する方法などです。

  • 安定性と専門性が低い。Alibaba Cloud が提供するリソースに対して、専門的なデプロイメントプランを独自に構築することは困難です。また、プランをテストすることもできないため、本番環境にリスクをもたらします。

問題を自分で解決するか、Alibaba Cloud に連絡して支援を求めてください。

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

RunInstances API 操作を使用して ECS インスタンスをバッチ作成する際に発生する問題に対処するために、Alibaba Cloud は自動プロビジョニンググループを提供しています。自動プロビジョニンググループは、複数の課金方法、ゾーン、インスタンスタイプにまたがるインスタンスクラスターのワンクリックデプロイメントをサポートします。自動プロビジョニンググループを使用すると、安定した計算能力を提供し、スポットインスタンスの回収メカニズムによって引き起こされる不安定性を緩和し、インスタンスを繰り返し手動で作成する必要がなくなります。このセクションでは、自動プロビジョニンググループの利点について説明します。

利点

説明

バッチ作成のための ECS インスタンスの最大数の増加

自動プロビジョニンググループは、一度に最大 1,000 個の ECS インスタンスの作成をサポートします。

複数のゾーン、インスタンスタイプ、ディスクタイプのサポート

自動プロビジョニンググループでは、最大 10 個のインスタンスタイプまたはゾーンの組み合わせを構成し、最大 5 個のディスクタイプを選択できます。これにより、ECS インスタンスをバッチ作成する際に高可用性を実現できます。

サンプル シナリオ:

自動プロビジョニンググループが提供する分散配置ポリシーを使用して ECS インスタンスを作成する場合、複数のゾーンとインスタンスタイプを構成できます。このポリシーによれば、作成されるインスタンスの数はゾーン間で比較的均等になるはずです。ただし、いずれかのゾーンで作成が失敗した場合、自動プロビジョニンググループは保留中のインスタンスを他の利用可能なゾーンで作成しようとします。

複数のディスクタイプを指定した場合、自動プロビジョニンググループは指定された順序を各ディスクタイプの優先度として使用します。ディスクタイプが利用できない場合、自動プロビジョニンググループは自動的に次のディスクタイプに切り替えます。

説明

指定されたすべてのディスクタイプが利用できない場合、自動プロビジョニンググループは別の作成メソッドに切り替え、現在のメソッドの使用を試行しなくなります。

複数のインスタンス作成ポリシーのサポート

従量課金インスタンスとスポットインスタンスには、次の作成ポリシーが提供されます。

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

    • コスト最適化ポリシー: 指定されたインスタンスタイプの中で最もコストの低いインスタンスタイプのインスタンスを作成します。

    • 優先度ベースのポリシー: 指定されたインスタンスタイプの優先度に基づいてインスタンスを作成しようとします。

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

    • コスト最適化ポリシー: 指定されたインスタンスタイプの中で最もコストの低いインスタンスタイプのインスタンスを作成します。

    • 分散配置ポリシー: 指定されたゾーンにインスタンスを均等に作成します。

    • キャパシティ最適化分散ポリシー: スポットインスタンスの在庫に基づいて、最適なインスタンスタイプとゾーンからインスタンスを作成します。

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

スポットインスタンスは、その低価格のためにますます使用されています。ただし、価格の不安定性と回収機能により、管理が困難になります。自動プロビジョニンググループを使用すると、コストを低く抑えながらスポットインスタンスの可用性を向上させることができます。これは、次の方法で行うことができます。

  • デフォルトのコスト最適化ポリシーを選択します。これにより、各スケールアウト操作は、インスタンスタイプの価格の昇順でインスタンスを作成しようとします。

  • スポットインスタンスタイプとゾーンのさまざまな組み合わせのリソース在庫は互いに分離されています。複数のインスタンスタイプとゾーンを構成すると、すべての組み合わせで在庫がなくなる確率が低下します。

  • 自動プロビジョニンググループを作成する際に、複数の代替ディスクタイプを構成して、インスタンス作成中に自動プロビジョニンググループが適切なディスクタイプを自動的に選択できるようにすることができます。

  • SpotInstancePoolsToUseCount パラメーターを構成して、スポットインスタンスが最も価格の低い複数のインスタンスプールから作成されるように指定できます。これにより、特定のタイプのインスタンスが回収された場合に計算能力に雪崩効果が発生するのを防ぎます。

CreateAutoProvisioningGroup のベストプラクティス

このセクションでは、CreateAutoProvisioningGroup API 操作の Java コードサンプルを提供し、その使用方法をすばやく理解するのに役立てます。

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

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

  2. CreateAutoProvisioningGroup API 操作を呼び出す Java コードを記述します。

    以下はコードサンプルです。

    import com.aliyun.ecs20140526.Client;
    import com.aliyun.ecs20140526.models.CreateAutoProvisioningGroupRequest;
    import com.aliyun.ecs20140526.models.CreateAutoProvisioningGroupResponse;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.teautil.models.RuntimeOptions;
    import com.google.gson.Gson;
    
    public class Test {
        public static void main(String[] args_) throws Exception {
            Config config = new Config()
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                    .setEndpoint("ecs.cn-heyuan.aliyuncs.com");
            Client client = new Client(config);
    
            CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchTemplateConfig launchTemplateConfig = new CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchTemplateConfig()
                    .setVSwitchId("vsw-f8zadqudz*********")
                    .setInstanceType("ecs.s6-c1m1.small")
                    .setWeightedCapacity(1.0);
    
            CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchConfiguration launchConfiguration = new CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchConfiguration()
                    .setSecurityGroupId("sg-f8zf6vg51*********")
                    .setImageId("aliyun_3_x64_20G_alibase_20250629.vhd")
                    .setSystemDiskCategory("cloud_ssd")
                    .setSystemDiskSize(40);
            CreateAutoProvisioningGroupRequest createAutoProvisioningGroupRequest = new CreateAutoProvisioningGroupRequest()
                    .setAutoProvisioningGroupType("instant")
                    .setRegionId("cn-heyuan")
                    // スポットインスタンスの作成ポリシーを設定します。
                    .setSpotAllocationStrategy("lowest-price")
                    // 従量課金インスタンスの作成ポリシーを設定します。
                    .setPayAsYouGoAllocationStrategy("prioritized")
                    .setTotalTargetCapacity("5")
                    .setPayAsYouGoTargetCapacity("3")
                    .setSpotTargetCapacity("2")
                    .setLaunchConfiguration(launchConfiguration)
                    .setLaunchTemplateConfig(java.util.Arrays.asList(
                            launchTemplateConfig
                    ))
                    .setClientToken("0c593ea1-3bea******************");
            RuntimeOptions runtime = new RuntimeOptions();
            CreateAutoProvisioningGroupResponse response = client.createAutoProvisioningGroupWithOptions(createAutoProvisioningGroupRequest, runtime);
            System.out.println(new Gson().toJson(response.getBody()));
        }
    }

    以下は JSON 応答のサンプルです。

    {
        "autoProvisioningGroupId": "apg-**************",
        "launchResults": {
            "launchResult": [
                {
                    "amount": 0,
                    "errorCode": "NoInstanceStock",
                    "errorMsg": "The instanceTypes are out of usage",
                    "instanceType": "ecs.s6-c1m1.small",
                    "spotStrategy": "NoSpot",
                    "zoneId": "cn-heyuan-b"
                },
                {
                    "amount": 2,
                    "instanceIds": {
                        "instanceId": [
                            "i-f8z8**************icn5",
                            "i-f8z8**************icn6"
                        ]
                    },
                    "instanceType": "ecs.s6-c1m1.small",
                    "spotStrategy": "SpotAsPriceGo",
                    "zoneId": "cn-heyuan-b"
                }
            ]
        },
        "requestId": "CDA21119-7CFD-5B40-A2D0-******8"
    }

    CreateAutoProvisioningGroup を呼び出して自動プロビジョニンググループを作成する場合、バッチインスタンス作成の設定項目を設定するだけでよく、作成プロセスを管理する必要はありません。自動プロビジョニンググループは、ベストエフォートベースでインスタンスを作成します。

    説明

    ベストエフォート配信とは、構成したリソースの組み合わせの一部でインスタンスを作成できない場合、自動プロビジョニンググループが自動的に他の利用可能なリソースの組み合わせに切り替えて作成プロセスを続行することを意味します。この作成メソッドには時間がかかり、実際の結果は指定された作成ポリシーからわずかに偏る可能性があります。