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.
Table des matières
É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
ourequest
peut avoir des instances en cours d’exécution après la suppression de la demande de Flotte EC2. Une flotteinstant
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
Pour créer une flotte EC2, les prérequis suivants doivent être en place :
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
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, sélectionnez Rôles, puis Créer un rôle.
-
Sur la page Sélectionner le type d'entité de confiance, procédez comme suit :
-
Pour Type d’entité de confiance, choisissez Service AWS .
-
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.
-
Choisissez Suivant.
-
-
Sur la page Ajouter des autorisations, sélectionnez Suivant.
-
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 legrantee-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
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation, choisissez Policies (Politiques).
-
Sélectionnez Create policy (Créer une politique).
-
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’actioniam:PassRole
pour spécifier le rôle de flotte EC2 et l’actioniam: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
-
-
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).
-
Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
-
Utilisateurs et groupes dans AWS IAM Identity Center :
Créez un jeu d’autorisations. Suivez les instructions de la rubrique Création d’un jeu d’autorisations du Guide de l’utilisateur AWS IAM Identity Center .
-
Utilisateurs gérés dans IAM par un fournisseur d’identité :
Créez un rôle pour la fédération d’identité. Pour plus d’informations, voir la rubrique Création d’un rôle pour un fournisseur d’identité tiers (fédération) du Guide de l’utilisateur IAM.
-
Utilisateurs IAM :
-
Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique Création d’un rôle pour un utilisateur IAM du Guide de l’utilisateur IAM.
-
(Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique Ajout d’autorisations à un utilisateur (console) du Guide de l’utilisateur IAM.
-
-
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 typerequest
ouinstant
. -
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
-
Suivez les étapes permettant de créer une flotte EC2. Pour plus d’informations, consultez Créer une flotte EC2.
-
Pour configurer le parc de manière à remplacer les Instances Spot non saines, dans le fichier JSON, pour
ReplaceUnhealthyInstances
, entreztrue
.
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
ouLaunchTemplateName
: 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 :
-
Utilisateurs et groupes dans AWS IAM Identity Center :
Créez un jeu d’autorisations. Suivez les instructions de la rubrique Création d’un jeu d’autorisations du Guide de l’utilisateur AWS IAM Identity Center .
-
Utilisateurs gérés dans IAM par un fournisseur d’identité :
Créez un rôle pour la fédération d’identité. Pour plus d’informations, voir la rubrique Création d’un rôle pour un fournisseur d’identité tiers (fédération) du Guide de l’utilisateur IAM.
-
Utilisateurs IAM :
-
Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique Création d’un rôle pour un utilisateur IAM du Guide de l’utilisateur IAM.
-
(Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique Ajout d’autorisations à un utilisateur (console) du Guide de l’utilisateur IAM.
-
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 pourTotalTargetCapacity
,OnDemandTargetCapacity
etSpotTargetCapacity
. -
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 sontno-termination
ettermination
.
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.
Dans l'DefaultTargetCapacityType
affirmativespot
, la flotte EC2 lance les instances ponctuelles supplémentaires conformément à sa stratégie d'allocation.
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
ourequest
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": "*" } ] }