Spécifiez les attributs pour la sélection du type d'instance pour EC2 Fleet ou Spot Fleet - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécifiez les attributs pour la sélection du type d'instance pour EC2 Fleet ou Spot Fleet

Lorsque vous créez un EC2 parc ou un parc ponctuel, vous devez spécifier un ou plusieurs types d'instances pour configurer les instances à la demande et les instances ponctuelles du parc. Au lieu de spécifier manuellement les types d'instances, vous pouvez spécifier les attributs qu'une instance doit avoir, et Amazon EC2 identifiera tous les types d'instances 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 d'instances vCPUs requises pour vos instances, et le parc lancera les instances en utilisant tous les types d'instances disponibles qui répondent à ces CPU exigences.

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 :

  • Utilisez facilement les bons types d'instances : compte tenu du grand nombre de types d'instances disponibles, la recherche des types d'instances adaptés à 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 un parc, 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'instances, votre parc peut utiliser des types d'instances de nouvelle génération au fur et à mesure de leur publication, afin de « pérenniser » la configuration du parc.

  • Flexibilité des types d'instances : lorsque vous spécifiez des attributs d'instance plutôt que des types d'instances, le parc peut choisir parmi un large éventail de types d'instances pour lancer des instances Spot, conformément aux meilleures pratiques Spot en matière de flexibilité des types d'instances.

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. EC2Fleet ou Spot Fleet lancera des instances sur tous les types d'instances disponibles possédant les attributs d'instance spécifiés.

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 :

  • v CPU count — Le nombre minimum et maximum de vCPUs par instance.

  • Mémoire : mémoire minimale et maximale GiBs par instance.

  • Stockage local : s'il faut utiliser EBS ou instancier des volumes de stockage pour le stockage local.

  • Performances éclatantes : s'il faut utiliser la famille d'instances T, y compris les types T4g, T3a, T3 et T2.

Pour une description de chaque attribut et des valeurs par défaut, consultez InstanceRequirementsle Amazon EC2 API Reference.

Où configurer la sélection de type d’instance basée sur des attributs

Selon que vous utilisez la console ou le AWS CLI, vous pouvez spécifier les attributs d'instance pour la sélection du type d'instance basée sur les attributs comme suit :

Dans la console, vous pouvez spécifier les attributs d'instance dans les 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

  • (Spot Fleet uniquement) Dans la demande de flotte

Dans le 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 une combinaison d'instances utilisant différentes optionsAMIs, vous pouvez spécifier des attributs d'instance dans le cadre de plusieurs remplacements de modèles de lancement. Par exemple, différents types d’instance peuvent utiliser des processeurs x86 et Arm.

  • (Spot Fleet uniquement) Dans une spécification de lancement

Comment EC2 Fleet ou Spot Fleet utilise la sélection du type d'instance basée sur les attributs lors du provisionnement d'une flotte

EC2Fleet ou Spot Fleet approvisionne une flotte de la manière suivante :

  • Il identifie les types d'instances dotés des attributs spécifiés.

  • Il utilise la protection des prix pour déterminer les types d'instances à exclure.

  • Il détermine les pools de capacité à partir desquels il envisagera de lancer les instances en fonction des AWS régions ou des zones de disponibilité ayant les types d'instances correspondants.

  • Il applique la stratégie d'allocation spécifiée pour déterminer à partir de quels pools de capacités lancer les instances.

    Notez que la sélection du type d'instance basée sur les attributs ne permet pas de sélectionner les pools de capacités à partir desquels approvisionner le parc ; c'est le travail des stratégies d'allocation.

    Si vous spécifiez une stratégie d'allocation, la flotte lancera des instances conformément à la stratégie d'allocation spécifiée.

    • Pour les instances Spot, la sélection du type d'instance basée sur les attributs prend en charge les stratégies d'optimisation de la capacité en termes de prix, d'optimisation de la capacité et d'allocation du prix le plus bas. 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'allocation 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 fonctionnalité qui empêche votre EC2 flotte ou votre flotte ponctuelle d'utiliser des types d'instances que vous jugeriez trop coûteux, 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, lorsqu'Amazon EC2 sélectionne des types d'instances avec vos attributs, il exclut les types d'instances dont le prix est supérieur à votre seuil.

Amazon EC2 calcule le seuil de prix de la manière suivante :

  • Amazon identifie EC2 d'abord le type d'instance le moins cher parmi ceux qui correspondent à vos attributs.

  • Amazon prend EC2 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 les instances ponctuelles.

Lorsque vous créez un parc avec sélection du 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 définir les vôtres.

Vous pouvez également désactiver la protection des prix. Pour n'indiquer aucun seuil de protection des prix, spécifiez une valeur en pourcentage élevée, telle que999999.

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 manière 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 des instances à 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 On-Demand identifié est0.4271, et que vous le spécifiez25, 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 des prix des instances Spot

Par défaut, Amazon EC2 appliquera automatiquement une protection tarifaire optimale des instances Spot afin de sélectionner de manière cohérente un large éventail de types d'instances. Vous pouvez également définir vous-même la protection des prix manuellement. Toutefois, le fait de laisser Amazon EC2 s'en occuper à votre place peut améliorer les chances que votre capacité Spot soit atteinte.

Vous pouvez définir manuellement la protection des prix à l'aide de l'une des options 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 On-Demand identifié est0.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é est0.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. Nous vous déconseillons d'utiliser ce paramètre car les prix au comptant peuvent fluctuer et, par conséquent, votre seuil de protection contre les prix peut également fluctuer.

Spécifiez le seuil de protection des prix

Pour définir le seuil de protection des prix à l'aide du AWS CLI

Lors de la création d'un EC2 parc ou d'un parc ponctuel à l'aide du AWS CLI, configurez le parc pour la sélection du type d'instance basé sur les attributs, puis procédez comme suit :

  • Pour spécifier le seuil de protection des prix des instances à la demande, dans le fichier de JSON configuration, dans la InstanceRequirements structure, pourOnDemandMaxPricePercentageOverLowestPrice, entrez le seuil de protection des prix sous forme de pourcentage.

  • Pour spécifier le seuil de protection des prix des instances Spot, dans le fichier de JSON configuration, dans la InstanceRequirements structure, spécifiez l'un des paramètres suivants :

    • PourMaxSpotPriceAsPercentageOfOptimalOnDemandPrice, entrez le seuil de protection des prix sous forme de pourcentage.

    • PourSpotMaxPricePercentageOverLowestPrice, entrez le seuil de protection des prix sous forme de pourcentage.

Pour plus d’informations, consultez Création d'une EC2 flotte avec sélection du type d'instance basée sur les attributs ou Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs.

(Spot Fleet uniquement) Pour spécifier le seuil de protection des prix à l'aide de la console

Lors de la création d'un parc de spots dans la console, configurez le parc pour la sélection du type d'instance basé sur les attributs, puis procédez comme suit :

  • Pour spécifier le seuil de protection des prix des instances à la demande, sous Attribut d'instance supplémentaire, choisissez Protection des prix à la demande, choisissez Ajouter un attribut, puis entrez le seuil de protection des prix sous forme de pourcentage.

  • Pour spécifier le seuil de protection des prix des instances Spot, attribut d'instance supplémentaire, choisissez Protection des prix ponctuels, choisissez Ajouter un attribut, choisissez une valeur de base sur laquelle baser votre prix, puis entrez le seuil de protection des prix sous forme de pourcentage.

Note

Lors de la création du parc, si vous définissez TargetCapacityUnitType vcpu oumemory-mib, le seuil de protection des prix est appliqué en fonction du prix par v CPU ou par mémoire plutôt que du prix par instance.

Considérations

  • Vous pouvez spécifier des types d'instances ou des attributs d'instance dans un EC2 parc ou un parc ponctuel, mais pas les deux en même temps.

    Lorsque vous utilisez leCLI, les remplacements du modèle de lancement remplaceront 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 leCLI, lorsque vous spécifiez des attributs d'instance en tant que remplacements, vous ne pouvez pas également spécifier de poids ou de priorités.

  • Vous pouvez spécifier un maximum de quatre structures InstanceRequirements dans une configuration de demande.

Création d'une EC2 flotte avec sélection du type d'instance basée sur les attributs

Vous pouvez configurer un EC2 parc pour utiliser la sélection du type d'instance basée sur les attributs à l'aide du. AWS CLI

Pour créer une EC2 flotte avec une sélection de type d'instance basée sur les attributs ()AWS CLI

Utilisez la commande create-fleet (AWS CLI) pour créer une EC2 flotte. Spécifiez la configuration du parc dans un JSON fichier.

aws ec2 create-fleet \ --region us-east-1 \ --cli-input-json file://file_name.json

Exemple de fichier file_name.json

L'exemple suivant contient les paramètres qui configurent une EC2 flotte pour utiliser la sélection du type d'instance basée sur les attributs, et est suivi d'une explication textuelle.

{ "SpotOptions": { "AllocationStrategy": "price-capacity-optimized" }, "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }], "TargetCapacitySpecification": { "TotalTargetCapacity": 20, "DefaultTargetCapacityType": "spot" }, "Type": "instant" }

Les attributs de sélection du type d’instance basé sur des attributs sont spécifiés dans la structure InstanceRequirements. Dans cet exemple, deux attributs sont spécifiés :

  • VCpuCount— Un minimum de 2 vCPUs est spécifié. Comme aucun maximum n’est spécifié, il n’y a pas de limite maximale.

  • MemoryMiB : au moins 4 Mio de mémoire sont spécifiés. Comme aucun maximum n’est spécifié, il n’y a pas de limite maximale.

Tous les types d'instance dotés de 2 ou plus vCPUs et de 4 Mo de mémoire ou plus seront identifiés. Cependant, la protection des prix et la stratégie d'allocation peuvent exclure certains types d'instances lorsque EC2Fleet approvisionne la flotte.

Pour obtenir une liste et une description de tous les attributs possibles que vous pouvez spécifier, consultez InstanceRequirementsla EC2APIréférence Amazon.

Note

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.

JSONIl contient également la configuration de flotte suivante :

  • "AllocationStrategy": "price-capacity-optimized" : la stratégie d’allocation des instances Spot de la flotte.

  • "LaunchTemplateName": "my-launch-template", "Version": "1" : le modèle de lancement contient certaines informations de configuration d’instance, mais si des types d’instance sont spécifiés, ils seront remplacés par les attributs spécifiés dans InstanceRequirements.

  • "TotalTargetCapacity": 20 : la capacité cible est de 20 instances Spot.

  • "DefaultTargetCapacityType": "spot" : la capacité par défaut est celle des instances Spot.

  • "Type": "instant" : le type de demande pour la flotte est instant.

Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs

Vous pouvez configurer un parc pour utiliser la sélection du type d'instance basée sur les attributs à l'aide de EC2 la console Amazon ou du. AWS CLI

Créer un parc d’instances Spot à l’aide de la console

Pour configurer un parc d’instances Spot pour la sélection de type d’instance basée sur des attributs (console)
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Spot Requests (Demandes Spot) et sélectionnez Request Spot Instances (Demander des instances Spot).

  3. Suivez les étapes permettant de créer un parc d’instances Spot. Pour de plus amples informations, veuillez consulter Création d’une demande de parc d’instances Spot à l’aide des paramètres définis (console).

    Lors de la création du parc d’instances Spot, configurez la flotte pour la sélection du type d’instance basée sur des attributs comme suit :

    1. Pour Instance type requirements (Exigences de type d’instance), choisissez Specify instance attributes that match your compute requirements (Spécifiez les attributs d’instance qui correspondent à vos exigences de calcul).

    2. Pour vCPUs, entrez le nombre minimum et maximum souhaités devCPUs. Pour ne spécifier aucune limite, sélectionnez No minimum (Pas de minimum), No maximum (Pas de maximum), ou les deux.

    3. Pour Memory (GiB) (Mémoire (Gio)), saisissez la quantité minimale et maximale de mémoire souhaitée. Pour ne spécifier aucune limite, sélectionnez No minimum (Pas de minimum), No maximum (Pas de maximum), ou les deux.

    4. (Facultatif) Pour Additional instance attributes (Attributs d’instance supplémentaires), vous pouvez éventuellement spécifier un ou plusieurs attributs pour exprimer vos exigences de calcul plus en détail. Chaque attribut supplémentaire ajoute des contraintes supplémentaires à votre demande.

    5. (Facultatif) Pour afficher les types d’instance avec vos attributs spécifiés, développez Preview matching instance types (Aperçu des types d’instance correspondants).

Créez un parc d'instances Spot à l'aide de AWS CLI

Pour configurer un parc d’instances Spot pour la sélection de type d’instance basée sur des attributs (AWS CLI)

Utilisez la commande request-spot-fleet(AWS CLI) pour créer un parc de spots. Spécifiez la configuration du parc dans un JSON fichier.

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

Exemple de fichier file_name.json

L’exemple suivant contient les paramètres qui configurent un parc d’instances Spot afin qu’il utilise la sélection de type d’instance basée sur des attributs et est suivi d’une explication textuelle.

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

Les attributs de sélection du type d’instance basé sur des attributs sont spécifiés dans la structure InstanceRequirements. Dans cet exemple, deux attributs sont spécifiés :

  • VCpuCount— Un minimum de 2 vCPUs est spécifié. Comme aucun maximum n’est spécifié, il n’y a pas de limite maximale.

  • MemoryMiB : au moins 4 Mio de mémoire sont spécifiés. Comme aucun maximum n’est spécifié, il n’y a pas de limite maximale.

Tous les types d'instance dotés de 2 ou plus vCPUs et de 4 Mo de mémoire ou plus seront identifiés. 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.

Pour obtenir une liste et une description de tous les attributs possibles que vous pouvez spécifier, consultez InstanceRequirementsla EC2APIréférence Amazon.

Note

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.

JSONIl contient également la configuration de flotte suivante :

  • "AllocationStrategy": "priceCapacityOptimized" : la stratégie d’allocation des instances Spot de la flotte.

  • "LaunchTemplateName": "my-launch-template", "Version": "1" : le modèle de lancement contient certaines informations de configuration d’instance, mais si des types d’instance sont spécifiés, ils seront remplacés par les attributs spécifiés dans InstanceRequirements.

  • "TargetCapacity": 20 : la capacité cible est de 20 instances Spot.

  • "Type": "request" : le type de demande pour la flotte est request.

Exemples de configurations de EC2 flotte valides et non valides

Si vous utilisez le AWS CLI pour créer une EC2 flotte, 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 Overrides avec InstanceRequirements et InstanceType

  • Deux structures Overrides, l’une avec InstanceRequirements et l’autre avec InstanceType

  • Deux structures InstanceRequirements avec des valeurs d’attributs qui se chevauchent au sein du même LaunchTemplateSpecification

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 en avoir un minimum de 2 et un maximum de 8vCPUs.

  • 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 GiB de mémoire par v. CPU Le paramètre Min est facultatif. En l’omettant, vous n’indiquez aucune limite minimale.

TargetCapacityUnitType

Le paramètre TargetCapacityUnitType spécifie l’unité de la capacité cible. Dans l'exemple, la capacité cible est 5000 et le type d'unité de capacité cible estvcpu, ce qui définit ensemble une capacité cible souhaitée de 5 000vCPUs. EC2Fleet lancera suffisamment d'instances pour que le nombre total d'instances vCPUs de la flotte soit de 5 000vCPUs.

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 InstanceRequirements structure indique une VCpuCount valeur comprise entre 0 et 2vCPUs, tandis que la seconde InstanceRequirements indique 4 à 8. vCPUs

{ "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 InstanceRequirements structure indique une VCpuCount valeur comprise entre 0 et 2vCPUs, tandis que la seconde InstanceRequirements indique 4 à 8. vCPUs

{ "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 de parc Spot valides et non valides

Si vous utilisez le AWS CLI pour créer une flotte ponctuelle, 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 Overrides avec InstanceRequirements et InstanceType

  • Deux structures Overrides, l’une avec InstanceRequirements et l’autre avec InstanceType

  • Deux structures InstanceRequirements avec des valeurs d’attributs qui se chevauchent au sein du même LaunchTemplateSpecification

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::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

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 en avoir un minimum de 2 et un maximum de 8vCPUs.

  • 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 GiB de mémoire par v. CPU Le paramètre Min est facultatif. En l’omettant, vous n’indiquez aucune limite minimale.

TargetCapacityUnitType

Le paramètre TargetCapacityUnitType spécifie l’unité de la capacité cible. Dans l'exemple, la capacité cible est 5000 et le type d'unité de capacité cible estvcpu, ce qui définit ensemble une capacité cible souhaitée de 5 000vCPUs. Spot Fleet lancera suffisamment d'instances pour que le nombre total d'instances vCPUs de la flotte soit de 5 000vCPUs.

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 InstanceRequirements structure indique une VCpuCount valeur comprise entre 0 et 2vCPUs, tandis que la seconde InstanceRequirements indique 4 à 8. vCPUs

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "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" } }

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::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" } }

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 InstanceRequirements structure indique une VCpuCount valeur comprise entre 0 et 2vCPUs, tandis que la seconde InstanceRequirements indique 4 à 8. vCPUs

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "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" } }

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::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" } }

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::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" } }

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::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" } }

Aperçu des types d’instances avec des attributs spécifiés

Vous pouvez utiliser la AWS CLI commande get-instance-types-from-instance-requirements pour prévisualiser les types d'instances 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
  1. (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 de input > attributes.json.

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

    Sortie 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": "" }
  2. Créez un fichier JSON de configuration en utilisant le résultat de l'étape précédente et configurez-le comme suit :

    Note

    Vous devez fournir des valeurs pour ArchitectureTypes, VirtualizationTypes, VCpuCount et MemoryMiB. Vous pouvez omettre les autres attributs. Lorsqu’ils sont omis, les valeurs par défaut sont utilisées.

    Pour une description de chaque attribut et de leurs valeurs par défaut, consultez get-instance-types-from-instance-requirements.

    1. Pour ArchitectureTypes, spécifiez un ou plusieurs types d’architecture de processeur.

    2. Pour VirtualizationTypes, spécifiez un ou plusieurs types de virtualisation.

    3. PourVCpuCount, spécifiez le nombre minimum et maximum devCPUs. Pour ne spécifier aucune limite minimale, pour Min, spécifiez 0. Pour ne spécifier aucune limite maximale, omettez le paramètre Max.

    4. Pour MemoryMiB, spécifiez la quantité minimale et maximale de mémoire en Mio. Pour ne spécifier aucune limite minimale, pour Min, spécifiez 0. Pour ne spécifier aucune limite maximale, omettez le paramètre Max.

    5. Vous pouvez éventuellement spécifier un ou plusieurs autres attributs pour limiter davantage la liste des types d’instance renvoyés.

  3. Pour prévisualiser les types d'instances dotés des attributs que vous avez spécifiés dans le JSON fichier, utilisez la commande get-instance-types-from-instance-requirements et spécifiez le nom et le chemin d'accès à votre JSON fichier à 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 table

    Exemple attributes.json dans le fichier

    Dans cet exemple, les attributs requis sont inclus dans le JSON fichier. Ils sont ArchitectureTypes, VirtualizationTypes, VCpuCount et MemoryMiB. En outre, l’attribut facultatif InstanceGenerations est également inclus. Notez que pour MemoryMiB, la valeur Max peut ê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 || ...
  4. 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.