Sélection de type d’instance basée sur des attributs pour un parc d’instances Spot - 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.

Sélection de type d’instance basée sur des attributs pour un parc d’instances Spot

Lorsque vous créez un parc d’instances Spot, vous devez spécifier un ou plusieurs types d’instance pour 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 minimal et maximal de vCPU requis pour vos instances, et le parc d’instances Spot lancera les instances à l’aide de tous les types d’instance disponibles répondant à 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 :

  • 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 de spots, 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é du type d'instance — Lorsque vous spécifiez des attributs d'instance plutôt que des types d'instance, Spot Fleet 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'instance.

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. Le parc d’instances Spot lance des instances sur tous les types d’instance 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 :

  • Nombre de vCPU : nombre minimum et maximum de vCPU par instance.

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

  • Stockage local : s'il faut utiliser EBS ou des volumes de stockage d'instance 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 le InstanceRequirementsmanuel 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 l’un des composants ou les deux 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 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, et 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.

  • Dans une spécification de lancement

Comment le parc d’instances Spot utilise la sélection de type d’instance basée sur des attributs lors de l’approvisionnement d’une flotte

Le parc d’instances Spot alloue une flotte de la manière suivante :

  • Le parc d’instances Spot identifie les types d’instance qui possèdent les attributs spécifiés.

  • Le parc d’instances Spot utilise la protection des prix pour déterminer les types d’instance à exclure.

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

  • Le parc d’instances Spot applique la stratégie d’allocation spécifiée pour déterminer les groupes de capacités à partir desquels lancer les instances.

    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’allocation. Il peut y avoir un grand nombre de types d’instances avec des attributs spécifiés, et certains d’entre eux peuvent être coûteux.

    Si vous spécifiez une stratégie d'allocation, le parc d'instances Spot lance des instances conformément à 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 capacityOptimizedPrioritized et capacityOptimized.

    • Pour les instances à la demande, la sélection du type d'instance basée sur les attributs soutient la stratégie lowestPrice d'allocation, qui garantit que Spot Fleet lancera des instances à la demande à partir des pools de capacités les moins coûteux.

  • 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 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, 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 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 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 applique automatiquement une protection optimale du prix 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, laisser Amazon EC2 le faire à 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 spécifier le seuil de protection des prix

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, puis procédez comme suit :

  • Console

    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). Pour On-Demand price protection percentage (Pourcentage de protection des prix à la demande), saisissez le seuil de protection des prix sous forme de pourcentage.

    Pour spécifier le seuil de protection des prix des instances Spot, sous Additional instance attribute (Attribut d’instance supplémentaire), choisissez Spot price protection (Protection des prix Spot), puis Add attribute (Ajouter un attribut). Choisissez un paramètre et entrez le seuil de protection des prix sous forme de pourcentage.

  • AWS CLI

    Pour spécifier le seuil de protection des prix de l’instance à la demande, dans le fichier de configuration JSON, dans la structure InstanceRequirements, pour OnDemandMaxPricePercentageOverLowestPrice, saisissez 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 configuration JSON, 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 sur la création de flottes, veuillez consulter Créer un parc d’instances Spot avec une sélection de type d’instance basée sur des attributs.

Note

Lors de la création du parc d’instances Spot, si vous définissez le type de Total target capacity (Capacité cible totale) sur vCPUs ou Memory (MiB) (Mémoire (MiB)) (console) ou TargetCapacityUnitType sur vcpu ou memory-mib (AWS CLI), le seuil de protection des prix s’applique en fonction du prix par vCPU ou par mémoire au lieu du prix par instance.

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 InstanceRequirements dans une configuration de demande.

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 des attributs à l’aide de la console Amazon EC2 ou de la 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 console Amazon EC2 à 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 plus d’informations, consultez 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 vCPU, saisissez les nombres minimum et maximum de vCPU souhaités. 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 une flotte de spots à l'aide du 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 de flotte dans un fichier JSON.

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 : au moins 2 vCPU sont spécifiés. 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.

Tout type d’instance doté d’au moins 2 vCPU et d’au moins 4 Mio de mémoire sera identifié. 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 le InstanceRequirementsmanuel Amazon EC2 API Reference.

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.

Le JSON 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 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 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è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 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::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 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::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'instances en spécifiant des attributs à l'aide du 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 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, 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 dans le manuel Amazon EC2 Command Line Reference.

    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. Pour VCpuCount, spécifiez le nombre minimum et maximum de vCPU. 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 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 table

    Fichier attributes.json d’exemple

    Dans cet exemple, les attributs requis sont inclus dans le fichier JSON. 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 || || c6a.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.