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 fichier JSON et référencez le fichier à l'aide de la commande create-fleet. Dans le fichier JSON, vous devez spécifier la capacité cible totale de la flotte, des capacités cibles distinctes pour les Instances Spot et les Instances à la demande, et un modèle de lancement paramétrant la configuration des instances du parc d’instances, 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 é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.

EC2 Limites de la flotte

Les restrictions suivantes s'appliquent à EC2 Fleet :

  • La création d'une EC2 flotte est disponible uniquement via l' EC2 API Amazon, 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é.

EC2 Pré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 en savoir plus sur l’utilisation des modèles de lancement, consultez Stockez 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écrire le statut des instances.

  • ec2:DescribeSubnets - Décrire 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 l'API AWS CLI ou une 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 console IAM comme suit.

Pour créer le rôle AWSService RoleFor EC2 Fleet pour EC2 Fleet
  1. Ouvrez la console IAM à 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 cas d'utilisation de EC2 - Fleet créera automatiquement une politique avec les autorisations IAM requises et suggérera AWSServiceRoleForEC2Fleet comme nom de 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 rôle AWSServiceRoleForEC2Fleet. 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 à un service dans le Guide de l’utilisateur IAM.

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

Si vous spécifiez une AMI chiffrée ou un instantané Amazon EBS chiffré dans votre EC2 flotte et que vous utilisez une AWS KMS clé pour le chiffrement, vous devez autoriser le rôle AWSServiceRoleForEC2Fleet à 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 rôle AWSService RoleFor EC2 Fleet l'autorisation d'utiliser la clé gérée par le client
  • Utilisez la commande create-grant pour ajouter une subvention à la clé gérée par le client et pour spécifier le principal (le rôle lié au service AWSServiceRoleForEC2Fleet) 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 lié au service AWSServiceRoleForEC2Fleet.

    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 console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, choisissez 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*" } ] }

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

    L'utilisateur doit être autorisé à lancer l'iam:ListRolesaction pour énumérer les rôles IAM 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 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 :

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 :

  • 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 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 ce typeinstant, vous pouvez spécifier un paramètre Systems Manager au lieu de l'ID AMI. 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 Utilisation d’un paramètre Systems Manager au lieu d’un ID d’AMI.

Vous pouvez spécifier les paramètres de la flotte dans un fichier JSON. Pour plus d’informations sur tous les paramètres possibles que vous pouvez spécifier, consultez Afficher toutes les options de configuration de la EC2 flotte.

Pour accéder à des exemples de configuration de Flotte, consultez Exemples de configurations CLI 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 pour créer le parc et spécifiez le fichier JSON contenant les paramètres de configuration du parc.

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

EC2 Fleet 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.

EC2 Fleet détermine l'état de santé d'une instance à l'aide des 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 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 la flotte de manière à remplacer les instances Spot non saines, dans le fichier JSON, pour ReplaceUnhealthyInstances, spécifiez true.

Afficher toutes les options de configuration de la EC2 flotte

Pour afficher la liste complète des paramètres de configuration de la EC2 flotte, vous pouvez générer un fichier JSON. Pour une description de chaque paramètre, voir create-fleet.

Pour générer un fichier JSON 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 fichier EC2 Fleet JSON, 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": "" }