複数のインスタンスタイプと購入オプションを使用する Auto Scaling グループ - Amazon EC2 Auto Scaling (日本語)

複数のインスタンスタイプと購入オプションを使用する Auto Scaling グループ

1 つの Auto Scaling グループ内で、オンデマンドインスタンスとスポットインスタンスのフリートを起動してオートスケールできます。スポットインスタンスの使用で割引を受けるだけでなく、リザーブドインスタンスまたは Savings Plan を使用して、通常のオンデマンドインスタンス コストの割引料金を受け取ることができます。これらすべての要素を組み合わせることで、EC2 インスタンスのコストを最適な方法で削減しながら、アプリケーションに必要なスケールとパフォーマンスを確実に得ることができます。

まず、起動テンプレートで一般的な設定パラメータを指定し、Auto Scaling グループの作成時にそのテンプレートを選択します。Auto Scaling グループを設定すると、以下のことができます。

  • グループの 1 つ以上のインスタンスタイプを選択します (オプションで、起動テンプレートで指定されたインスタンスタイプを上書きします)。

  • 複数の起動テンプレートを定義して、異なる CPU アーキテクチャ(例えば、Arm と x86 など)のインスタンスを同じ Auto Scaling グループで起動することを許可します。

  • 各インスタンスタイプに個別の重みを付けます。これが便利なのは、たとえば、インスタンスタイプ別に異なる vCPU、メモリ、ストレージ、またはネットワーク帯域幅の機能を設定する場合です。

  • Savings Plan またはリザーブドインスタンスの割引料金の利点であるインスタンスタイプの優先順位を設定します。

  • 起動するオンデマンド容量とスポット容量を指定し、オプションのオンデマンドベース部分を指定します。

  • Amazon EC2 Auto Scaling がインスタンスタイプ間でどのようにスポット容量を配分するかを定義します。

  • 容量の再調整を有効にします。容量の再調整を有効にすると、Amazon EC2 スポットサービスがスポットインスタンスの中断リスクが高まっていることを通知したとき、Amazon EC2 Auto Scaling はスポットインスタンスを起動しようとします。新しいインスタンスを起動すると、古いインスタンスを終了します。詳細については、「Amazon EC2 Auto Scaling 容量の再調整」を参照してください。

可用性を高めるには、複数のアベイラビリティーゾーンで実行されている複数のインスタンスタイプ間でアプリケーションをデプロイします。使用できるインスタンスタイプは 1 つだけですが、選択したアベイラビリティーゾーンに十分なインスタンス容量がない場合に Amazon EC2 Auto Scaling が別のインスタンスタイプを起動することを許可する、いくつかのインスタンスタイプを使用するのがベストプラクティスです。スポットインスタンスでは、インスタンス容量が不足している場合、Amazon EC2 Auto Scaling はオンデマンドインスタンスを起動するのではなく、他のスポットインスタンス プール (選択したインスタンスタイプと割り当て戦略によって決まります) を試行し続けるため、スポットインスタンスのコスト削減を活用できます。

配分戦略

以下の配分戦略では、Auto Scaling グループが可能なインスタンスタイプから [オンデマンドとスポット容量] の [] をどのように満たすかを決定しています。

Amazon EC2 Auto Scaling はまず、指定されたアベイラビリティーゾーン間でインスタンスの分散バランスを確認しようとします。次に、指定された配分戦略に従ってインスタンスタイプを起動します。

オンデマンドインスタンス

オンデマンドインスタンスの配分戦略は prioritized です。Amazon EC2 Auto Scaling グループは、起動テンプレートのリスト内でのインスタンスタイプの優先度を使用して、オンデマンド容量を満たすときに最初に使用するインスタンスタイプを決定します。たとえば、3 つの起動テンプレートの優先度を c5.largec4.largec3.large と指定したとします。オンデマンドインスタンスが起動されると、Auto Scaling グループは c5.largec4.largec3.largeの順でオンデマンド容量を満たします。

オンデマンドインスタンスの優先順位を管理する場合は、次の点を考慮してください。

Savings Plans またはリザーブドインスタンスを使用して、オンデマンドインスタンスの大幅な割引を受けるために、使用料を前払いでお支払いいただけます。Savings Plans またはリザーブドインスタンスの詳細については、「Amazon EC2 料金表」ページを参照してください。

  • リザーブドインスタンスでは、Amazon EC2 Auto Scaling が一致するインスタンスタイプを起動すると、通常のオンデマンドインスタンス コストの割引料金が適用されます。つまり、c4.large の未使用のリザーブドインスタンスがある場合、インスタンスタイプの優先順位を設定して、リザーブドインスタンスの最も高い優先順位を c4.large インスタンスタイプに付与できます。c4.large インスタンスが起動すると、リザーブドインスタンスの料金が発生します。

  • Savings Plans では、Amazon EC2 Instance Savings Plans または Compute Savings Plans を使用する場合、通常のオンデマンドインスタンス コストの割引料金が適用されます。Savings Plans には柔軟性があるため、インスタンスタイプの優先順位付けの柔軟性が高まります。Savings Plan でカバーされているインスタンスタイプを使用する限り、任意の順序で優先順位を設定でき、場合によってはその順序を完全に変更することもできます。また、Savings Plan によって提供される割引料金が適用され続けます。Savings Plans の詳細については、[Savings Plans ユーザーガイド] を参照してください。

スポットインスタンス

Amazon EC2 Auto Scaling では、スポットインスタンスに使用できる、以下の配分戦略を提供しています。

capacity-optimized

Amazon EC2 Auto Scaling は、起動するインスタンスの数に最適な容量のスポットインスタンス プールから、インスタンスを割り当てます。この方法でデプロイすると、予備の EC2 容量を最も効率的に活用できます。

スポットインスタンスでは、価格は需要と供給の長期的な傾向に基づいて時間の経過とともに緩やかに変動しますが、容量はリアルタイムで変動します。capacity-optimized戦略では、リアルタイムの容量データを調べ、可用性の最も高いプールを予測することで、そのプールから スポットインスタンス を自動的に起動します。これは、ビッグデータと分析、画像とメディアレンダリング、機械学習などのワークロードに適しています。また、作業の再開とチェックポイント設定に関連する中断に伴うコストが高くなる可能性がある高パフォーマンス コンピューティングにも適しています。中断の可能性を低くすることにより、capacity-optimized 戦略ではワークロードの全体的なコストを削減できます。

または、capacity-optimized-prioritized分配戦略を使用し、起動テンプレートのオーバーライドのリスト内のインスタンスタイプの順序を、優先順位の高いものから順番に (リストの最初から最後まで) 設定することもできます。Amazon EC2 Auto Scaling は、ベストエフォートベースでインスタンスタイプの優先順位を尊重しますが、まずは容量に合わせて最適化します。これは、中断の可能性を最小限に抑える必要があるワークロードに適したオプションですが、適切なインスタンスタイプを設定することも重要です。

lowest-price

Amazon EC2 Auto Scaling は、指定した数 (N 個) の指定されたアベイラビリティーゾーンあたりのプールのうち、最低料金のスポットインスタンス プールからスポットインスタンスを割り当てます。

たとえば、4 つのインスタンスタイプと 4 つのアベイラビリティーゾーンを指定した場合、Auto Scaling グループは、最大 16 個 (各アベイラビリティーゾーンに 4 個) のスポットプールにアクセスできます。配分戦略で 2 つのスポットプール (N = 2) を指定した場合、Auto Scaling グループは、アベイラビリティーゾーンあたり 2 つの最安価なプールを引き出し、スポット容量を満たすことができます。

Amazon EC2 Auto Scalingは、ベストエフォート方式で指定した数のプールからスポットインスタンスを、引き出そうとすることにご注意ください。希望する容量を満たす前にプールにスポット容量の残量がなくなった場合、Amazon EC2 Auto Scaling は次の最も安価なプールの容量を利用してリクエストを満たします。希望する容量を確実に満たすために、スポットインスタンスが、指定した数を超えるプールから割り当てられることがあります。また、ほとんどのプールにスポット容量がない場合には、指定した数より少ないプールから希望する容量のすべてが割り当てられることがあります。

まずは、capacity-optimized 配分戦略を選択し、アプリケーションに適した少数のインスタンスタイプを指定することをお勧めします。さらに、インスタンスの起動時に Amazon EC2 Auto Scaling が選択するアベイラビリティーゾーンの範囲を定義できます。

オプションで、スポットインスタンスの上限価格を指定できます。上限価格を指定しない場合、デフォルトの上限価格はオンデマンド価格ですが、スポットインスタンスによって提供される大幅な割引は引き続き受けられます。これらの割引が可能なのは、新しいスポット料金モデルを使用して適用されるスポット料金が安定しているためです。

スポットインスタンスの配分戦略の詳細については、AWSブログの[Amazon EC2 スポットインスタンスの容量最適化配分戦略の紹介]を参照してください。

オンデマンドインスタンスの割合のコントロール

オンデマンドインスタンスとして起動される Auto Scaling グループのインスタンスの割合を完全にコントロールできます。インスタンス容量を常に確保するために、オンデマンドインスタンスとして起動されるグループのインスタンスの割合を指定できます。また、オプションで、起動されるオンデマンドインスタンスのベース数を指定することもできます。オンデマンドインスタンスのベース容量を指定すること選択した場合、Auto Scaling グループがスケールアウトしたときに、 グループは確実にこのベース容量のオンデマンドインスタンスを最初に起動します。ベース容量を超える場合、オンデマンドインスタンスの割合を使用して、起動するオンデマンドインスタンスとスポットインスタンスの数が決まります。オンデマンドインスタンスの割合には、0 から 100 までの任意の数を指定できます。

Amazon EC2 Auto Scaling は、その割合を同等のインスタンス数に変換します。結果によって小数値がでる場合、Amazon EC2 Auto Scaling はオンデマンドインスタンスを優先して次の整数に切り上げられます。

サイズを増やす際の Auto Scaling グループの動作は以下のようになります。

例: スケーリング動作
インスタンスの分散 購入オプション全体における実行中のインスタンスの合計数
10 20 30 40
例 1
On-Demand base: 10 10 10 10 10
On-Demand percentage above base: 50% 0 5 10 15
Spot percentage: 50% 0 5 10 15
例 2
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 10 20 30 40
例 3
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 60% 6 12 18 24
Spot percentage: 40% 4 8 12 16
例 4
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 100% 10 20 30 40
Spot percentage: 0% 0 0 0 0
例 5
On-Demand base: 12 10 12 12 12
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 0 8 18 28

スポットインスタンスのベストプラクティス

スポットインスタンスをリクエストする Auto Scaling グループを作成する前に、[Linux インスタンス用 Amazon EC2 ユーザーガイド] の [EC2 スポットを利用するうえでのベストプラクティス] を参照してください。リクエストを計画するときにこれらのベストプラクティスを使用して、できるだけ低価格でインスタンスのタイプをプロビジョニングできるようにします。また、次のことをお勧めします。

  • オンデマンド価格であるデフォルトの上限料金を使用します。起動するスポットインスタンスのスポット価格のみを支払います。スポット価格が上限価格以下である場合、リクエストが落札されるかどうかは可用性によります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド.の「料金と削減」を参照してください。

  • 複数のインスタンスタイプを使用する Auto Scaling グループを作成します。キャパシティーはアベイラビリティーゾーンのインスタンスタイプごとに個別に変動するため、インスタンスタイプの柔軟性が高ければ、通常、より多くのコンピューティング性能を得られます。

  • 同様に、最もよく使用されているインスタンスタイプだけに制限しないでください。価格は長期の需要に基づいて調整されます。そのため、よく使用されているインスタンスタイプ (最近開始されたインスタンスファミリーなど) の料金はより調整が大きくなる傾向があります。使用されることが少なくなった旧世代のインスタンスタイプを選択すると、コストが下がり、中断が少なくなる傾向があります。

  • capacity-optimizedまたはcapacity-optimized-prioritized配分戦略を使用することをお勧めします。。つまり、Amazon EC2 Auto Scaling は、利用可能なスポット容量に基づいて最適に選択されたスポットプールを使用してインスタンスを起動するので、スポットの中断の可能性を減らすことができます。

  • lowest-price配分戦略を選択してウェブサービスを実行する場合は、多数のスポットプール (例えば、N=10) を指定します。多数のスポットプールを指定すると、いずれかのアベイラビリティーゾーンのプールが一時的に使用不可になったときのスポットインスタンスの中断の影響が抑えられます。バッチ[batch]処理や他のミッションクリティカルでないアプリケーションを実行している場合は、スポットプール数をより少なく、たとえば N = 2 に指定できます。これにより、アベイラビリティーゾーンあたりで使用可能な最低価格のスポットプールからのみ、スポットインスタンスを確実にプロビジョニングできます。

上限価格を指定する場合は、AWS CLI または SKD を使用して Auto Scaling グループを作成しますが、注意が必要です。上限価格が選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンス は起動されません。

Prerequisites

起動テンプレートは、Auto Scaling グループで使用するように設定されています。詳細については、「Auto Scaling グループの起動テンプレートの作成」を参照してください。

ユーザーは、 ec2:RunInstances アクションを呼び出すアクセス許可がある場合にのみ、起動テンプレートを使用して Auto Scaling グループを作成できます。詳細については、「起動テンプレートのサポート」を参照してください。

スポットインスタンスとオンデマンドインスタンスを使用した Auto Scaling グループの作成 (コンソール)

スケールできるスポットインスタンスとオンデマンドインスタンスのフリートを作成するには、以下の手順に従います。

スポットインスタンスとオンデマンドインスタンスを使用して Auto Scaling グループを作成するには

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

  2. 画面の上部のナビゲーションバーで、起動テンプレートを作成したときに使用したのと同じ AWS リージョンを選択します。

  3. [Auto Scaling グループの作成] を選択します。

  4. Choose launch template or configuration のページで、以下を実行します。

    1. Auto Scaling グループ名に Auto Scaling グループの名前を入力します。

    2. [起動テンプレート] で、既存の起動テンプレートを選択します。

    3. [起動テンプレートのバージョン] で、スケールアウト時に Auto Scaling グループで使用する起動テンプレートのバージョン (デフォルト、最新、または特定のバージョン) を選択します。

    4. 起動テンプレートが、使用する予定のすべてのオプションをサポートしていることを確認し、[次へ] を選択します。

  5. 設定の構成ページの [インスタンス購入のオプション] で、[Combine purchase options and instance types (購入のオプションとインスタンスタイプの組み合わせ)] を選択します。

  6. [Instances distribution (インスタンスの分散)] で、次の手順を実行します。

    デフォルト設定をそのまま使用する場合は、次の手順を省略できます。

    1. [On-Demand Base Capacity (オンデマンド ベースの容量)] で、オンデマンドインスタンスが満たす必要がある Auto Scaling グループの初期容量となるインスタンスの最小数を指定します。

    2. [On-Demand Percentage Above Base (ベースを超える場合のオンデマンドの割合)] で、オプションのオンデマンドベース数を超える場合の追加容量となるオンデマンドインスタンスとスポットインスタンスの割合を指定します。

    3. アベイラビリティーゾーンごとのスポット配分戦略では、容量の最適化 のデフォルト設定を維持することをお勧めします。デフォルトを維持しない場合は、[Lowest price (最低価格)] を選択し、最低価格のスポットインスタンスプールの数を入場し、多様化します。

    4. (オプション) [インスタンスタイプの優先順位付け] でチェックボックスを選択し、[インスタンスタイプ] セクションにインスタンスタイプを希望の優先順位で設定します。

    5. [容量の再調整] で、容量の再調整を有効にするか無効にするかを選択します。詳細については、「Amazon EC2 Auto Scaling 容量の再調整」を参照してください。

  7. [インスタンスタイプ] では、開始点として、推奨事項をもとに、起動できるインスタンスのタイプを選択します。それ以外の場合は、インスタンスタイプを削除し、必要に応じ、後で追加します。

  8. (オプション) インスタンスタイプの順序を変更するには、矢印を使用します。インスタンスタイプを設定した順序によって、オンデマンドインスタンスの優先度が設定されます。Auto Scaling グループでオンデマンド容量が起動された場合、リストの一番上にあるインスタンスタイプの優先順位が最も高くなります。

  9. (オプション) [インスタンスの重み付け] を使用するには、各インスタンスタイプに、Auto Scaling グループの容量に対してカウントされるインスタンスの量に対応する重みを付けます。

  10. [ネットワーク] の [VPC] で、起動テンプレートで指定したセキュリティグループの VPC を選択します。複数のインスタンスタイプおよび購入オプションを使用するインスタンスの起動は、EC2-Classic ではサポートされていません。

  11. [サブネット] で、指定した VPC 内のサブネットを 1 つ以上選択します。複数のアベイラビリティーゾーンのサブネットを使用することで、高可用性を得られます。Amazon EC2 Auto Scaling を使用した高可用性の詳細については、[複数のアベイラビリティーゾーンへのインスタンスの分散] を参照してください。

  12. [Next] を選択します。

    または、残りはデフォルトのままにして、[Skip to Review (確認をスキップ)] を選択できます。

  13. [詳細オプションの設定] ページで、次のオプションを設定し、[次へ] を選択します。

    1. (オプション) EC2 インスタンスを Elastic Load Balancing (ELB) のロードバランサーに登録するには、既存のロードバランサーを選択するか、新しいロードバランサーを作成します。詳細については、「Elastic Load Balancing と Amazon EC2 Auto Scaling」を参照してください。新しいロードバランサーを作成するには、Amazon EC2 Auto Scaling コンソールを使用して、Application Load Balancer またはNetwork Load Balancerを設定します。 の手順に従ってください。

    2. (オプション) ELBヘルスチェックを有効にするには、[ヘルスチェック] で、[ヘルスチェックのタイプ] の [ELB] を選択します。

    3. (オプション) [Health check grace period (ヘルスチェックの猶予期間)] に、Amazon EC2 Auto Scaling がサービスを開始した後にインスタンスの状態を確認するまでの時間を入力します。この目的は、Amazon EC2 Auto Scaling がインスタンスを正常でないとマークし、時間が来る前にインスタンスを終了するのを防ぐためです。デフォルトは 300 秒です。

  14. Configure group size and scaling policies ページで、次のオプションを設定し、[次へ] を選択します。

    1. (オプション) [希望する容量] に、起動するインスタンスの初期数を入力します。この数値を最小容量または最大容量制限の範囲外の値に変更する場合は、[最小容量] または [最大容量] の値を更新する必要があります。詳細については、「Auto Scaling グループの容量制限を設定する」を参照してください。

    2. (オプション) Auto Scaling グループのサイズを自動的にスケールするには、[ターゲット追跡スケーリングポリシー] を選択し、指示に従います。詳細については、「ターゲット追跡スケーリングポリシー」を参照してください。

    3. (オプション) [Instance scale-in protection (インスタンスのスケールイン保護)] で、インスタンスのスケールイン保護を有効にするかどうかを選択します。詳細については、「インスタンスのスケールイン保護の使用」を参照してください。

  15. (オプション) 通知を受け取るには、[通知の追加] を選択し、通知を設定してから [次へ] を選択します。詳細については、「Auto Scaling グループ スケーリング時の Amazon SNS 通知の取得」を参照してください。

  16. (オプション) タグを追加するには、[タグの追加] を選択し、各タグのタグキーと値を指定し、[次へ] を選択します。詳細については、「Auto Scaling グループとインスタンスのタグ付け」を参照してください。

  17. [Review (レビュー)]ページで、[Create Auto Scaling group (Auto Scaling グループを作成)] を選択します。

スポット割り当て戦略の設定(AWS CLI)

以下の設定例では、さまざまなスポット割り当て戦略を使用してスポットインスタンスを起動する方法を示しています。

注記

これらの例は、JSON または YAML でフォーマットされた設定ファイルの使用方法を示しています。AWS CLIバージョン 1 を使用する場合は、JSON 形式の設定ファイルを指定する必要があります。AWS CLIバージョン 2 を使用する場合は、YAML または JSON のいずれかでフォーマットされた設定ファイルを指定できます。

例 1: capacity-optimized 割り当て戦略を使用して スポットインスタンス を起動する

次の [create-auto-scaling-group] コマンドは、以下を指定する Auto Scaling グループを作成します。

  • オンデマンドインスタンスとして起動するグループの割合 (0) とオンデマンドインスタンスの初期のベース数 (1)

  • 優先度に従って起動するインスタンスタイプ (c5.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)

  • インスタンスを起動するサブネット (subnet-5ea0c127subnet-6194ea3bsubnet-c934b782)。それぞれ異なるアベイラビリティーゾーンに対応

  • 起動テンプレート (my-launch-template) とそのバージョン ($Default)

Amazon EC2 Auto Scaling がオンデマンド容量を満たそうとするとき、まず c5.large インスタンスタイプを起動します。スポットインスタンスは、スポットインスタンスの容量に基づいて、各アベイラビリティーゾーンの最適なスポットプールから取得されます。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

次は、config.json ファイルの例です。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

または、以下の[create-auto-scaling-group] コマンドを使用して、JSON ファイルの代わりに Auto Scaling グループの唯一のパラメータとして YAML ファイルを参照して、Auto Scaling グループを作成できます。

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

次は、config.yaml ファイルの例です。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

例 2: capacity-optimized-prioritized 割り当て戦略を使用して スポットインスタンス を起動する

次の [create-auto-scaling-group] コマンドは、以下を指定する Auto Scaling グループを作成します。

  • オンデマンドインスタンスとして起動するグループの割合 (0) とオンデマンドインスタンスの初期のベース数 (1)

  • 優先度に従って起動するインスタンスタイプ (c5.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)

  • インスタンスを起動するサブネット (subnet-5ea0c127subnet-6194ea3bsubnet-c934b782)。それぞれ異なるアベイラビリティーゾーンに対応

  • 起動テンプレート (my-launch-template) とそのバージョン ($Latest)

Amazon EC2 Auto Scaling がオンデマンド容量を満たそうとするとき、まず c5.large インスタンスタイプを起動します。Amazon EC2 Auto Scaling がスポット容量を満たそうとするとき、ベストエフォートベースでインスタンスタイプの優先順位を尊重しますが、まずは容量に合わせて最適化します。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

次は、config.json ファイルの例です。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized-prioritized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

または、以下の[create-auto-scaling-group] コマンドを使用して、JSON ファイルの代わりに Auto Scaling グループの唯一のパラメータとして YAML ファイルを参照して、Auto Scaling グループを作成できます。

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

次は、config.yaml ファイルの例です。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized-prioritized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

例 3: 2つのプール間での lowest-price 配分戦略を使用してスポットインスタンスを起動する

次の [create-auto-scaling-group] コマンドは、以下を指定する Auto Scaling グループを作成します。

  • オンデマンドインスタンスとして起動するグループの割合 (50)。オンデマンドインスタンスの初期のベース数は指定しない

  • 優先度に従って起動するインスタンスタイプ (c5.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)

  • インスタンスを起動するサブネット (subnet-5ea0c127subnet-6194ea3bsubnet-c934b782)。それぞれ異なるアベイラビリティーゾーンに対応

  • 起動テンプレート (my-launch-template) とそのバージョン ($Latest)

Amazon EC2 Auto Scaling がオンデマンド容量を満たそうとするとき、まず c5.large インスタンスタイプを起動します。スポット容量については、Amazon EC2 Auto Scaling は、各アベイラビリティーゾーンで 2 つの最低価格のプールのスポットインスタンスを均等に起動しようとします。

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

次は、config.json ファイルの例です。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "lowest-price", "SpotInstancePools": 2 } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

または、以下の[create-auto-scaling-group] コマンドを使用して、JSON ファイルの代わりに Auto Scaling グループの唯一のパラメータとして YAML ファイルを参照して、Auto Scaling グループを作成できます。

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

次は、config.yaml ファイルの例です。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: lowest-price SpotInstancePools: 2 MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Auto Scaling グループが正しく設定されているかどうか、およびグループがインスタンスを起動していることを確認する(AWS CLI)

Auto Scaling グループが正しく設定され、インスタンスが起動しているかどうかをチェックするには、[Auto Scaling グループの説明] のコマンドを使用します。混合インスタンスのポリシーとサブネットのリストが存在し、正しく設定されていることを確認します。インスタンスが起動した場合は、インスタンスとそのステータスのリストが表示されます。インスタンスの起動によるスケーリング アクティビティを表示するには、[スケーリング アクティビティを記述] のコマンドを使用します。進行中および最近完了したスケーリングをモニタリングできます。