Spécifiez des attributs pour la sélection de type d’instance pour la flotte EC2
Lorsque vous créez une flotte EC2 ou un parc d’instances Spot, vous devez spécifier un ou plusieurs types d’instances afin de configurer les instances à la demande et les instances Spot de la flotte. Au lieu de spécifier manuellement les types d’instance, vous pouvez spécifier les attributs qu’une instance doit posséder, et Amazon EC2 identifiera tous les types d’instance avec ces attributs. C’est ce qu’on appelle la sélection de type d’instance basée sur des attributs. Par exemple, vous pouvez spécifier le nombre minimum et maximum de vCPUs requis pour vos instances, et la flotte lancera les instances en utilisant tous les types d’instances disponibles qui répondent à ces exigences de vCPU.
La sélection de type d’instance basée sur des attributs est idéale pour les charges de travail et les cadres qui peuvent être flexibles quant aux types d’instances qu’ils utilisent, par exemple lors de l’exécution de conteneurs ou de flottes web, du traitement de big data et de la mise en œuvre d’outils de CI/CD (intégration et déploiement continus).
Avantages
La sélection de type d’instance basée sur des attributs présente les avantages suivants :
-
Utiliser facilement les bons types d’instances – Avec autant de types d’instances disponibles, la recherche des types d’instances appropriés pour votre charge de travail peut prendre beaucoup de temps. Lorsque vous spécifiez des attributs d’instance, les types d’instance auront automatiquement les attributs requis pour votre charge de travail.
-
Configuration simplifiée – Pour spécifier manuellement plusieurs types d’instances pour une flotte, vous devez créer un modèle de lancement distinct pour chaque type d’instance. Toutefois, avec la sélection de type d’instance basée sur des attributs, pour fournir plusieurs types d’instance, il suffit de spécifier les attributs d’instance dans le modèle de lancement ou dans un remplacement de modèle de lancement.
-
Utilisation automatique de nouveaux types d’instances – Lorsque vous spécifiez des attributs d’instance plutôt que des types d’instance, votre flotte peut utiliser des types d’instance de nouvelle génération au fur et à mesure qu’ils sont publiés, « vérifiant ultérieurement » la configuration de la flotte.
-
Flexibilité du type d’instance – Lorsque vous spécifiez des attributs d’instance plutôt que des types d’instance, la flotte peut choisir parmi un large éventail de types d’instance pour lancer des instances Spot, ce qui est conforme aux bonnes pratiques Spot en matière de flexibilité des types d’instance.
Rubriques
Fonctionnement de la sélection de type d’instance basée sur des attributs
Créer une flotte EC2 avec une sélection de type d’instance basée sur des attributs
Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs
Exemples de configurations de flottes EC2 valides et non valides
Exemples de configurations du parc d’instances Spot valides et non valides
Fonctionnement de la sélection de type d’instance basée sur des attributs
Pour utiliser la sélection de type d’instance basée sur des attributs dans la configuration de votre flotte, vous remplacez la liste des types d’instance par une liste d’attributs d’instance dont vos instances ont besoin. La flotte EC2 ou le parc d’instances Spot lance des instances sur tous les types d’instance disponibles possédant les attributs d’instance spécifiés.
Rubriques
Types d’attributs d’instance
Il existe plusieurs attributs d’instance que vous pouvez spécifier pour exprimer vos besoins en matière de calcul, tels que :
-
Nombre de vCPU – Nombre minimum et maximum de vCPU par instance.
-
Mémoire — Le nombre minimum et maximum de Go de mémoire par instance.
-
Stockage local – S’il faut utiliser EBS ou des volumes de stockage d’instance pour le stockage local.
-
Des performances de pointe – S’il faut utiliser la famille d’instance T, y compris les types T4g, T3a, T3 et T2.
Pour obtenir une description de chaque attribut et des valeurs par défaut, consultez InstanceRequirements dans la Référence d’API Amazon EC2.
Où configurer la sélection de type d’instance basée sur des attributs
Selon que vous utilisez la console ou la AWS CLI, vous pouvez spécifier les attributs d’instance pour la sélection de type d’instance basée sur des attributs comme suit :
Dans la console, vous pouvez spécifier les attributs de l’instance dans les composants de configuration de la flotte suivants :
-
Dans un modèle de lancement, puis référencez le modèle de lancement dans la demande de flotte
-
(Parc d’instances Spot uniquement) Dans la demande de la flotte
Dans la AWS CLI, vous pouvez spécifier les attributs d’instance dans l’un ou l’ensemble des composants de configuration de flotte suivants :
-
Dans un modèle de lancement, puis référencez le modèle de lancement dans la demande de flotte
-
Dans un remplacement de modèle de lancement
Si vous souhaitez combiner des instances utilisant différentes AMI, vous pouvez spécifier des attributs d’instance dans plusieurs remplacements de modèles de lancement. Par exemple, différents types d’instance peuvent utiliser des processeurs x86 et Arm.
-
(Parc d’instances Spot uniquement) Dans une spécification de lancement
Comment la flotte EC2 ou le parc d’instances Spot utilise la sélection du type d’instance basée sur les attributs lors de l’approvisionnement d’une flotte ?
La flotte EC2 ou le parc d’instances Spot approvisionne une flotte de la manière suivante :
-
Il identifie les types d’instances qui ont les attributs spécifiés.
-
Il utilise la protection des prix pour déterminer les types d’instance à exclure.
-
Il détermine les groupes de capacité à partir desquels il envisagera de lancer les instances en fonction des régions AWS ou des zones de disponibilité qui ont des types d’instance correspondants.
-
Il applique la stratégie d’allocation spécifiée pour déterminer les groupes de capacités à partir desquels les instances doivent être lancées.
Notez que la sélection de type d’instance basée sur des attributs ne permet pas de sélectionner les groupes de capacités à partir desquels allouer la flotte ; c’est la tâche des stratégies d’allocations.
Si vous spécifiez une stratégie d’allocation, la flotte lancera des instances selon la stratégie d’allocation spécifiée.
-
Pour les instances Spot, la sélection de type d’instance basée sur des attributs prend en charge les stratégies d’allocation price-capacity optimized, optimized optimized, lowest-price. Notez que nous ne recommandons pas la stratégie d’allocation ponctuelle au prix le plus bas, car c’est elle qui présente le risque d’interruption le plus élevé pour vos instances ponctuelles.
-
Pour les instances à la demande, la sélection du type d’instance basée sur les attributs prend en charge la stratégie d’attribution du prix le plus bas.
-
-
S’il n’y a pas de capacité pour les types d’instance avec des attributs d’instance spécifiés, aucune instance ne peut être lancée et la flotte renvoie une erreur.
Protection des prix
La protection des prix est une fonction qui empêche votre flotte EC2 ou votre parc d’instances Spot d’utiliser des types d’instance que vous considéreriez trop chers même s’ils correspondent aux attributs que vous avez spécifiés. Pour utiliser la protection des prix, vous devez définir un seuil de prix. Ensuite, lorsque Amazon EC2 sélectionne des types d’instance avec vos attributs, il exclut les types d’instance dont le prix est supérieur à votre seuil.
Amazon EC2 calcule le seuil de prix de la manière suivante :
-
Amazon EC2 identifie d’abord le type d’instance le moins cher parmi ceux qui correspondent à vos attributs.
-
Amazon EC2 prend ensuite la valeur (exprimée en pourcentage) que vous avez spécifiée pour le paramètre de protection des prix et la multiplie par le prix du type d’instance identifié. Le résultat est le prix qui est utilisé comme seuil de prix.
Il existe des seuils de prix distincts pour les instances à la demande et pour les instances Spot.
Lorsque vous créez une flotte avec une sélection de type d’instance basée sur les attributs, la protection des prix est activée par défaut. Vous pouvez conserver les valeurs par défaut ou spécifier les vôtres.
Vous pouvez également désactiver la protection des prix. Pour indiquer qu’il n’y a aucun seuil de protection des prix, spécifiez une valeur de pourcentage élevée, telle que 999999.
Rubriques
Comment est identifié le type d’instance le moins cher
Amazon EC2 détermine le prix sur lequel baser le seuil de prix en identifiant le type d’instance dont le prix est le plus bas parmi celles qui correspondent aux attributs que vous avez spécifiés. Pour ce faire, il procède de la façon suivante :
-
Il examine d’abord les types d’instances C, M ou R de la génération actuelle qui correspondent à vos attributs. S’il trouve des correspondances, il identifie le type d’instance le moins cher.
-
S’il n’y a pas de correspondance, il examine ensuite tous les types d’instances de la génération actuelle qui correspondent à vos attributs. S’il trouve des correspondances, il identifie le type d’instance le moins cher.
-
S’il n’y a pas de correspondance, il examine ensuite tous les types d’instances de la génération précédente qui correspondent à vos attributs et identifie le type d’instance le moins cher.
Protection du prix de l’instance à la demande
Le seuil de protection des prix pour les types d’instances à la demande est calculé sous la forme d’un pourcentage supérieur au type d’instance à la demande le moins cher identifié (OnDemandMaxPricePercentageOverLowestPrice). Vous spécifiez le pourcentage supérieur que vous êtes prêt à payer. Si vous ne spécifiez pas ce paramètre, la valeur par défaut de 20 est utilisée pour calculer un seuil de protection des prix supérieur de 20 % au prix identifié.
Par exemple, si le prix de l’instance à la demande identifié est 0.4271, et que vous le spécifiez 25, le seuil de prix est supérieur de 25 % à 0.4271. Il est calculé comme suit : 0.4271 * 1.25 =
0.533875. Le prix calculé est le montant maximum que vous êtes prêt à payer pour les instances à la demande et, dans cet exemple, Amazon EC2 exclura tous les types d’instances à la demande dont le coût est supérieur à 0.533875.
Protection du prix de l’instance Spot
Par défaut, Amazon EC2 appliquera automatiquement une protection des prix des instances Spot optimale pour sélectionner de manière cohérente parmi un large éventail de types d’instance. Vous pouvez également définir vous-même la protection des prix manuellement. Toutefois, laisser Amazon EC2 le faire à votre place peut améliorer les chances que votre capacité Spot soit atteinte.
Vous pouvez spécifier manuellement la protection des prix à l’aide de l’une des solutions suivantes. Si vous définissez manuellement la protection des prix, nous vous recommandons d’utiliser la première option.
-
Pourcentage du type d’instance à la demande le moins cher identifié [
MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]Par exemple, si le prix du type d’instance à la demande identifié est
0.4271, et que vous le spécifiez60, le seuil de prix est de 60 %0.4271. Il est calculé comme suit :0.4271 * 0.60 = 0.25626. Le prix calculé est le montant maximum que vous êtes prêt à payer pour les instances Spot et, dans cet exemple, Amazon EC2 exclura tous les types d’instances Spot dont le coût est supérieur à0.25626. -
Un pourcentage supérieur au type d’instance Spot le moins cher identifié [
SpotMaxPricePercentageOverLowestPrice]Par exemple, si le prix du type d’instance Spot identifié est
0.1808, et que vous le spécifiez25, le seuil de prix est supérieur de 25 % à0.1808. Il est calculé comme suit :0.1808 * 1.25 = 0.226. Le prix calculé est le montant maximum que vous êtes prêt à payer pour les instances Spot et, dans cet exemple, Amazon EC2 exclura tous les types d’instances Spot dont le coût est supérieur à0.266. Il est déconseillé d’utiliser ce paramètre, car les prix Spot peuvent fluctuer, et par conséquent, votre seuil de protection des prix peut également fluctuer.
Spécifier le seuil de protection des prix
Pour spécifier le seuil de protection des prix à l’aide de la AWS CLI
Lors de la création d’une flotte EC2 ou d’un parc d’instances Spot à l’aide de la AWS CLI, configurez la flotte pour une sélection du type d’instance basée sur les attributs, puis procédez comme suit :
-
Pour spécifier le seuil de protection des prix de l’instance à la demande, dans le fichier de configuration JSON, dans la structure
InstanceRequirements, pourOnDemandMaxPricePercentageOverLowestPrice, saisissez le seuil de protection des prix sous forme de pourcentage. -
Pour spécifier le seuil de protection des prix de l’instance Spot, dans le fichier de configuration JSON, dans la structure
InstanceRequirements, spécifiez l’un des paramètres suivants :-
Pour
MaxSpotPriceAsPercentageOfOptimalOnDemandPrice, saisissez le seuil de protection des prix sous forme de pourcentage. -
Pour
SpotMaxPricePercentageOverLowestPrice, saisissez le seuil de protection des prix sous forme de pourcentage.
-
Pour plus d’informations, consultez Créer une flotte EC2 avec une sélection de type d’instance basée sur des attributs ou Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs.
(Spot uniquement) Pour spécifier le seuil de protection des prix à l’aide de la console
Lors de la création d’un parc d’instances Spot dans la console, configurez la flotte pour une sélection de type d’instance basée sur les attributs, puis effectuez les opérations suivantes :
-
Pour spécifier le seuil de protection des prix des instances à la demande, sous Additional instance attribute (Attribut d’instance supplémentaire), choisissez On-demand price protection (Protection des prix à la demande), puis Add attribute (Ajouter un attribut), puis saisissez le seuil de protection des prix sous forme de pourcentage.
-
Pour spécifier le seuil de protection des prix de l’instance Spot, Attribut d’instance supplémentaire, choisissez Protection des prix Spot, choisissez une valeur de base sur laquelle baser votre prix, puis saisissez le seuil de protection des prix sous forme de pourcentage.
Note
Lors de la création de la flotte, si vous définissez TargetCapacityUnitType sur vcpu ou memory-mib, le seuil de protection des prix est appliqué en fonction du prix par vCPU ou par mémoire au lieu du prix par instance.
Protection des performances
La protection des performances est une fonctionnalité qui garantit que votre flotte EC2 ou votre parc d’instances Spot utilise des types d’instances similaires ou supérieurs à une référence de performance spécifiée. Pour utiliser la protection des performances, vous devez spécifier une famille d’instances comme référence de référence. Les capacités de la famille d’instances spécifiée établissent le niveau de performance acceptable le plus bas. Lorsque Amazon EC2 sélectionne des types d’instance pour votre parc, il prend en compte les attributs que vous avez spécifiés et la référence de performance. Les types d’instances inférieurs à la référence de performance sont automatiquement exclus de la sélection, même s’ils correspondent aux autres attributs que vous avez spécifiés. Cela garantit que tous les types d’instances sélectionnés offrent des performances similaires ou supérieures à la base de référence établie par la famille d’instances spécifiée. Amazon EC2 utilise cette référence pour guider la sélection du type d’instance, mais rien ne garantit que les types d’instance sélectionnés dépasseront toujours la référence pour chaque application.
Actuellement, cette fonctionnalité prend uniquement en charge les performances du processeur en tant que facteur de performance de référence. Les performances du processeur du processeur de la famille d’instances spécifiée servent de référence en matière de performances, garantissant que les types d’instances sélectionnés sont similaires ou supérieurs à cette référence. Les familles d’instances dotées des mêmes processeurs produisent les mêmes résultats de filtrage, même si les performances de leur réseau ou de leur disque sont différentes. Par exemple, si vous spécifiez l’une c6in ou l’autre c6i comme référence de référence, vous obtiendrez des résultats de filtrage basés sur les performances identiques, car les deux familles d’instances utilisent le même processeur CPU.
Familles d’instances non prises en charge
Les familles d’instances suivantes ne sont pas prises en charge pour la protection des performances :
-
c1 -
g3|g3s -
hpc7g -
m1|m2 -
mac1|mac2|mac2-m1ultra|mac2-m2|mac2-m2pro -
p3dn|p4d|p5 -
t1 -
u-12tb1|u-18tb1|u-24tb1|u-3tb1|u-6tb1|u-9tb1|u7i-12tb|u7in-16tb|u7in-24tb|u7in-32tb
Si vous activez la protection des performances en spécifiant une famille d’instances prise en charge, les types d’instances renvoyés excluront les familles d’instances non prises en charge ci-dessus.
Si vous spécifiez une famille d’instances non prise en charge comme valeur de performance de référence, l’API renvoie une réponse vide pour GetInstanceTypesFromInstanceRequirements et une exception pour CreateFleet, RequestSpotFleet, ModifyFleet et ModifySpotFleetRequest.
Exemple : définir une référence de performance du processeur
Dans l’exemple suivant, l’instance doit être lancée avec des types d’instance dotés de cœurs de processeur aussi performants que la famille d’instances c6i. Cela filtrera les types d’instances dotés de processeurs moins performants, même s’ils répondent à vos autres exigences d’instance spécifiées, telles que le nombre de vCPU. Par exemple, si les attributs d’instance que vous avez spécifiés incluent 4 vCPU et 16 Go de mémoire, un type d’instance possédant ces attributs mais présentant des performances de processeur inférieures à celles c6i qui sera exclu de la sélection.
"BaselinePerformanceFactors": { "Cpu": { "References": [ { "InstanceFamily": "c6i" } ] }
Considérations
-
Vous pouvez spécifier des types d’instance ou des attributs d’instance dans un parc d’instances Spot, mais pas les deux en même temps.
Lorsque vous utilisez la CLI, les remplacements du modèle de lancement remplacent le modèle de lancement. Par exemple, si le modèle de lancement contient un type d’instance et que le remplacement du modèle de lancement contient des attributs d’instance, les instances identifiées par les attributs d’instance remplaceront le type d’instance dans le modèle de lancement.
-
Lorsque vous utilisez la CLI, si vous spécifiez des attributs d’instance comme remplacements, vous ne pouvez pas non plus spécifier de pondérations ou de priorités.
-
Vous pouvez spécifier un maximum de quatre structures
InstanceRequirementsdans une configuration de demande.
Créer une flotte EC2 avec une sélection de type d’instance basée sur des attributs
Vous pouvez configurer une flotte EC2 pour qu’elle utilise la sélection de type d’instance basée sur les attributs. Il n’est pas possible de créer une flotte EC2 à l’aide de la console Amazon EC2.
Les attributs de sélection du type d’instance basé sur des attributs sont spécifiés dans la structure InstanceRequirements. Lorsque InstanceRequirements est inclus dans la configuration de la flotte, InstanceType et WeightedCapacity doivent être exclus. Ils ne peuvent pas déterminer la configuration de la flotte en même temps que les attributs d’instance.
Dans les exemples AWS CLI et PowerShell, les attributs suivants sont spécifiés :
-
VCpuCount: au moins 2 vCPU et au plus 4 vCPU. Si vous n’avez pas besoin d’une limite maximale, vous pouvez omettre la valeur maximale. -
MemoryMiB: au moins 8 Gio et au plus 16 Gio de mémoire. Si vous n’avez pas besoin d’une limite maximale, vous pouvez omettre la valeur maximale.
Cette configuration identifie tous les types d’instances dotés de 2 à 4 vCPU et de 8 à 16 Gio de mémoire. Toutefois, la protection des prix et la stratégie d’allocation peuvent exclure certains types d’instances lorsque la flotte EC2 alloue la flotte.
Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs
Vous pouvez configurer une flotte pour qu’elle utilise la sélection de type d’instance basée sur les attributs.
Les attributs de sélection du type d’instance basé sur des attributs sont spécifiés dans la structure InstanceRequirements. Lorsque InstanceRequirements est inclus dans la configuration de la flotte, InstanceType et WeightedCapacity doivent être exclus. Ils ne peuvent pas déterminer la configuration de la flotte en même temps que les attributs d’instance.
Dans les exemples AWS CLI et PowerShell, les attributs suivants sont spécifiés :
-
VCpuCount: au moins 2 vCPU et au plus 4 vCPU. Si vous n’avez pas besoin d’une limite maximale, vous pouvez omettre la valeur maximale. -
MemoryMiB: au moins 8 Gio et au plus 16 Gio de mémoire. Si vous n’avez pas besoin d’une limite maximale, vous pouvez omettre la valeur maximale.
Cette configuration identifie tous les types d’instances dotés de 2 à 4 vCPU et de 8 à 16 Gio de mémoire. Toutefois, la protection des prix et la stratégie d’allocation peuvent exclure certains types d’instances lorsque le parc d’instances Spot alloue la flotte.
Exemples de configurations de flottes EC2 valides et non valides
Si vous utilisez la AWS CLI pour créer une flotte EC2, vous devez vous assurer de la validité de la configuration de la flotte. Les exemples suivants illustrent les configurations valides et non valides.
Les configurations sont considérées comme non valides lorsqu’elles contiennent les éléments suivants :
-
Une seule structure
OverridesavecInstanceRequirementsetInstanceType -
Deux structures
Overrides, l’une avecInstanceRequirementset l’autre avecInstanceType -
Deux structures
InstanceRequirementsavec des valeurs d’attributs qui se chevauchent au sein du mêmeLaunchTemplateSpecification
Exemples de configuration
Configuration valide : modèle de lancement unique avec remplacements
Configuration valide : modèle de lancement unique avec plusieurs InstanceRequirements
Configuration valide : deux modèles de lancement, chacun avec des remplacements
Configuration non valide : les Overrides contiennent InstanceRequirements et InstanceType
Configuration non valide : deux Overrides contiennent InstanceRequirements et InstanceType
Configuration non valide : chevauchement des valeurs d’attribut
Configuration valide : modèle de lancement unique avec remplacements
La configuration suivante est valide. Elle contient un modèle de lancement et une structure Overrides contenant une structure InstanceRequirements. Vous trouverez ci-dessous une explication textuelle de l’exemple de configuration.
{ "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 } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 5000, "DefaultTargetCapacityType": "spot", "TargetCapacityUnitType": "vcpu" } } }
InstanceRequirements
Pour utiliser la sélection d’instance basée sur les attributs, vous devez inclure la structure InstanceRequirements dans votre configuration de flotte et spécifier les attributs souhaités pour les instances de la flotte.
Dans l’exemple précédent, les attributs d’instance suivants sont spécifiés :
-
VCpuCount: les types d’instances doivent comporter au minimum 2 et au maximum 8 vCPU. -
MemoryMiB: les types d’instance doivent disposer d’un maximum de 10 240 Mio de mémoire. Un minimum de 0 indique qu’il n’y a pas de limite minimale. -
MemoryGiBPerVCpu: les types d’instance doivent disposer d’un maximum de 10 000 Gio de mémoire par vCPU. Le paramètreMinest facultatif. En l’omettant, vous n’indiquez aucune limite minimale.
TargetCapacityUnitType
Le paramètre TargetCapacityUnitType spécifie l’unité de la capacité cible. Dans cet exemple, la capacité cible est 5000 et le type d’unité de capacité cible est vcpu, qui spécifient ensemble une capacité cible souhaitée de 5 000 vCPU. La flotte EC2 lancera suffisamment d’instances pour que le nombre total de vCPU dans la flotte soit de 5 000.
Configuration valide : modèle de lancement unique avec plusieurs InstanceRequirements
La configuration suivante est valide. Elle contient un modèle de lancement et une structure Overrides contenant deux structures InstanceRequirements. Les attributs spécifiés dans InstanceRequirements sont valides car les valeurs ne se chevauchent pas. La première structure InstanceRequirements spécifie une VCpuCount de 0 à 2 vCPU, tandis que la seconde structure InstanceRequirements spécifie 4 à 8 vCPU.
{ "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 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configuration valide : deux modèles de lancement, chacun avec des remplacements
La configuration suivante est valide. Elle contient deux modèles de lancement, chacun contenant une structure Overrides contenant une structure InstanceRequirements. Cette configuration est utile pour la prise en charge des architectures arm et x86 au sein de la même flotte.
{ "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 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configuration valide : uniquement InstanceRequirements est spécifié, les valeurs d’attribut ne se chevauchent pas
La configuration suivante est valide. Elle contient deux structures LaunchTemplateSpecification, chacune avec un modèle de lancement et une structure Overrides contenant une structure InstanceRequirements. Les attributs spécifiés dans InstanceRequirements sont valides car les valeurs ne se chevauchent pas. La première structure InstanceRequirements spécifie une VCpuCount de 0 à 2 vCPU, tandis que la seconde structure InstanceRequirements spécifie 4 à 8 vCPU.
{ "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 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configuration non valide : les Overrides contiennent InstanceRequirements et InstanceType
La configuration suivante n’est pas valide. La structure Overrides contient à la fois InstanceRequirements et InstanceType. Pour les Overrides, vous pouvez spécifier InstanceRequirements ou InstanceType, mais pas les deux.
{
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
},
{
"InstanceType": "m5.large"
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Configuration non valide : deux Overrides contiennent InstanceRequirements et InstanceType
La configuration suivante n’est pas valide. Les structures Overrides contiennent à la fois InstanceRequirements et InstanceType. Vous pouvez spécifier InstanceRequirements ou InstanceType, mais pas les deux, même s’ils se trouvent dans différentes structures Overrides.
{
"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"
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Configuration non valide : chevauchement des valeurs d’attribut
La configuration suivante n’est pas valide. Les deux structures InstanceRequirements contiennent chacune "VCpuCount":
{"Min": 0, "Max": 2}. Les valeurs de ces attributs se chevauchent, ce qui entraîne des groupes de capacités en double.
{
"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
}
}
}
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Exemples de configurations du parc d’instances Spot valides et non valides
Si vous utilisez la AWS CLI pour créer un parc d’instances Spot, vous devez vous assurer que la configuration de votre flotte est valide. Les exemples suivants illustrent les configurations valides et non valides.
Les configurations sont considérées comme non valides lorsqu’elles contiennent les éléments suivants :
-
Une seule structure
OverridesavecInstanceRequirementsetInstanceType -
Deux structures
Overrides, l’une avecInstanceRequirementset l’autre avecInstanceType -
Deux structures
InstanceRequirementsavec des valeurs d’attributs qui se chevauchent au sein du mêmeLaunchTemplateSpecification
Exemples de configuration
Configuration valide : modèle de lancement unique avec remplacements
Configuration valide : modèle de lancement unique avec plusieurs InstanceRequirements
Configuration valide : deux modèles de lancement, chacun avec des remplacements
Configuration non valide : les Overrides contiennent InstanceRequirements et InstanceType
Configuration non valide : deux Overrides contiennent InstanceRequirements et InstanceType
Configuration non valide : chevauchement des valeurs d’attribut
Configuration valide : modèle de lancement unique avec remplacements
La configuration suivante est valide. Elle contient un modèle de lancement et une structure Overrides contenant une structure InstanceRequirements. Vous trouverez ci-dessous une explication textuelle de l’exemple de configuration.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012: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
Pour utiliser la sélection d’instance basée sur les attributs, vous devez inclure la structure InstanceRequirements dans votre configuration de flotte et spécifier les attributs souhaités pour les instances de la flotte.
Dans l’exemple précédent, les attributs d’instance suivants sont spécifiés :
-
VCpuCount: les types d’instances doivent comporter au minimum 2 et au maximum 8 vCPU. -
MemoryMiB: les types d’instance doivent disposer d’un maximum de 10 240 Mio de mémoire. Un minimum de 0 indique qu’il n’y a pas de limite minimale. -
MemoryGiBPerVCpu: les types d’instance doivent disposer d’un maximum de 10 000 Gio de mémoire par vCPU. Le paramètreMinest facultatif. En l’omettant, vous n’indiquez aucune limite minimale.
TargetCapacityUnitType
Le paramètre TargetCapacityUnitType spécifie l’unité de la capacité cible. Dans cet exemple, la capacité cible est 5000 et le type d’unité de capacité cible est vcpu, qui spécifient ensemble une capacité cible souhaitée de 5 000 vCPU. Le parc d’instances Spot lancera suffisamment d’instances pour que le nombre total de vCPU dans la flotte soit de 5 000.
Configuration valide : modèle de lancement unique avec plusieurs InstanceRequirements
La configuration suivante est valide. Elle contient un modèle de lancement et une structure Overrides contenant deux structures InstanceRequirements. Les attributs spécifiés dans InstanceRequirements sont valides car les valeurs ne se chevauchent pas. La première structure InstanceRequirements spécifie une VCpuCount de 0 à 2 vCPU, tandis que la seconde structure InstanceRequirements spécifie 4 à 8 vCPU.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012: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" } }
Configuration valide : deux modèles de lancement, chacun avec des remplacements
La configuration suivante est valide. Elle contient deux modèles de lancement, chacun contenant une structure Overrides contenant une structure InstanceRequirements. Cette configuration est utile pour la prise en charge des architectures arm et x86 au sein de la même flotte.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012: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" } }
Configuration valide : uniquement InstanceRequirements est spécifié, les valeurs d’attribut ne se chevauchent pas
La configuration suivante est valide. Elle contient deux structures LaunchTemplateSpecification, chacune avec un modèle de lancement et une structure Overrides contenant une structure InstanceRequirements. Les attributs spécifiés dans InstanceRequirements sont valides car les valeurs ne se chevauchent pas. La première structure InstanceRequirements spécifie une VCpuCount de 0 à 2 vCPU, tandis que la seconde structure InstanceRequirements spécifie 4 à 8 vCPU.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012: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" } }
Configuration non valide : les Overrides contiennent InstanceRequirements et InstanceType
La configuration suivante n’est pas valide. La structure Overrides contient à la fois InstanceRequirements et InstanceType. Pour les Overrides, vous pouvez spécifier InstanceRequirements ou InstanceType, mais pas les deux.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012: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"
}
}
Configuration non valide : deux Overrides contiennent InstanceRequirements et InstanceType
La configuration suivante n’est pas valide. Les structures Overrides contiennent à la fois InstanceRequirements et InstanceType. Vous pouvez spécifier InstanceRequirements ou InstanceType, mais pas les deux, même s’ils se trouvent dans différentes structures Overrides.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012: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"
}
}
Configuration non valide : chevauchement des valeurs d’attribut
La configuration suivante n’est pas valide. Les deux structures InstanceRequirements contiennent chacune "VCpuCount":
{"Min": 0, "Max": 2}. Les valeurs de ces attributs se chevauchent, ce qui entraîne des groupes de capacités en double.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012: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"
}
}
Aperçu des types d’instances avec des attributs spécifiés
Vous pouvez utiliser la commande get-instance-types-from-instance-requirements pour prévisualiser les types d’instance qui correspondent aux attributs que vous spécifiez. Cela est particulièrement utile pour déterminer les attributs à spécifier dans la configuration de votre demande sans lancer d’instance. Notez que la commande ne prend pas en compte la capacité disponible.
Pour prévisualiser une liste de types d’instance en spécifiant des attributs à l’aide de la AWS CLI
-
(Facultatif) Pour générer tous les attributs possibles pouvant être spécifiés, utilisez la commande get-instance-types-from-instance-requirements et le paramètre
--generate-cli-skeleton. Vous pouvez éventuellement rediriger la sortie vers un fichier pour l’enregistrer à l’aide deinput >.attributes.jsonaws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input >attributes.jsonSortie attendue
{ "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": "" } -
Créez un fichier de configuration JSON à l’aide de la sortie de l’étape précédente et configurez-le comme suit :
Note
Vous devez fournir des valeurs pour
ArchitectureTypes,VirtualizationTypes,VCpuCountetMemoryMiB. Vous pouvez omettre les autres attributs. Lorsqu’ils sont omis, les valeurs par défaut sont utilisées.Pour obtenir une description de chaque attribut et de leurs valeurs par défaut, consultez la section get-instance-types-from-instance-requirements.
-
Pour
ArchitectureTypes, spécifiez un ou plusieurs types d’architecture de processeur. -
Pour
VirtualizationTypes, spécifiez un ou plusieurs types de virtualisation. -
Pour
VCpuCount, spécifiez le nombre minimum et maximum de vCPU. Pour ne spécifier aucune limite minimale, pourMin, spécifiez0. Pour ne spécifier aucune limite maximale, omettez le paramètreMax. -
Pour
MemoryMiB, spécifiez la quantité minimale et maximale de mémoire en Mio. Pour ne spécifier aucune limite minimale, pourMin, spécifiez0. Pour ne spécifier aucune limite maximale, omettez le paramètreMax. -
Vous pouvez éventuellement spécifier un ou plusieurs autres attributs pour limiter davantage la liste des types d’instance renvoyés.
-
-
Pour afficher un aperçu des types d’instance qui possèdent les attributs que vous avez spécifiés dans le fichier JSON, utilisez la commande get-instance-types-from-instance-requirements et spécifiez le nom et le chemin d’accès à votre fichier JSON à l’aide du paramètre
--cli-input-json. Vous pouvez éventuellement formater la sortie pour qu’elle apparaisse dans un format de tableau.aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json\ --output tableFichier
attributes.jsond’exempleDans cet exemple, les attributs requis sont inclus dans le fichier JSON. Ils sont
ArchitectureTypes,VirtualizationTypes,VCpuCountetMemoryMiB. En outre, l’attribut facultatifInstanceGenerationsest également inclus. Notez que pourMemoryMiB, la valeurMaxpeut être omise pour indiquer qu’aucune limite n’est applicable.{ "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }Exemple de sortie
------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || d2.xlarge || ... -
Après avoir identifié les types d’instance qui répondent à vos besoins, prenez note des attributs d’instance que vous avez utilisés afin que vous puissiez les utiliser lors de la configuration de votre demande de flotte.