Tutoriel : configurer EC2 Fleet pour lancer des instances à la demande à l'aide de réservations de capacité ciblées - 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.

Tutoriel : configurer EC2 Fleet pour lancer des instances à la demande à l'aide de réservations de capacité ciblées

Ce didacticiel vous explique toutes les étapes que vous devez effectuer pour que votre EC2 flotte lance des instances à la demande dans les réservations targeted de capacité.

Vous verrez qu’il est possible de configurer une flotte EC2 pour qu’elle utilise d’abord la réservations de capacité targeted lors du lancement d’instances à la demande. Vous apprendrez également à configurer la flotte de sorte que, lorsque la capacité cible totale à la demande dépasse le nombre de réservations de capacité inutilisées disponibles, la flotte utilise la stratégie d’allocation spécifiée pour sélectionner les groupes d’instances dans lesquels lancer la capacité cible restante.

EC2Configuration de la flotte

Dans ce didacticiel, la flotte est configurée comme suit :

  • Capacité cible : 10 instances à la demande

  • Total de réservations de capacité targeted non utilisé : 6 (inférieur à la capacité cible à la demande de la flotte de 10 instances à la demande)

  • Nombre de groupes de réservations de capacité : 2 (us-east-1a et us-east-1b)

  • Nombre de réservations de capacité par groupe : 3

  • Stratégie d’allocation à la demande :lowest-price( Lorsque le nombre de réservations de capacité inutilisées est inférieur à la capacité cible à la demande, la flotte détermine les groupes dans lesquels lancer la capacité à la demande restante en fonction de la stratégie d’allocation à la demande.)

    Notez que vous pouvez également utiliser la stratégie d’allocation prioritized au lieu de la stratégie d’allocation lowest-price.

Étape 1 : Créer des réservations de capacité

Utilisez la create-capacity-reservationcommande pour créer les réservations de capacité, trois pour us-east-1a et trois autres pourus-east-1b. À l’exception de la zone de disponibilité, les autres attributs des réservations de capacité sont identiques.

3 Capacity Reservations in us-east-1a (3 réservations de capacité sur ).

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Exemple d’ID de réservation de capacité en résultant

cr-1234567890abcdef1

3 Capacity Reservations in us-east-1b (3 réservations de capacité sur ).

aws ec2 create-capacity-reservation \ --availability-zone us-east-1b \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Exemple d’ID de réservation de capacité en résultant

cr-54321abcdef567890

Étape 2 : Création d’un groupe de ressources de Réservation de capacité

Utilisation de resource-groups et du service create-group (créer un groupe) pour créer un groupe de ressources de Réservation de capacité. Dans cet exemple, le groupe de ressources est nommé my-cr-group. Pour plus d’informations sur les raisons pour lesquelles vous devez créer un groupe de ressources, veuillez consulter Utilisez les réservations de capacité pour réserver de la capacité à la demande dans EC2 Fleet.

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

Étape 3 : Ajouter les réservations de capacité au groupe de ressources de Réservation de capacité

Utilisation de resource-groups et du service group-resources (groupement de ressources) pour ajouter les réservations de capacité créées à l’étape 1 au groupe de ressources de réservations de capacité. Notez que vous devez référencer les réservations de capacité à la demande par leur nomARNs.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

Exemple de sortie

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

(Facultatif) Étape 4 : Afficher les réservations de capacité dans le groupe de ressources

Utilisez le resource-groups service et la list-group-resourcescommande pour éventuellement décrire le groupe de ressources afin d'afficher ses réservations de capacité.

aws resource-groups list-group-resources --group my-cr-group

Exemple de sortie

{ "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

Étape 5 : Créer un modèle de lancement qui spécifie que la réservation de capacité cible un groupe de ressources spécifique

Utilisez la create-launch-templatecommande pour créer un modèle de lancement dans lequel vous pourrez spécifier les réservations de capacité à utiliser. Dans cet exemple, la flotte utilisera les réservations de capacité targeted, qui ont été ajoutées à un groupe de ressources. Par conséquent, les données du modèle de lancement spécifient que la réservation de capacité cible un groupe de ressources spécifique. Dans cet exemple, le modèle de lancement est nommé my-launch-template.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } }'

(Facultatif) Étape 6 : Décrire le modèle de lancement

Utilisez la describe-launch-template-versionscommande pour éventuellement décrire le modèle de lancement afin de visualiser sa configuration.

aws ec2 describe-launch-template-versions --launch-template-name my-launch-template

Exemple de sortie

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-01234567890example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2021-01-19T20:50:19.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Admin", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0947d2ba12ee1ff75", "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } } } ] }

Étape 7 : Création d'une EC2 flotte

Créez une EC2 flotte qui spécifie les informations de configuration pour les instances qu'elle lancera. La configuration EC2 de flotte suivante montre uniquement les configurations pertinentes pour cet exemple. Le modèle de lancement my-launch-template est le modèle de lancement que vous avez créé à l’étape 5. Il existe deux groupes d’instances, chacun ayant le même type d’instance (c5.xlarge), mais avec des zones de disponibilité différentes (us-east-1a et us-east-1b). Le prix des groupes d’instances est le même car la tarification est définie pour la Région et non pour la zone de disponibilité. La capacité cible totale est 10 et le type de capacité cible par défaut est on-demand. La stratégie d’allocation à la demande est lowest-price. La stratégie d’utilisation des réservations de capacité est use-capacity-reservations-first.

Note

Le type de flotte doit être instant. Les autres types de flotte ne prennent pas en charge use-capacity-reservations-first.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

Après avoir créé la flotte instant à l’aide de la configuration précédente, les 10 instances suivantes sont lancées pour atteindre la capacité cible :

  • Les réservations de capacité sont utilisées en premier lieu pour lancer 6 instances à la demande comme suit :

    • 3 instances à la demande sont lancées dans les 3 réservations de capacité c5.xlarge targeted dans us-east-1a

    • 3 instances à la demande sont lancées dans les 3 réservations de capacité c5.xlarge targeted dans us-east-1b

  • Pour atteindre la capacité cible, 4 instances à la demande supplémentaires sont lancées dans la capacité à la demande régulière selon la stratégie d’allocation à la demande, qui est lowest-price dans cet exemple. Toutefois, étant donné que les groupes ont le même prix (car le prix est défini par Région et non par zone de disponibilité), la flotte lance les 4 instances à la demande restantes dans l’un ou l’autre des groupes.

(Facultatif) Étape 8 : Afficher le nombre de réservations de capacité non utilisées restantes

Une fois la flotte lancée, vous pouvez éventuellement courir describe-capacity-reservationspour voir combien de réservations de capacité non utilisées restent. Dans cet exemple, vous devriez voir la réponse suivante, qui montre que tous les réservations de capacité de tous les groupes ont été utilisés.

{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }