Travailler avec Flottes EC2 - 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.

Travailler avec Flottes EC2

Pour commencer à utiliser une flotte EC2, vous créez une demande comprenant la capacité cible totale, une capacité à la demande, une capacité Spot, une ou plusieurs spécifications de lancement pour les instances et le prix maximum que vous êtes prêt à payer. La demande de flotte d’instances doit inclure un modèle de lancement qui définit les informations dont la flotte d’instances a besoin pour lancer une instance, par exemple une AMI, un type d’instance, un sous-réseau ou une zone de disponibilité, et un ou plusieurs groupes de sécurité. Vous pouvez spécifier des remplacements de spécification de lancement pour le type d’instance, le sous-réseau, la zone de disponibilité et le prix maximum que vous êtes prêt à payer, et vous pouvez affecter une capacité pondérée à chaque remplacement de spécification de lancement.

La flotte EC2 lance des instances à la demande lorsque la capacité requise est disponible, et il lance des instances Spot lorsque votre prix maximum dépasse le prix spot et que la capacité est disponible.

Si votre flotte d’instances inclut des instances Spot, Amazon EC2 tente de maintenir la capacité cible de votre flotte d’instances au fur et à mesure de l’évolution des prix Spot.

Une demande de Flotte EC2 de type maintain ou request reste active jusqu’à ce qu’elle arrive à expiration ou que vous la supprimiez. Lorsque vous supprimez une flotte de type maintain ou request, vous pouvez spécifier si la suppression résilie les instances de la flotte. Autrement, les instances à la demande s’exécutent jusqu’à ce que vous les résiliiez, et les instances Spot s’exécutent jusqu’à ce qu’elles soient interrompues ou que vous les résiliiez.

États des demandes flotte EC2

Une demande de flotte EC2 peut avoir l’un des états suivants :

submitted

La demande de flotte EC2 est en cours d’évaluation et Amazon EC2 se prépare à lancer le nombre cible d’instances. La demande peut inclure instances à la demande, instances Spot, ou les deux. Si une requête dépasse les limites de votre flotte, elle est immédiatement supprimée.

active

La demande de flotte EC2 a été validée et Amazon EC2 tente de conserver le nombre cible d’instances en cours d’exécution. La demande conserve cet état jusqu’à ce qu’elle soit modifiée ou supprimée.

modifying

La demande de flotte EC2 est en cours de modification. La demande conserve cet état jusqu’à ce que la modification soit totalement traitée ou que la demande soit supprimée. Seul une flotte de type maintain peut être modifié. Cet état ne s’applique pas aux autres types de demandes.

deleted_running

La demande de flotte EC2 est supprimée et ne lance pas d’instances supplémentaires. Ses instances existantes continuent de s’exécuter jusqu’à ce qu’elles soient interrompues ou résiliées manuellement. La demande conserve cet état jusqu’à ce que toutes les instances soient interrompues ou mises hors service. Seule un Flotte EC2 de type maintain ou request peut avoir des instances en cours d’exécution après la suppression de la demande de Flotte EC2. Une flotte instant supprimé avec des instances en cours d’exécution n’est pas pris en charge. Cet état ne s’applique pas aux flottesinstant.

deleted_terminating

La demande de flotte EC2 est supprimée et ses instances sont résiliées. La demande conserve cet état jusqu’à ce que toutes les instances soient mises hors service.

deleted

La flotte EC2 est supprimé et n’a aucune instance en cours d’exécution. La demande est supprimée deux jours après la mise hors service de ses instances.

Conditions préalables requises flotte EC2

Modèle de lancement

Un modèle de lancement inclut des informations sur les instances à lancer, telles que le type d’instance, la zone de disponibilité et le prix maximum que vous êtes disposé à payer. Pour plus d’informations, consultez Lancer une instance à partir d’un modèle de lancement.

Rôle lié à un service pour flotte EC2

Le rôle AWSServiceRoleForEC2Fleet accorde à la flotte EC2 l’autorisation de demander, lancer, résilier et étiqueter des instances en votre nom. Amazon EC2 utilise ce rôle lié à un service pour effectuer les actions suivantes :

  • ec2:RunInstances – Lancer des instances

  • ec2:RequestSpotInstances – Demander des Instances Spot.

  • ec2:TerminateInstances – Résilier des instances

  • ec2:DescribeImages – Décrire des AMI (Amazon Machine Image) pour les Instances Spot

  • ec2:DescribeInstanceStatus – Décrire le statut des Instances Spot.

  • ec2:DescribeSubnets – Décrire les sous-réseaux pour les Instances Spot.

  • ec2:CreateTags – Ajoutez des balises aux Flotte EC2, aux instances et aux volumes.

Assurez-vous que ce rôle existe avant d'utiliser l'API AWS CLI ou une API pour créer une flotte EC2.

Note

Un instant Flotte EC2 ne requiert pas ce rôle.

Pour créer le rôle, utilisez la console IAM comme suit.

Pour créer le AWSServiceRoleForEC2Fleet rôle pour EC2 Fleet
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, sélectionnez Rôles, puis Créer un rôle.

  3. Sur la page Sélectionner le type d'entité de confiance, procédez comme suit :

    1. Pour Type d’entité de confiance, choisissez Service AWS .

    2. Sous Cas d'utilisation, pour Service ou cas d'utilisation, choisissez EC2 - Fleet.

      Astuce

      Assurez-vous de choisir EC2 - Fleet. Si vous choisissez EC2, le cas d'utilisation EC2 - Fleet n'apparaît pas dans la liste des cas d'utilisation. Le cas d'utilisation d'EC2 - Fleet créera automatiquement une politique avec les autorisations IAM requises et suggérera le AWSServiceRoleForEC2Fleetnom du rôle.

    3. Choisissez Suivant.

  4. Sur la page Ajouter des autorisations, sélectionnez Suivant.

  5. Sur la page Nommer, vérifier et créer, choisissez Créer un rôle.

Si vous n'avez plus besoin d'utiliser EC2 Fleet, nous vous recommandons de supprimer le AWSServiceRoleForEC2Fleetrôle. Après la suppression de ce rôle de votre compte, vous pouvez créer de nouveau le rôle si vous créez une autre flotte

Pour plus d’informations, consultez Utilisation des rôles liés à un service dans le Guide de l’utilisateur IAM.

Octroyer un accès aux clés gérées par le client en vue de leur utilisation avec les AMI chiffrées et les instantanés EBS

Si vous spécifiez une AMI chiffrée ou un instantané Amazon EBS chiffré dans votre flotte EC2 et que vous utilisez une AWS KMS clé pour le chiffrement, vous devez accorder au AWSServiceRoleForEC2Fleetrôle l'autorisation d'utiliser la clé gérée par le client afin qu'Amazon EC2 puisse lancer des instances en votre nom. Pour cela, vous devez ajouter une autorisation à la clé gérée par le client, comme indiqué dans la procédure suivante.

Lorsque vous définissez les autorisations, les octrois constituent une alternative aux politiques de clé. Pour plus d’informations, consultez les rubriques Utilisation des octrois et Utilisation des politiques de clé dans AWS KMS dans le Guide du développeur AWS Key Management Service .

Pour accorder au AWSServiceRoleForEC2Fleet rôle l'autorisation d'utiliser la clé gérée par le client
  • Utilisez la commande create-grant pour ajouter une autorisation à la clé gérée par le client et pour spécifier le principal (le rôle AWSServiceRoleForEC2Fleetlié au service) autorisé à effectuer les opérations autorisées par l'autorisation. La clé gérée par le client est spécifiée par le paramètre key-id et l’ARN de la clé gérée par le client. Le principal est spécifié par le grantee-principal paramètre et l'ARN du rôle AWSServiceRoleForEC2Fleetlié au service.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Fleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Autorisations pour les utilisateurs de la flotte d’instances EC2

Si vos utilisateurs sont appelés à créer ou à gérer une flotte EC2, veillez à leur accorder les autorisations nécessaires.

Pour créer une politique pour la flotte d’instances EC2
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, choisissez Policies (Politiques).

  3. Sélectionnez Create policy (Créer une politique).

  4. Sur la page Créer une stratégie, choisissez l’onglet JSON, remplacez le texte par le suivant, puis choisissez Examiner une stratégie.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole", "iam:ListInstanceProfiles" ], "Resource":"arn:aws:iam::123456789012:role/DevTeam*" } ] }

    La fonction ec2:* accorde à un utilisateur l’autorisation d’appeler toutes les actions d’API Amazon EC2. Pour limiter les actions API Amazon EC2 susceptibles d’être effectuées par l’utilisateur, spécifiez celles qui sont autorisées.

    L’utilisateur doit être autorisé à appeler l’action iam:ListRoles pour énumérer les rôles IAM existants, l’action iam:PassRole pour spécifier le rôle de flotte EC2 et l’action iam:ListInstanceProfiles pour énumérer les profils d’instance existants.

    (Facultatif) Pour autoriser un utilisateur à créer des rôles ou des profils d’instances à l’aide de la console IAM, vous devez aussi ajouter les actions suivantes à la politique :

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  5. Sur la page Review Policy (Vérifier la stratégie), saisissez un nom et une description pour la stratégie, puis choisissez Create policy (Créer une stratégie).

  6. Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Vérifications de l’état par flotte EC2

La flotte EC2 vérifie l’état de santé des instances de la flotte toutes les deux minutes. Le statut de l’état d’une instance est healthy ou unhealthy.

La flotte EC2 détermine le statut d’intégrité d’une instance en utilisant les contrôles de statut fournis par Amazon EC2. Une instance est déterminée comme unhealthy lorsque le contrôle du statut de l’instance ou de celui du système est impaired pendant trois vérifications consécutives de l’état d’intégrité. Pour plus d’informations, consultez Contrôles de statut pour vos instances.

Vous pouvez configurer votre flotte pour qu’il remplace les instances Spot non saine. Après avoir paramétré ReplaceUnhealthyInstances sur true, une instance Spot est remplacée lorsqu’elle est signalée comme unhealthy. Notez que la taille de la flotte peut être inférieure à sa capacité cible pendant quelques minutes pendant le remplacement d’une instance Spot non saine.

Prérequis
  • Le remplacement de la vérification de l’état est pris en charge uniquement pour les Flottes EC2 qui maintiennent une capacité cible (flottes de type maintain), pas avec des flottes de type request ou instant.

  • Le remplacement de la vérification de l’état n’est pris en charge que pour instances Spot. Cette fonctionnalité n’est pas prise en charge pour instances à la demande.

  • Vous pouvez configurer votre flotte EC2 pour qu’il remplace les instances non saines au moment de sa création uniquement.

  • Les utilisateurs peuvent utiliser le remplacement lié à la surveillance de l’état seulement s’ils sont autorisés à appeler l’action ec2:DescribeInstanceStatus.

Pour configurer une flotte EC2 pour remplacer une instances Spot non saine
  1. Suivez les étapes permettant de créer une flotte EC2. Pour plus d’informations, consultez Créer une flotte EC2.

  2. Pour configurer le parc de manière à remplacer les Instances Spot non saines, dans le fichier JSON, pour ReplaceUnhealthyInstances, entrez true.

Générer un fichier de configuration JSON de flotte EC2

Pour afficher la liste complète des paramètres de configuration de la flotte EC2, vous pouvez générer un fichier JSON. Pour obtenir une description de chaque paramètre, veuillez consulter create-fleet dans la référence des commandes AWS CLI .

Pour générer un fichier JSON avec tous les paramètres de flotte EC2 possibles à l’aide de la ligne de commande
  • Utilisez la commande create-fleet (AWS CLI) et le paramètre --generate-cli-skeleton pour générer un fichier JSON de flotte EC2 et rediriger la sortie vers un fichier de sauvegarde.

    aws ec2 create-fleet \ --generate-cli-skeleton input > ec2createfleet.json

    Exemple de sortie

    { "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "r5.metal", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "", "HostResourceGroupArn": "" }, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "required", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "excluded", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "on-demand", "TargetCapacityUnitType": "memory-mib" }, "TerminateInstancesWithExpiration": true, "Type": "instant", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ], "Context": "" }

Créer une flotte EC2

Pour créer une flotte EC2, vous devez uniquement spécifier les paramètres suivants :

  • LaunchTemplateId ou LaunchTemplateName : spécifie le modèle de lancement à utiliser (qui contient les paramètres des instances à lancer, tels que le type d’instance, la zone de disponibilité et le prix maximum que vous êtes disposé à payer)

  • TotalTargetCapacity : spécifie la capacité cible totale de la flotte

  • DefaultTargetCapacityType : indique si l’option d’achat par défaut est à la demande ou Spot

Vous pouvez spécifier plusieurs spécifications de lancement qui remplacent le modèle de lancement. Les spécifications de lancement peuvent varier en terme de type d’instance, zone de disponibilité, sous-réseau ou prix maximum, et elles peuvent inclure une capacité pondérée différente. Vous pouvez également spécifier les attributs qu’une instance doit posséder, et Amazon EC2 identifiera tous les types d’instance avec ces attributs. Pour plus d’informations, consultez Sélection de type d’instance basée sur des attributs pour la flotte EC2.

Si vous ne spécifiez pas un paramètre, la flotte utilise la valeur par défaut.

Spécifiez les paramètres de flotte dans un fichier JSON. Pour plus d’informations, consultez Générer un fichier de configuration JSON de flotte EC2.

Il n’existe actuellement aucune console compatible avec la création d’une flotte EC2.

Pour créer une flotte EC2 (AWS CLI)
  • Utilisez la commande create-fleet (AWS CLI) pour créer une flotte EC2 et spécifier le fichier JSON qui contient les paramètres de configuration de la flotte.

aws ec2 create-fleet --cli-input-json file://file_name.json

Pour accéder à des exemples de fichiers de configuration, consultez Exemples de configuration d’une flotte EC2.

Voici un exemple de sortie d’un parc d’instances du type request ou maintain.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

Voici un exemple de sortie d’un parc d’instances du type instant qui a lancé la capacité cible.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-5678901234abcdef0", "i-5432109876abcdef9" ] ] }

Voici un exemple de sortie d’un parc d’instances du type instant qui a lancé une partie de la capacité cible avec les erreurs liées aux instances qui n’ont pas été lancées.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "" }, ], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ] ] }

Voici un exemple de sortie d’un parc d’instances du type instant qui n’a lancé aucune instance.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, ], "Instances": [] }

Baliser une flotte EC2

Pour vous aider à classer et à gérer vos demandes de flotte EC2, vous pouvez les baliser avec des métadonnées personnalisées. Vous pouvez affecter une balise à une demande de flotte EC2 lorsque vous la créez, ou après.

Lorsque vous balisez une demande de flotte, les instances et les volumes lancés par la flotte ne sont pas balisés automatiquement. Vous devez baliser explicitement les instances et les volumes lancés par la flotte. Vous pouvez choisir d’affecter des balises uniquement à la demande de flotte, ou uniquement aux instances lancées par la flotte, ou uniquement aux volumes attachés aux instances lancées par la flotte, ou aux trois.

Note

Pour les types de parc instant, vous pouvez baliser les volumes attachés à Instances à la demande et Instances Spot. Pour les types de parc request ou maintain, vous pouvez uniquement baliser les volumes attachés à Instances à la demande.

Pour plus d’informations sur le fonctionnement des balises, consultez Baliser vos ressources Amazon EC2.

Prérequis

Octroyez à l’utilisateur l’autorisation de baliser les ressources. Pour plus d’informations, consultez Exemple : Baliser des ressources.

Pour accorder à un utilisateur l’autorisation de baliser les ressources

Créez une politique IAM qui inclut les éléments suivants :

  • L’action ec2:CreateTags. Celle-ci accorde à l’utilisateur l’autorisation de créer des balises.

  • L’action ec2:CreateFleet. Celle-ci accorde à l’utilisateur l’autorisation de créer une demande flotte EC2.

  • Pour Resource, nous vous recommandons de spécifier "*". Cela permet aux utilisateurs de baliser tous les types de ressources.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagEC2FleetRequest", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "*" }
Important

Actuellement, nous ne prenons pas en charge les autorisations de niveau ressource pour la ressource create-fleet. Si vous spécifiez create-fleet en tant que ressource, vous recevrez une exception de non-autorisation lorsque vous tenterez de baliser le parc. L’exemple suivant illustre comment ne pas définir la stratégie.

{ "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:create-fleet/*" }

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Pour baliser une nouvelle demande flotte EC2

Pour baliser une demande de Flotte EC2 lorsque vous la créez, spécifiez la paire clé-valeur dans le fichier JSON utilisé pour créer le parc d’instances. La valeur pour ResourceType doit être fleet. Si vous spécifiez une autre valeur, la demande de flotte d’instances échoue.

Pour baliser des instances et des volumes lancés par une flotte EC2

Pour baliser des instances et des volumes lorsqu’ils sont lancés par le parc d’instances, spécifiez les balises dans le modèle de lancement référencé dans la demande Flotte EC2.

Note

Vous ne pouvez pas baliser les volumes attachés à Instances Spot qui sont lancés par un type de parc request ou maintain.

Pour étiqueter une demande de flotte EC2, une instance et un volume existants (AWS CLI)

Utilisez la commande create-tags pour baliser les ressources existantes.

aws ec2 create-tags \ --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \ --tags Key=purpose,Value=test

Décrire votre flotte EC2

Vous pouvez décrire la configuration, les instances et l’historique des événements de votre flotte EC2.

Pour décrire vos flottes EC2 (AWS CLI)

Utilisez la commande describe-fleets suivante pour décrire vos Flottes EC2 :

aws ec2 describe-fleets
Important

Si une flotte est de type instant, vous devez spécifier son ID, sinon il n’apparaît pas dans la réponse. Inclure --fleet-ids comme suit :

aws ec2 describe-fleets --fleet-ids fleet-8a22eee4-f489-ab02-06b8-832a7EXAMPLE

Exemple de sortie

{ "Fleets": [ { "ActivityStatus": "fulfilled", "CreateTime": "2022-02-09T03:35:52+00:00", "FleetId": "fleet-364457cd-3a7a-4ed9-83d0-7b63e51bb1b7", "FleetState": "active", "ExcessCapacityTerminationPolicy": "termination", "FulfilledCapacity": 2.0, "FulfilledOnDemandCapacity": 0.0, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 2, "DefaultTargetCapacityType": "spot" }, "TerminateInstancesWithExpiration": false, "Type": "maintain", "ReplaceUnhealthyInstances": false, "SpotOptions": { "AllocationStrategy": "capacity-optimized", "InstanceInterruptionBehavior": "terminate" }, "OnDemandOptions": { "AllocationStrategy": "lowestPrice" } } ] }

Utilisez la describe-fleet-instancescommande pour décrire les instances du parc EC2 spécifié. La liste renvoyée des instances en cours d’exécution est actualisée périodiquement et peut ne pas être à jour.

aws ec2 describe-fleet-instances --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

Exemple de sortie

{ "ActiveInstances": [ { "InstanceId": "i-09cd595998cb3765e", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-86k84j6p" }, { "InstanceId": "i-09cf95167ca219f17", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-dvxi7fsm" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

Utilisez la describe-fleet-historycommande pour décrire l'historique de la flotte EC2 spécifiée pour la durée spécifiée.

aws ec2 describe-fleet-history --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --start-time 2018-04-10T00:00:00Z

Exemple de sortie

{ "HistoryRecords": [ { "EventInformation": { "EventSubType": "submitted" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:05.000Z" }, { "EventInformation": { "EventSubType": "active" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:15.000Z" }, { "EventInformation": { "EventDescription": "t2.small, ami-07c8bc5c1ce9598c3, ...", "EventSubType": "progress" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-083a1c446e66085d2" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-090db02406cc3c2d6" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", "StartTime": "2018-04-09T23:53:20.000Z" }

Modifier une flotte EC2

Vous pouvez modifier un Flotte EC2 qui présente l’état submitted ou active. Lorsque vous modifiez un parc d’instances, il prend l’état modifying.

Vous pouvez uniquement modifier un Flotte EC2 qui a le type maintain. Vous ne pouvez pas modifier un Flotte EC2 ayant le type request ou instant.

Vous pouvez modifier les paramètres suivants d’une flotte EC2 :

  • target-capacity-specification – Augmentez ou diminuez la capacité cible pour TotalTargetCapacity, OnDemandTargetCapacity et SpotTargetCapacity.

  • excess-capacity-termination-policy – Indiquez si les instances en cours d’exécution doivent être résiliées si la capacité cible totale du Flotte EC2 est définie sous la taille actuelle du parc d’instances. Les valeurs valides sont no-termination et termination.

Lorsque vous augmentez la capacité cible, la Flotte EC2 lance les instances supplémentaires en fonction de l’option d’achat d’instance spécifiée pour DefaultTargetCapacityType, qui correspond à des Instances à la demande ou à des Instances Spot.

Si le paramètre DefaultTargetCapacityType a pour valeur spot, le Flotte EC2 lance les Instances Spot supplémentaires en fonction de sa stratégie d’allocation. Si la stratégie d’allocation lowest-price est sélectionnée, le parc d’instances lance les instances du groupe de capacité Spot offrant le moins cher de la demande. Si la stratégie d’allocation diversified est sélectionnée, le parc d’instances répartit les instances entre les groupes de la demande.

Lorsque vous diminuez la capacité cible, la flotte EC2 supprime toutes les demandes ouvertes qui dépassent la nouvelle capacité cible. Vous pouvez demander à ce que la flotte d’instances mette hors service les instances jusqu’à ce que la taille du flotte atteigne la nouvelle capacité cible. Si la stratégie d’allocation est lowest-price, le parc d’instances met hors service les instances ayant le prix par unité le plus élevé. En revanche, si la stratégie d’allocation est diversified, le parc d’instances met hors service les instances des divers pools. Vous pouvez aussi demander à ce que la flotte EC2 conserve sa taille actuelle, mais sans remplacer les instances Spot interrompues ni les instances que vous résiliez manuellement.

Lorsqu’une flotte EC2 résilie une instance Spot du fait de la diminution de la capacité cible, l’instance reçoit un avis d’interruption d’instance Spot.

Modifier une flotte EC2 (AWS CLI)

Utilisez la commande modify-fleet suivante pour mettre à jour la capacité cible du Flotte EC2 spécifié.

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=20

Si vous diminuez la capacité cible, mais que vous souhaitez conserver la taille actuelle de la flotte, vous pouvez modifier la commande précédente comme suit :

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=10 \ --excess-capacity-termination-policy no-termination

Supprimer une flotte EC2

Si vous n’avez plus besoin d’une flotte EC2, vous pouvez le supprimer. Après la suppression d’une flotte, toutes les demandes Spot associées à la flotte sont annulées, de sorte qu’aucune nouvelle instance Spot n’est lancée.

Lorsque vous supprimez une flotte d’instances EC2, vous devez également spécifier si vous voulez résilier toutes ses instances. Cette action inclut les instances à la demande et les instances Spot. Pour les instant flottes, EC2 Fleet doit mettre fin aux instances lorsque la flotte est supprimée. Une flotte instant supprimé avec des instances en cours d’exécution n’est pas pris en charge.

Si vous spécifiez que les instances doivent être résiliées lors de la suppression de la flotte, celle-ci entre dans l’état deleted_terminating. Sinon, il passe à l’état deleted_running et les instances continuent à s’exécuter jusqu’à ce qu’elles soient interrompues ou jusqu’à ce que vous les mettiez hors service manuellement.

Restrictions
  • Vous pouvez supprimer jusqu'à 25 flottes de types instant en une seule demande.

  • Vous pouvez supprimer jusqu'à 100 flottes de types maintain ou request en une seule demande.

  • Vous pouvez supprimer jusqu'à 125 flottes en une seule demande, à condition de ne pas dépasser le quota pour chaque type de flotte, comme indiqué ci-dessus.

  • Si vous dépassez le nombre spécifié de flottes à supprimer, aucune flotte n'est supprimée.

  • Jusqu’à 1 000 instances peuvent être résiliées en une seule demande de suppression de parcs instant.

Pour supprimer une flotte EC2 et résilier ses instances (AWS CLI)

Utilisez la commande delete-fleets et le paramètre --terminate-instances pour supprimer la flotte d’instances EC2 spécifiée et résilier les instances qui lui sont associées.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --terminate-instances

Exemple de sortie

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_terminating", "PreviousFleetState": "active", "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" } ] }
Pour supprimer une flotte d’instances EC2 sans résilier ses instances (AWS CLI)

Vous pouvez modifier la commande précédente avec le paramètre --no-terminate-instances pour supprimer la flotte d’instances EC2 spécifiée sans résilier les instances qui lui sont associées.

Note

--no-terminate-instances n’est pas pris en charge pour les parcs instant.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --no-terminate-instances

Exemple de sortie

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_running", "PreviousFleetState": "active", "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE" } ] }

Dépannage lorsqu’une flotte ne peut pas être supprimé

Si un Flotte EC2 ne peut pas être supprimé, UnsuccessfulFleetDeletions dans la sortie renvoie l’ID du Flotte EC2, un code d’erreur et un message d’erreur.

Les codes d’erreur sont :

  • ExceededInstantFleetNumForDeletion

  • fleetIdDoesNotExist

  • fleetIdMalformed

  • fleetNotInDeletableState

  • NoTerminateInstancesNotSupported

  • UnauthorizedOperation

  • unexpectedError

Résolution des problèmes de ExceededInstantFleetNumForDeletion

Si vous essayez de supprimer plus de 25 parcs instant en une seule demande, l’erreur ExceededInstantFleetNumForDeletion est renvoyée. Voici un exemple de sortie pour cette erreur.

{ "UnsuccessfulFleetDeletions": [ { "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } }, { "FleetId": "fleet-9a941b23-0286-5bf4-2430-03a029a07e31", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } } . . . ], "SuccessfulFleetDeletions": [] }
Résoudre les problèmes liés à NoTerminateInstancesNotSupported

Si vous spécifiez que les instances d’un parc instant ne doivent pas être résiliées lorsque vous supprimez le parc, l’erreur NoTerminateInstancesNotSupported est renvoyée. --no-terminate-instances n’est pas pris en charge pour les parcs instant. Voici un exemple de sortie pour cette erreur.

{ "UnsuccessfulFleetDeletions": [ { "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "NoTerminateInstances option is not supported for instant fleet", "Code": "NoTerminateInstancesNotSupported" } } ], "SuccessfulFleetDeletions": []
Résoudre les problèmes liés à UnauthorizedOperation

Si vous n’avez pas l’autorisation de résilier des instances, vous obtenez l’erreur UnauthorizedOperation lors de la suppression d’un parc qui doit résilier ses instances. Voici le message d’erreur.

<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this operation. Encoded authorization failure message: VvuncIxj7Z_CPGNYXWqnuFV-YjByeAU66Q9752NtQ-I3-qnDLWs6JLFd KnSMMiq5s6cGqjjPtEDpsnGHzzyHasFHOaRYJpaDVravoW25azn6KNkUQQlFwhJyujt2dtNCdduJfrqcFYAjlEiRMkfDHt7N63SKlweKUl BHturzDK6A560Y2nDSUiMmAB1y9UNtqaZJ9SNe5sNxKMqZaqKtjRbk02RZu5V2vn9VMk6fm2aMVHbY9JhLvGypLcMUjtJ76H9ytg2zRlje VPiU5v2s-UgZ7h0p2yth6ysUdhlONg6dBYu8_y_HtEI54invCj4CoK0qawqzMNe6rcmCQHvtCxtXsbkgyaEbcwmrm2m01-EMhekLFZeJLr DtYOpYcEl4_nWFX1wtQDCnNNCmxnJZAoJvb3VMDYpDTsxjQv1PxODZuqWHs23YXWVywzgnLtHeRf2o4lUhGBw17mXsS07k7XAfdPMP_brO PT9vrHtQiILor5VVTsjSPWg7edj__1rsnXhwPSu8gI48ZLRGrPQqFq0RmKO_QIE8N8s6NWzCK4yoX-9gDcheurOGpkprPIC9YPGMLK9tug </Message></Error></Errors><RequestID>89b1215c-7814-40ae-a8db-41761f43f2b0</RequestID></Response>

Pour résoudre l’erreur, vous devez ajouter l’action ec2:TerminateInstances à la stratégie IAM, comme illustré dans l’exemple suivant.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeleteFleetsAndTerminateInstances", "Effect": "Allow", "Action": [ "ec2:DeleteFleets" "ec2:TerminateInstances" ], "Resource": "*" } ] }