複数の起動テンプレートを使用する - Amazon EC2 Auto Scaling

複数の起動テンプレートを使用する

複数のインスタンスタイプを使用するだけでなく、複数の起動テンプレートを使用することもできます。

例えば、コンピューティング集約型アプリケーション用に Auto Scaling グループを設定し、C5、C5a、C6g のインスタンスタイプを混在させたいとします。ただし、C6g インスタンスの特徴は64 ビット Arm アーキテクチャに基づく AWS Graviton プロセッサ、C5 および C5a インスタンスは 64 ビットインテル x86 プロセッサ上で動作します。C5 インスタンスと C5a インスタンスの AMI はどちらも、これらの各インスタンスで機能しますが、C6g インスタンスでは機能しません。この問題を解決するには、C6g インスタンス用に別の起動テンプレートを使用します。C5 インスタンスと C5a インスタンスには同じ起動テンプレートを引き続き使用できます。

このセクションでは、AWS CLI を使用して複数の起動テンプレートの使用に関連するタスクを実行する手順について説明します。現在、この特徴はAWS CLIまたは SDK を使用している場合のみ利用可能で、コンソールからは利用できません。

複数の起動テンプレートを使用するように Auto Scaling グループを設定する

次の例に示すように、複数の起動テンプレートを使用するように Auto Scaling グループを設定できます。

複数の起動テンプレートを使用するように新しい Auto Scaling グループを設定するには (AWS CLI)

create-auto-scaling-group コマンドを使用します。例えば、次のコマンドは新しい Auto Scaling グループを作成します。これは、c5.largec5a.large、およびc6g.largeのインスタンスタイプを指定し、c6g.largeのインスタンスタイプに新しい起動テンプレートを定義することで、適切な AMI を使用して Arm インスタンスを起動することを保証します。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-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":[ ] }
複数の起動テンプレートを使用するように既存の Auto Scaling グループを設定するには (AWS CLI)

update-auto-scaling-group コマンドを使用します。例えば、次のコマンドは、my-launch-template-for-arm という名前の起動テンプレートを、my-asg という名前の Auto Scaling グループの c6g.large インスタンスタイプに割り当てます。

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 グループを設定するには (AWS CLI)

create-auto-scaling-group コマンドを使用します。例えば、次のコマンドは、ARM AMI を含む AWS Graviton インスタンス用の起動テンプレートと、x86 AMI を含む AMD または Intel ベースのインスタンス用の追加の起動テンプレートを指定して、新しい Auto Scaling グループを作成します。次に、属性ベースのインスタンス選択を 2 回使用して、各 CPU アーキテクチャの幅広いインスタンスタイプから選択します。update-autoscaling-group コマンドを使用して、既存の 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-for-arm", "Version":"$Latest" }, "Overrides":[ { "InstanceRequirements": { "VCpuCount": {"Min": 2}, "MemoryMiB": {"Min": 2048}, "CpuManufacturers": ["amazon-web-services"] } }, { "InstanceRequirements": { "VCpuCount": {"Min": 2}, "MemoryMiB": {"Min": 2048}, "CpuManufacturers": ["intel", "amd"] }, "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template-for-x86", "Version": "$Latest" } } ] }, "InstancesDistribution":{ "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize":1, "MaxSize":10, "DesiredCapacity":6, "VPCZoneIdentifier":"subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags":[ ] }
Auto Scaling グループの起動テンプレートを確認するには

以下のいずれかのコマンドを使用します。

AWS re:Post の CloudFormation テンプレートで、属性ベースのインスタンスタイプの選択を使用して複数の起動テンプレートを指定する例を確認できます。