インスタンスタイプに異なる起動テンプレートを指定する - Amazon EC2 Auto Scaling

インスタンスタイプに異なる起動テンプレートを指定する

Overrides構造では、新規または既存の Auto Scaling グループの個々のインスタンスタイプに新しい起動テンプレートを定義することを許可します。例えば、インスタンスタイプのアーキテクチャでグループの残りの部分とは異なる AMI が必要な場合は、互換性のある AMI で起動テンプレートを指定する必要があります。

コンピューティング集約型アプリケーション用に Auto Scaling グループを設定し、C5、C5a、C6g のインスタンスタイプを混在させたいとします。ただし、C6g インスタンスの特徴は64 ビット Arm アーキテクチャに基づく AWS Graviton プロセッサ、C5 および C5a インスタンスは 64 ビットインテル x86 プロセッサ上で動作します。C5 インスタンスの AMI は C5a インスタンスで動作し、その逆も動作しますが、C6g インスタンスでは動作しません。Overridesプロパティを使用すると、C6g インスタンスには異なる起動テンプレートを含め、C5 および C5a インスタンスには同じ起動テンプレートを使用することができます。

注記

現在、この特徴はAWS CLIまたは SDK を使用している場合のみ利用可能で、コンソールからは利用できません。

インスタンスタイプの起動テンプレートを追加または変更する (AWS CLI)

以下の手順では、AWS CLIを使用して Auto Scaling グループを設定して、1 つ以上のインスタンスタイプがグループの残りの部分とは異なる起動テンプレートを使用するようにします。

新しい Auto Scaling グループを作成して設定するには
  1. 混合インスタンスのポリシー構造を指定し、Overrides構造を含む設定ファイルを作成します。

    以下は、JSON形式の設定ファイルの例の内容です。これは、c5.largec5a.large、およびc6g.largeのインスタンスタイプを指定し、c6g.largeのインスタンスタイプに新しい起動テンプレートを定義することで、適切な AMI を使用して Arm インスタンスを起動することを保証します。Amazon EC2 Auto Scalingは、インスタンスタイプの順序を使用して、オンデマンドキャパシティーを満たすときに最初に使用するインスタンスタイプを決定します。

    { "AutoScalingGroupName":"my-asg", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateName":"my-launch-template-for-x86", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] }, "InstancesDistribution":{ "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":3, "VPCZoneIdentifier":"subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags":[ ] }
  2. 次の [create-auto-scaling-group] コマンドを使用し、Auto Scaling グループの唯一のパラメータとして JSON ファイルを参照します。

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json
既存の Auto Scaling グループのインスタンスタイプの起動テンプレートを変更するには
  • 次の [update-auto-scaling-group] コマンドを使用し、Overrides構造を通すことによってインスタンスタイプに別の起動テンプレートを指定できます。

    この変更を行うと、起動される新しいインスタンスは新しい設定に基づいていますが、既存のインスタンスは影響を受けません。Auto Scaling グループが新しい設定を使用していることを確認するには、インスタンスの更新を開始するか、インスタンスの最大有効期間の特徴を使用して、グループ内のすべてのインスタンスを置き換えることができます。

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

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

    { "AutoScalingGroupName":"my-asg", "MixedInstancesPolicy":{ "LaunchTemplate":{ "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] } } }
Auto Scaling グループの起動テンプレートを確認するには
  • 次の [説明-auto-scaling-group] コマンドを使用し、現在指定されている起動テンプレートを確認および表示します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下に、応答の例を示します。

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"$Latest" }, "Overrides":[ { "InstanceType":"c6g.large", "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-09d958b8fb2ba5bcc", "LaunchTemplateName": "my-launch-template-for-arm", "Version": "$Latest" } }, { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":3, "Instances":[ { "InstanceId":"i-07c63168522c0f620", "InstanceType":"c5.large", "AvailabilityZone":"us-west-2c", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"1" }, "ProtectedFromScaleIn":false }, { "InstanceId":"i-0b7ff78be9896a2c2", "InstanceType":"c5.large", "AvailabilityZone":"us-west-2a", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-0fb0e487336917fb2", "LaunchTemplateName":"my-launch-template-for-x86", "Version":"1" }, "ProtectedFromScaleIn":false }, { "InstanceId":"i-0c682c2ceae918bc0", "InstanceType":"c6g.large", "AvailabilityZone":"us-west-2b", "LifecycleState":"InService", "HealthStatus":"Healthy", "LaunchTemplate":{ "LaunchTemplateId":"lt-09d958b8fb2ba5bcc", "LaunchTemplateName":"my-launch-template-for-arm", "Version":"1" }, ... } ] }