複数の起動テンプレートを使用する
複数のインスタンスタイプを使用するだけでなく、複数の起動テンプレートを使用することもできます。
例えば、コンピューティング集約型アプリケーション用に 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-groupc5.large、c5a.large、およびc6g.largeのインスタンスタイプを指定し、c6g.largeのインスタンスタイプに新しい起動テンプレートを定義することで、適切な AMI を使用して Arm インスタンスを起動することを保証します。Amazon EC2 Auto Scalingは、インスタンスタイプの順序を使用して、オンデマンドキャパシティーを満たすときに最初に使用するインスタンスタイプを決定します。
aws autoscaling create-auto-scaling-group --cli-input-jsonfile://~/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 という名前の Auto Scaling グループの my-asg インスタンスタイプに割り当てます。c6g.large
aws autoscaling update-auto-scaling-group --cli-input-jsonfile://~/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
aws autoscaling create-auto-scaling-group --cli-input-jsonfile://~/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 グループの起動テンプレートを確認するには
以下のいずれかのコマンドを使用します。
-
describe-auto-scaling-groups
(AWS CLI) -
Get-ASAutoScalingGroup (AWS Tools for Windows PowerShell)
関連リソース
AWS re:Post