Selección de tipo de instancia basada en atributos para la flota de spot - Amazon Elastic Compute Cloud

Selección de tipo de instancia basada en atributos para la flota de spot

Al crear una flota de spot, debe especificar uno o varios tipos de instancias para configurar las instancias bajo demanda y las instancias de spot en la flota. Como alternativa a especificar de forma manual los tipos de instancia, puede especificar los atributos que debe tener una instancia y Amazon EC2 identificará todos los tipos de instancias con esos atributos. Esto se conoce como selección de tipo de instancia basada en atributos. Por ejemplo, puede especificar el número mínimo y máximo de vCPU necesarias para sus instancias y la flota de spot iniciará las instancias mediante cualquier tipo de instancia disponible que cumpla con esos requisitos de vCPU.

La selección de tipo de instancia basada en atributos es ideal para cargas de trabajo y marcos que pueden ser flexibles sobre los tipos de instancias que utilizan, como cuando se ejecutan contenedores o flotas web, se procesan macrodatos y se implementan herramientas de integración e implementación continuas (CI/CD).

Beneficios

La selección de tipo de instancia basada en atributos posee los siguientes beneficios:

  • Uso fácil de los tipos de instancias correctos: con tantos tipos de instancias disponibles, encontrar los tipos de instancias adecuados para su carga de trabajo puede necesitar mucho tiempo. Cuando especifica atributos de instancia, los tipos de instancia tendrán automáticamente los atributos necesarios para la carga de trabajo.

  • Configuración simplificada: para especificar de forma manual varios tipos de instancias para una flota de spot, debe crear una anulación de la plantilla de inicialización independiente para cada tipo de instancia. Sin embargo, con la selección de tipo de instancia basada en atributos, para proporcionar varios tipos de instancias solo necesita especificar los atributos de instancia en la plantilla de inicialización o en una anulación de la plantilla de inicialización.

  • Uso automático de nuevos tipos de instancias: cuando se especifican atributos de instancia en lugar de tipos de instancias, su flota puede utilizar tipos de instancias de nueva generación a medida que se publican, con lo que se prueba la eficiencia futura de la configuración de la flota.

  • Flexibilidad del tipo de instancias: cuando se especifican atributos de instancias en lugar de tipos de instancias, la flota de spot puede seleccionar entre una amplia gama de tipos de instancias para iniciar instancias de spot, de forma que se siguen las prácticas recomendadas de instancias de spot de flexibilidad con respecto a los tipos de instancia.

Cómo funciona la selección de tipo de instancia basada en atributos

Para utilizar la selección de tipo de instancia basada en atributos en la configuración de la flota, debe reemplazar la lista de tipos de instancias por una lista de atributos de instancia que requieren las instancias. La flota de spot iniciará instancias en cualquier tipo de instancia disponible que tenga los atributos de instancia especificados.

Tipos de atributos de instancia

Hay varios atributos de instancia que puede especificar para expresar los requisitos de computación, como, por ejemplo:

  • Recuento de vCPU: el número mínimo y máximo de vCPU por instancia.

  • Memoria: los GiB de memoria mínimos y máximos por instancia.

  • Almacenamiento local: si se usarán volúmenes de almacén de instancias o EBS para el almacenamiento local.

  • Rendimiento ampliable: si se usará la familia de instancias T, incluidos los tipos T4g, T3a, T3 y T2.

Para obtener una descripción de cada atributo y los valores predeterminados, consulte InstanceRequirements en la Referencia de la API de Amazon EC2.

Dónde configurar la selección de tipo de instancia basada en atributos

Según si utiliza la consola o la AWS CLI, puede especificar los atributos de instancia para la selección de tipo de instancia basada en atributos de la siguiente manera:

En la consola, puede especificar los atributos de instancia en uno o ambos de los siguientes componentes de configuración de la flota:

  • En una plantilla de inicialización y, luego, hacer referencia a la plantilla de inicialización en la solicitud de flota.

  • En la solicitud de flota

En la AWS CLI puede especificar los atributos de la instancia en uno o todos los siguientes componentes de configuración de la flota:

  • En una plantilla de inicialización, y hacer referencia a la plantilla de inicialización en la solicitud de flota.

  • En una anulación de la plantilla de inicialización

    Si desea una combinación de instancias que utilizan diferentes AMI, puede especificar atributos de instancia en varias anulaciones de plantillas de inicialización. Por ejemplo, distintos tipos de instancias pueden utilizar procesadores x86 y basados en Arm.

  • En una especificación de inicialización

Cómo utiliza la flota de spot la selección de tipo de instancia basada en atributos al aprovisionar una flota

La flota de spot aprovisiona una flota de la siguiente manera:

  • La flota de spot identifica los tipos de instancias que tienen los atributos especificados.

  • La flota de spot utiliza la protección de precios para determinar qué tipos de instancias excluir.

  • La flota de spot determina los grupos de capacidad desde los que considerará iniciar las instancias en función de las regiones de AWS o zonas de disponibilidad que tienen tipos de instancias coincidentes.

  • La flota de spot aplica la estrategia de asignación especificada para determinar desde qué grupos de capacidad se van a iniciar las instancias.

    Tenga en cuenta que la selección de tipo de instancia basada en atributos no selecciona los grupos de capacidad desde los que se aprovisiona la flota; eso depende de las estrategias de asignación. Puede que haya un gran número de tipos de instancias con atributos especificados, y algunos de ellos pueden ser costosos. La estrategia de asignación predeterminada de lowestPrice para instancias de spot y bajo demanda garantiza que la flota de spot iniciará instancias desde los grupos de capacidad menos costosos.

    Si especifica una estrategia de asignación, la flota de spot iniciará instancias de acuerdo con la estrategia de asignación especificada.

    • En cuanto a las instancias de spot, la selección de tipo de instancia basada en atributos admite las estrategias de asignación capacityOptimizedPrioritized, capacityOptimized y lowestPrice.

    • Para las instancias bajo demanda, la selección de tipo de instancia basada en atributos admite la estrategia de asignación lowestPrice.

  • Si no hay capacidad para los tipos de instancias con los atributos de instancia especificados, no se pueden iniciar instancias y la flota devuelve un error.

Protección de precios

La protección de precios es una característica que impide que su flota de spot utilice tipos de instancias que consideraría demasiado caros, incluso si se ajustan a los atributos especificados. Para utilizar la protección de precios, debe establecer un umbral de precios. A continuación, cuando Amazon EC2 selecciona tipos de instancias con sus atributos, excluye los tipos de instancias con precios superiores al umbral.

La forma en que Amazon EC2 calcula el umbral de precio es la siguiente:

  • En primer lugar, Amazon EC2 identifica el tipo de instancia con el precio más bajo entre los que coinciden con sus atributos.

  • A continuación, Amazon EC2 toma el valor (expresado como porcentaje) que especificó para el parámetro de protección de precios y lo multiplica por el precio del tipo de instancias identificado. El resultado es el precio que se utiliza como umbral de precio.

Existen límites de precios diferentes para las instancias bajo demanda y las instancias de spot.

Cuando crea una flota con la selección del tipo de instancia basada en atributos, se habilita la protección de precios de forma predeterminada. Puede mantener los valores predeterminados o especificar los suyos.

También puede desactivar la protección de precios. Para indicar que no hay umbral de protección de precios, especifique un valor de porcentaje alto, como 999999.

Cómo se identifica el tipo de instancia con el precio más bajo

Amazon EC2 determina el precio en el que se basará el umbral de precios mediante la identificación del tipo de instancia con el precio más bajo entre los que coinciden con los atributos especificados. Lo hace de la siguiente forma:

  • En primer lugar, analiza los tipos de instancias C, M o R de la generación actual que coincidan con sus atributos. Si encuentra alguna coincidencia, identifica el tipo de instancia con el precio más bajo.

  • Si no hay ninguna coincidencia, analiza los tipos de instancias de la generación actual que coincidan con sus atributos. Si encuentra alguna coincidencia, identifica el tipo de instancia con el precio más bajo.

  • Si no hay ninguna coincidencia, analiza los tipos de instancias de la generación anterior que coincidan con sus atributos e identifica el tipo de instancia con el precio más bajo.

Protección de precios de las instancias bajo demanda

El umbral de protección de precios para los tipos de instancias bajo demanda se calcula como un porcentaje superior al tipo de instancia bajo demanda identificado con el precio más bajo (OnDemandMaxPricePercentageOverLowestPrice). Especificará el porcentaje más alto que está dispuesto a pagar. Si no especifica este parámetro, se utilizará el valor predeterminado 20 para calcular un umbral de protección de precios superior en un 20 % al precio identificado.

Por ejemplo, si el precio de la instancia bajo demanda identificada es 0.4271 y usted especificó 25, el umbral de precios es un 25 % superior a 0.4271. Se calcula como se indica a continuación: 0.4271 * 1.25 = 0.533875. El precio calculado es el máximo que está dispuesto a pagar por las instancias bajo demanda y, en este ejemplo, Amazon EC2 excluirá cualquier tipo de instancia bajo demanda que cueste más de 0.533875.

Protección de precios de instancias de spot

De manera predeterminada, Amazon EC2 aplicará automáticamente una protección óptima del precio de las instancias de spot para seleccionar de manera coherente entre una amplia gama de tipos de instancia. También puede configurar manualmente la protección de precios. Sin embargo, dejar que Amazon EC2 lo haga puede aumentar la probabilidad de que se agote la capacidad de spot.

Puede especificar manualmente la protección de precios con una de las opciones siguientes. Si configura manualmente la protección de precios, le recomendamos utilizar la primera opción.

  • Un porcentaje del tipo de instancia bajo demanda identificado con el precio más bajo [MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]

    Por ejemplo, si el precio del tipo de instancia bajo demanda identificado es 0.4271 y usted especificó 60, el umbral de precios es un 60 % de 0.4271. Se calcula como se indica a continuación: 0.4271 * 0.60 = 0.25626. El precio calculado es el máximo que está dispuesto a pagar por las instancias de spot y, en este ejemplo, Amazon EC2 excluirá cualquier tipo de instancia de spot que cueste más de 0.25626.

  • Un porcentaje superior al tipo de instancia de spot identificado con el precio más bajo [SpotMaxPricePercentageOverLowestPrice]

    Por ejemplo, si el precio del tipo de instancia de spot identificado es 0.1808 y usted especificó 25, el umbral de precios es un 25 % superior a 0.1808. Se calcula como se indica a continuación: 0.1808 * 1.25 = 0.226. El precio calculado es el máximo que está dispuesto a pagar por las instancias de spot y, en este ejemplo, Amazon EC2 excluirá cualquier tipo de instancia de spot que cueste más de 0.266. No le recomendamos utilizar este parámetro porque los precios de spot pueden fluctuar y, por lo tanto, su umbral de protección de precios también puede fluctuar.

Especificación del umbral de protección de precios

Para especificar el límite de protección de precios

Cuando cree la flota de spot, configure la flota para la selección del tipo de instancia basada en atributos y, a continuación, haga lo siguiente:

  • Consola

    Para especificar el límite de protección de precios de las instancias bajo demanda, en Atributo de instancia adicional, elija Protección de precios bajo demanda y, luego, elija Agregar atributo. En Porcentaje de protección de precios bajo demanda, ingrese el límite de protección de precios en forma de porcentaje.

    Para especificar el límite de protección de precios de las instancias de spot, en Atributo de instancia adicional, elija Protección de precios de spot y luego elija Agregar atributo. Elija un parámetro e ingrese el umbral de protección de precios en forma de porcentaje.

  • AWS CLI

    Para especificar el límite de protección de precios de las instancias bajo demanda, en el archivo de configuración JSON, en la estructura InstanceRequirements, en OnDemandMaxPricePercentageOverLowestPrice, ingrese el límite de protección de precios en forma de porcentaje.

    Para especificar el umbral de protección de precios de las instancias de spot, en el archivo de configuración JSON, en la estructura InstanceRequirements, especifique uno de los siguientes parámetros:

    • En MaxSpotPriceAsPercentageOfOptimalOnDemandPrice, ingrese el umbral de protección de precios en forma de porcentaje.

    • En SpotMaxPricePercentageOverLowestPrice, ingrese el umbral de protección de precios en forma de porcentaje.

Para obtener más información sobre la creación de una flota, consulte Cree una flota de spot con la selección de tipo de instancia basada en atributos.

nota

Cuando se crea la flota de spot, si se establece el tipo Capacidad de destino total como vCPUs o Memoria (MiB) (consola), o bien TargetCapacityUnitType como vcpu o memory-mib (AWS CLI), el límite de protección de precios se aplica en función del precio por vCPU o por memoria, en lugar del precio por instancia.

Consideraciones

  • Puede especificar tipos de instancias o atributos de instancia en una flota de spot, pero no ambos al mismo tiempo.

    Al utilizar la CLI, las anulaciones de la plantilla de inicialización anularán la plantilla de inicialización. Por ejemplo, si la plantilla de inicialización contiene un tipo de instancia y la anulación de la plantilla de inicialización contiene atributos de instancia, las instancias identificadas por los atributos de instancia anularán el tipo de instancia en la plantilla de inicialización.

  • Al utilizar la CLI, cuando especifica atributos de instancia como anulaciones, no puede especificar ponderaciones ni prioridades al mismo tiempo.

  • Puede especificar un máximo de cuatro estructuras InstanceRequirements en una configuración de solicitud.

Cree una flota de spot con la selección de tipo de instancia basada en atributos

Puede configurar una flota para utilizar la selección de tipo de instancia basada en atributos mediante la consola de Amazon EC2 o la AWS CLI.

Creación de una flota de spot mediante la consola

Para configurar una flota de spot para la selección de tipo de instancia basada en atributos (consola)
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Solicitudes de spot y, a continuación, elija Solicitar instancias de spot.

  3. Siga los pasos para crear una flota de spot. Para obtener más información, consulte Creación de una solicitud de flota de spot con los parámetros definidos (consola).

    Al crear la flota de spot, configure la flota para la selección de tipo de instancia basada en atributos de la siguiente manera:

    1. En Requisitos de tipo de instancia, elija Especificar los atributos de instancia que coinciden con los requisitos de computación.

    2. En vCPU, ingrese el número mínimo y máximo deseado de vCPU. Para no especificar ningún límite, seleccione Sin mínimo, Sin máximo o ambos.

    3. En Memoria (GiB), ingrese la cantidad mínima y máxima de memoria deseada. Para no especificar ningún límite, seleccione Sin mínimo, Sin máximo o ambos.

    4. (Opcional) En Atributos de instancia adicionales, puede especificar opcionalmente uno o varios atributos para expresar sus requisitos de computación con más detalle. Cada atributo adicional agrega más restricciones a la solicitud.

    5. (Opcional) Expanda Vista previa de tipos de instancia coincidentes para ver los tipos de instancias que tienen los atributos especificados.

Creación de una flota de spot mediante la AWS CLI

Para configurar una flota de spot para la selección de tipo de instancia basada en atributos (AWS CLI)

Utilice el comando request-spot-fleet (AWS CLI) para crear una flota de spot. Especifique la configuración de la flota en un archivo JSON.

aws ec2 request-spot-fleet \ --region us-east-1 \ --spot-fleet-request-config file://file_name.json

Archivo file_name.json de ejemplo

En el siguiente ejemplo, se incluyen los parámetros que configuran una flota de spot para utilizar la selección de tipos de instancia basada en atributos y va seguida de una explicación de texto.

{ "AllocationStrategy": "priceCapacityOptimized", "TargetCapacity": 20, "Type": "request", "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }] }

Los atributos para la selección de tipos de instancia basada en atributos se especifican en la estructura InstanceRequirements. En este ejemplo, se especifican dos atributos:

  • VCpuCount: se especifica un mínimo de 2 vCPU. Como no se especifica ningún máximo, no hay ningún límite máximo.

  • MemoryMiB: se especifica un mínimo de 4 MiB de memoria. Como no se especifica ningún máximo, no hay ningún límite máximo.

Se identificarán los tipos de instancia que tengan 2 o más vCPU y 4 MiB o más de memoria. Sin embargo, la protección de precios y la estrategia de asignación pueden excluir algunos tipos de instancias cuando la flota de spot aprovisiona la flota.

Para obtener una lista y descripciones de todos los atributos posibles que se pueden especificar, consulte InstanceRequirements en la Referencia de la API de Amazon EC2.

nota

Cuando InstanceRequirements se incluye en la configuración de la flota, InstanceType y WeightedCapacity deben excluirse; no pueden determinar la configuración de la flota al mismo tiempo que los atributos de instancia.

El objeto JSON también contiene la siguiente configuración de flota:

  • "AllocationStrategy": "priceCapacityOptimized": la estrategia de asignación de las instancias de spot de la flota.

  • "LaunchTemplateName": "my-launch-template", "Version": "1": la plantilla de inicialización contiene información sobre la configuración de las instancias, pero, si se especifican los tipos de instancias, se anularán con los atributos especificados en InstanceRequirements.

  • "TargetCapacity": 20: la capacidad de destino es de 20 instancias.

  • "Type": "request": el tipo de solicitud para la flota es request.

Ejemplos de configuraciones válidas y no válidas

Si utiliza la AWS CLI para crear una flota de spot, debe asegurarse de que la configuración de la flota sea válida. En los siguientes ejemplos, se muestran configuraciones válidas y no válidas.

Las configuraciones no se consideran válidas cuando contienen lo siguiente:

  • Una única estructura Overrides con InstanceRequirements y InstanceType a la vez

  • Dos estructuras Overrides, una con InstanceRequirements y la otra con InstanceType

  • Dos estructuras InstanceRequirements con valores de atributo superpuestos dentro de la misma LaunchTemplateSpecification

Configuración válida: plantilla de inicialización única con anulaciones

La siguiente configuración es válida. Contiene una plantilla de inicialización y otra estructura Overrides que contiene una estructura InstanceRequirements. A continuación, se presenta una explicación de texto de la configuración de ejemplo.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "My-launch-template", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 2, "Max": 8 }, "MemoryMib": { "Min": 0, "Max": 10240 }, "MemoryGiBPerVCpu": { "Max": 10000 }, "RequireHibernateSupport": true } } ] } ], "TargetCapacity": 5000, "OnDemandTargetCapacity": 0, "TargetCapacityUnitType": "vcpu" } }
InstanceRequirements

Para utilizar la selección de instancias basada en atributos, debe incluir la estructura InstanceRequirements en la configuración de la flota y especificar los atributos deseados para las instancias de la flota.

En el ejemplo anterior, se especifican los siguientes atributos de instancia:

  • VCpuCount: los tipos de instancia deben tener un mínimo de 2 y un máximo de 8 vCPU.

  • MemoryMiB: los tipos de instancia deben tener un máximo de 10 240 MiB de memoria. Un mínimo de 0 indica que no hay un límite mínimo.

  • MemoryGiBPerVCpu: los tipos de instancia deben tener un máximo de 10 000 GiB de memoria por vCPU. El parámetro Min es opcional. Al omitirlo, indica que no hay un límite mínimo.

TargetCapacityUnitType

El parámetro TargetCapacityUnitType especifica la unidad de la capacidad de destino. En el ejemplo, la capacidad objetivo es 5000 y el tipo de unidad de capacidad objetivo es vcpu, que en conjunto especifican una capacidad de destino deseada de 5000 vCPU. La flota de spot iniciará suficientes instancias para que el número total de vCPU de la flota sea de 5000 vCPU.

Configuración válida: plantilla de inicialización única con varios requisitos de instancia

La siguiente configuración es válida. Contiene una plantilla de inicialización y una estructura Overrides que contiene dos estructuras InstanceRequirements. Los atributos especificados en InstanceRequirements son válidos porque los valores no se superponen; la primera estructura InstanceRequirements especifica un VCpuCount de 0 a 2 vCPU, mientras que la segunda estructura InstanceRequirements especifica de 4 a 8 vCPU.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

Configuración válida: dos plantillas de inicialización, cada una con anulaciones

La siguiente configuración es válida. Contiene dos plantillas de inicialización, cada una con una estructura Overrides que contiene una estructura InstanceRequirements. Esta configuración resulta útil para el soporte de arquitectura arm y x86 en la misma flota.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "armLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "x86LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

Configuración válida: solo InstanceRequirements especificado, sin valores de atributo superpuestos

La siguiente configuración es válida. Contiene dos estructuras LaunchTemplateSpecification, cada una con una plantilla de inicialización y una estructura Overrides que contiene una estructura InstanceRequirements. Los atributos especificados en InstanceRequirements son válidos porque los valores no se superponen; la primera estructura InstanceRequirements especifica un VCpuCount de 0 a 2 vCPU, mientras que la segunda estructura InstanceRequirements especifica de 4 a 8 vCPU.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

La configuración no es válida: Overrides contiene InstanceRequirements y InstanceType

La siguiente configuración no es válida. La estructura Overrides contiene tanto InstanceRequirements como InstanceType. En Overrides, puede especificar InstanceRequirements o InstanceType, pero no ambos.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceType": "m5.large" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

La configuración no es válida: dos Overrides contienen InstanceRequirements y InstanceType

La siguiente configuración no es válida. Las estructuras Overrides contienen tanto InstanceRequirements como InstanceType. Puede especificar InstanceRequirements o InstanceType, pero no ambos, incluso si están en diferentes estructuras Overrides.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "m5.large" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

La configuración no es válida: valores de atributo superpuestos

La siguiente configuración no es válida. Cada una de las dos estructuras InstanceRequirements contienen "VCpuCount": {"Min": 0, "Max": 2}. Los valores de estos atributos se superponen, lo que dará lugar a grupos de capacidad duplicados.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } }, { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

Vista previa de tipos de instancia con atributos especificados

Puede utilizar el comando de la AWS CLI get-instance-types-from-instance-requirements para obtener una vista previa de los tipos de instancias que coinciden con los atributos especificados. Esto resulta particularmente útil para determinar qué atributos se deben especificar en la configuración de la solicitud sin iniciar ninguna instancia. Considere que el comando no tiene en cuenta la capacidad disponible.

Para obtener una vista previa de una lista de tipos de instancias al especificar atributos mediante la AWS CLI
  1. (Opcional) Para generar todos los atributos posibles que se pueden especificar, utilice el comando get-instance-types-from-instance-requirements y el parámetro --generate-cli-skeleton. Puede dirigir de manera opcional el resultado a un archivo para guardarlo mediante input > attributes.json.

    aws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input > attributes.json

    Resultado previsto

    { "DryRun": true, "ArchitectureTypes": [ "i386" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "intel" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "current" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "included", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "included", "LocalStorageTypes": [ "hdd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "gpu" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "nvidia" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 }, "NetworkBandwidthGbps": { "Min": 0.0, "Max": 0.0 }, "AllowedInstanceTypes": [ "" ] }, "MaxResults": 0, "NextToken": "" }
  2. Cree un archivo de configuración JSON con el resultado del paso anterior y configúrelo de la siguiente manera:

    nota

    Debe proporcionar valores para ArchitectureTypes, VirtualizationTypes, VCpuCount y MemoryMiB. Puede omitir los demás atributos; cuando se omiten, se utilizan los valores predeterminados.

    Para obtener una descripción de cada atributo y sus valores predeterminados, consulte get-instance-types-from-instance-requirements en la Referencia de la línea de comandos de Amazon EC2.

    1. En ArchitectureTypes, especifique uno o varios tipos de arquitectura de procesador.

    2. En VirtualizationTypes, especifique uno o varios tipos de virtualización.

    3. En VCpuCount, especifique el número mínimo y máximo de vCPU. Para no especificar un límite mínimo, en Min, especifique 0. Para no especificar un límite máximo, omita el parámetro Max.

    4. En MemoryMiB, especifique la cantidad mínima y máxima de memoria en MiB. Para no especificar un límite mínimo, en Min, especifique 0. Para no especificar un límite máximo, omita el parámetro Max.

    5. De manera opcional, puede especificar uno o varios de los otros atributos para restringir aún más la lista de tipos de instancias que se devuelven.

  3. Para obtener una vista previa de los tipos de instancias que tienen los atributos especificados en el archivo JSON, utilice el comando get-instance-types-from-instance-requirements y especifique el nombre y la ruta de acceso al archivo JSON mediante el parámetro --cli-input-json. De manera opcional, puede dar formato al resultado para que aparezca en formato de tabla.

    aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json \ --output table

    Archivo de ejemplo attributes.json

    En este ejemplo, los atributos requeridos se incluyen en el archivo JSON. Ellos son ArchitectureTypes, VirtualizationTypes, VCpuCount y MemoryMiB. Además, el atributo opcional InstanceGenerations también se incluye. Tenga en cuenta que en MemoryMiB, el valor Max puede omitirse para indicar que no hay un límite.

    { "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }

    Ejemplo de resultados

    ------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || c6a.xlarge || ...
  4. Después de identificar los tipos de instancia que se ajusten a sus necesidades, anote los atributos de instancia utilizados para poder utilizarlos al configurar su solicitud de flota.