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
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
Pour créer une EC2 flotte, les conditions préalables suivantes doivent être réunies :
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
Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation, choisissez Roles (Rôles).
-
Sélectionnez Create role (Créer un rôle).
-
Sur la page Select trusted entity (Sélectionner une 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 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.
-
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 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 legrantee-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
Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez 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*" } ] }
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:ListRoles
action pour énumérer les rôles IAM existants, l'iam:PassRole
action pour spécifier le rôle EC2 Fleet et l'iam:ListInstanceProfiles
action 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é. Suivez les instructions de la rubrique Création d’un rôle pour un fournisseur d’identité tiers (fédération) dans le 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 dans le 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.
-
-
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
ouLaunchTemplateName
: 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 type
maintain
), 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
-
Utilisez les informations pour créer une EC2 flotte dansCréation d'une EC2 flotte.
-
Pour configurer la flotte de manière à remplacer les instances Spot non saines, dans le fichier JSON, pour
ReplaceUnhealthyInstances
, spécifieztrue
.
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--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": ""
}