インスタンスタイプに異なる起動テンプレートを指定する
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 グループを作成して設定するには
-
混合インスタンスのポリシー構造を指定し、
Overrides
構造を含む設定ファイルを作成します。以下は、JSON形式の設定ファイルの例の内容です。これは、
c5.large
、c5a.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":[ ] } -
次の [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" }, ... } ] }