Création d'une EC2 flotte - 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.

Création d'une EC2 flotte

Pour créer une EC2 flotte, définissez la configuration de la flotte dans un JSON fichier et référencez le fichier à l'aide de la commande create-fleet AWS CLI . Dans le JSON fichier, vous devez spécifier la capacité cible totale du parc, des capacités cibles distinctes pour les instances ponctuelles et les instances à la demande, ainsi qu'un modèle de lancement qui définit la configuration des instances du parc, telles qu'un type d'instanceAMI, un sous-réseau ou une zone de disponibilité, et un ou plusieurs groupes de sécurité. Vous pouvez éventuellement spécifier des configurations supplémentaires, telles que des paramètres pour remplacer la configuration du modèle de lancement, des stratégies d'allocation pour sélectionner des instances ponctuelles et des instances à la demande dans les pools de EC2 capacités, et le montant maximum que vous êtes prêt à payer pour le parc. Pour de plus amples informations, veuillez consulter Options de configuration pour votre EC2 flotte ou votre flotte ponctuelle.

La EC2 flotte lance des instances à la demande lorsque la capacité est disponible, et lance des instances ponctuelles lorsque votre prix maximum dépasse le prix au comptant et que la capacité est disponible.

Si votre flotte inclut des instances Spot et qu'elle est de typemaintain, Amazon EC2 essaiera de maintenir la capacité cible de votre flotte lorsque vos instances Spot sont interrompues.

EC2Limites de la flotte

Les restrictions suivantes s'appliquent à EC2 Fleet :

  • La création d'une EC2 flotte est disponible uniquement via Amazon EC2 API AWS CLI, AWS SDKs, et AWS CloudFormation.

  • Une demande EC2 de flotte ne peut pas couvrir plusieurs AWS régions. Vous devez créer une EC2 flotte distincte pour chaque région.

  • Une demande EC2 de flotte ne peut pas couvrir différents sous-réseaux de la même zone de disponibilité.

EC2Prérequis relatifs à la flotte

Modèle de lancement

Un modèle de lancement spécifie les informations de configuration relatives aux instances à lancer, telles que le type d'instance et la zone de disponibilité. Pour plus d'informations sur les modèles de lancement, consultezStockez les paramètres de lancement de l'instance dans les modèles de EC2 lancement Amazon.

Rôle lié au service pour Fleet EC2

Le AWSServiceRoleForEC2Fleet rôle accorde à la EC2 flotte l'autorisation de demander, de lancer, de résilier et d'étiqueter des instances en votre nom. Amazon EC2 utilise ce rôle lié au 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écrivez Amazon Machine Images (AMIs) pour les instances.

  • ec2:DescribeInstanceStatus— Décrivez le statut des instances.

  • ec2:DescribeSubnets— Décrivez les sous-réseaux des instances.

  • ec2:CreateTags— Ajoutez des balises à la EC2 flotte, aux instances et aux volumes.

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

Note

Une instant EC2 flotte n'a pas besoin de ce rôle.

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

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

  2. Dans le panneau de navigation, choisissez Roles (Rôles).

  3. Sélectionnez Create role (Créer un rôle).

  4. Sur la page Select trusted entity (Sélectionner une 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 le souhaitez EC2, le cas d'utilisation EC2- Fleet n'apparaît pas dans la liste des cas d'utilisation. Le EC2 cas d'utilisation de la flotte créera automatiquement une politique avec les IAM autorisations requises et suggérera le AWSServiceRoleForEC2Fleetnom du rôle.

    3. Choisissez Suivant.

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

  6. 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 la section Rôles liés aux services dans le Guide de l'IAMutilisateur.

Accordez l'accès aux clés gérées par le client pour les utiliser avec des données chiffrées AMIs et des EBS instantanés

Si vous spécifiez un EBS instantané Amazon chiffré AMI ou chiffré dans votre EC2 flotte et que vous utilisez une AWS KMS clé pour le chiffrement, vous devez autoriser le AWSServiceRoleForEC2Fleetrôle à 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 key-id paramètre et le ARN de la clé gérée par le client. Le principal est spécifié par le grantee-principal paramètre et le ARN 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 EC2 de la flotte

Si vos utilisateurs veulent créer ou gérer une EC2 flotte, assurez-vous de leur accorder les autorisations requises.

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

  2. Dans le panneau de navigation, choisissez Politiques.

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

  4. Sur la page Créer une politique, choisissez l'JSONonglet, remplacez le texte par le texte suivant, puis sélectionnez Réviser la politique.

    { "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*" } ] }

    ec2:*accorde à l'utilisateur l'autorisation d'appeler toutes les EC2 API actions Amazon. Pour limiter l'utilisateur à des EC2 API actions Amazon spécifiques, spécifiez plutôt ces actions.

    L'utilisateur doit être autorisé à lancer l'iam:ListRolesaction pour énumérer les IAM rôles existants, l'iam:PassRoleaction pour spécifier le rôle EC2 Fleet et l'iam:ListInstanceProfilesaction pour énumérer les profils d'instance existants.

    (Facultatif) Pour permettre à un utilisateur de créer des rôles ou des profils d'instance à l'aide de la IAM console, vous devez également 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 :

Création d'une EC2 flotte

Pour lancer une flotte d'instances à l'aide de EC2 Fleet, il vous suffit de spécifier les paramètres suivants dans votre demande de flotte, et la flotte utilisera les valeurs par défaut pour les autres paramètres :

  • LaunchTemplateIdou LaunchTemplateName — Spécifie le modèle de lancement à utiliser (qui contient les paramètres des instances à lancer, tels que le type d'instance et la zone de disponibilité)

  • 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

Pour remplacer les paramètres spécifiés dans le modèle de lancement, vous pouvez spécifier un ou plusieurs remplacements. Chaque dérogation peut varier en fonction du type d'instance, de la zone de disponibilité, du sous-réseau et du prix maximum, et peut inclure une capacité pondérée différente. Au lieu de spécifier un type d'instance, vous pouvez spécifier les attributs qu'une instance doit avoir, et Amazon EC2 identifiera tous les types d'instances dotés de ces attributs. Pour de plus amples informations, veuillez consulter Spécifiez les attributs pour la sélection du type d'instance pour EC2 Fleet ou Spot Fleet.

Pour les EC2 flottes de typeinstant, vous pouvez spécifier un paramètre Systems Manager au lieu de l'AMIID. Vous pouvez spécifier le paramètre Systems Manager dans l'override ou dans le modèle de lancement. Pour de plus amples informations, veuillez consulter Utiliser un paramètre Systems Manager au lieu d'un AMI ID.

Vous pouvez définir les paramètres du parc dans un JSON fichier. Pour plus d'informations sur tous les paramètres possibles que vous pouvez spécifier, consultezAfficher toutes les options de configuration de la EC2 flotte.

Pour des exemples de configuration de flotte, voirExemples de CLI configurations pour EC2 Fleet.

La création d'une EC2 flotte n'est actuellement pas prise en charge par console.

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

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

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

Créez une EC2 flotte qui remplace les instances Spot insalubres

EC2Fleet 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.

EC2Fleet détermine l'état de santé d'une instance à l'aide des contrôles de statut fournis par AmazonEC2. 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 de plus amples informations, veuillez consulter Contrôles de statut pour les EC2 instances Amazon.

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 du bilan de santé n'est pris en charge que pour EC2 les flottes qui maintiennent une capacité cible (flottes de typemaintain), et non pour les flottes de type ou. request 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 EC2 flotte pour remplacer les instances défectueuses uniquement lorsque vous la créez.

  • 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 un EC2 parc afin de remplacer des instances Spot défectueuses
  1. Utilisez les informations pour créer une EC2 flotte dansCréation d'une EC2 flotte.

  2. Pour configurer le parc afin de remplacer les instances Spot défectueuses, dans le JSON fichier, pourReplaceUnhealthyInstances, spécifieztrue.

Afficher toutes les options de configuration de la EC2 flotte

Pour consulter la liste complète des paramètres de configuration de la EC2 flotte, vous pouvez générer un JSON fichier. 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 JSON fichier avec tous les paramètres EC2 de flotte possibles

Utilisez la commande create-fleet (AWS CLI) et le --generate-cli-skeleton paramètre pour générer un JSON fichier EC2 Fleet, puis dirigez la sortie vers un fichier pour l'enregistrer.

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

Exemple de sortie

{ "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "price-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": "" }