Determine the supported boot modes of an EC2 instance type - Amazon Elastic Compute Cloud

Determine the supported boot modes of an EC2 instance type

You can use the AWS CLI or the Tools for PowerShell to determine the supported boot modes of an instance type.

To determine the supported boot modes of an instance type

You can use the following methods to determine the supported boot modes of an instance type.

AWS CLI

Use the describe-instance-types command to determine the supported boot modes of an instance type. The --query parameter filters the output to return only the supported boot modes.

The following example shows that m5.2xlarge supports both UEFI and Legacy BIOS boot modes.

aws ec2 describe-instance-types --region us-east-1 --instance-types m5.2xlarge --query "InstanceTypes[*].SupportedBootModes"

The following is example output.

[ [ "legacy-bios", "uefi" ] ]

The following example shows that t2.xlarge supports only Legacy BIOS.

aws ec2 describe-instance-types --region us-east-1 --instance-types t2.xlarge --query "InstanceTypes[*].SupportedBootModes"

The following is example output.

[ [ "legacy-bios" ] ]
PowerShell

Use the Get-EC2InstanceType (Tools for PowerShell) Cmdlet to determine the supported boot modes of an instance type.

The following example shows that m5.2xlarge supports both UEFI and Legacy BIOS boot modes.

Get-EC2InstanceType -Region us-east-1 -InstanceType m5.2xlarge | Format-List InstanceType, SupportedBootModes

The following is example output.

InstanceType : m5.2xlarge SupportedBootModes : {legacy-bios, uefi}

The following example shows that t2.xlarge supports only Legacy BIOS.

Get-EC2InstanceType -Region us-east-1 -InstanceType t2.xlarge | Format-List InstanceType, SupportedBootModes

The following is example output.

InstanceType : t2.xlarge SupportedBootModes : {legacy-bios}
To determine the instance types that support UEFI

You can use the following methods to determine the instance types that support UEFI;

AWS CLI

The available instance types vary by AWS Region. To see the available instance types that support UEFI in a Region, use the describe-instance-types command with the --region parameter. If you omit the --region parameter, your configured default Region is used in the request. Include the --filters parameter to scope the results to the instance types that support UEFI and the --query parameter to scope the output to the value of InstanceType.

aws ec2 describe-instance-types --filters Name=supported-boot-mode,Values=uefi --query "InstanceTypes[*].[InstanceType]" --output text | sort

The following is example output.

a1.2xlarge a1.4xlarge a1.large a1.medium a1.metal a1.xlarge c5.12xlarge ...
PowerShell
PS C:\> Get-EC2InstanceType | ` Where-Object {$_.SupportedBootModes -Contains "uefi"} | ` Sort-Object InstanceType | ` Format-Table InstanceType -GroupBy CurrentGeneration

The following is example output.

CurrentGeneration: False InstanceType ------------ a1.2xlarge a1.4xlarge a1.large a1.medium a1.metal a1.xlarge CurrentGeneration: True InstanceType ------------ c5.12xlarge c5.18xlarge c5.24xlarge c5.2xlarge c5.4xlarge c5.9xlarge ...
To determine the instance types that support UEFI Secure Boot and persist non-volatile variables

Bare metal instances do not support UEFI Secure Boot and non-volatile variables, so these examples exclude them from the output. For information about UEFI Secure Boot, see UEFI Secure Boot for Amazon EC2 instances.

AWS CLI

Use the describe-instance-types command, and exclude the bare metal instances from the output by including the Name=bare-metal,Values=false filter.

aws ec2 describe-instance-types --filters Name=supported-boot-mode,Values=uefi Name=bare-metal,Values=false --query "InstanceTypes[*].[InstanceType]" --output text | sort

The following is example output.

a1.2xlarge a1.4xlarge a1.large a1.medium ...
PowerShell
PS C:\> Get-EC2InstanceType | ` Where-Object { ` $_.SupportedBootModes -Contains "uefi" -and ` $_.BareMetal -eq $False } | ` Sort-Object InstanceType | ` Format-Table InstanceType, SupportedBootModes, BareMetal, @{Name="SupportedArchitectures"; Expression={$_.ProcessorInfo.SupportedArchitectures}}
InstanceType SupportedBootModes BareMetal SupportedArchitectures ------------ ------------------ --------- ---------------------- a1.2xlarge {uefi} False arm64 a1.4xlarge {uefi} False arm64 a1.large {uefi} False arm64 a1.medium {uefi} False arm64 a1.xlarge {uefi} False arm64 c5.12xlarge {legacy-bios, uefi} False x86_64 c5.18xlarge {legacy-bios, uefi} False x86_64