Exemples de création et de gestion de modèles de lancement à l'aide du AWS CLI - Amazon EC2 Auto Scaling

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.

Exemples de création et de gestion de modèles de lancement à l'aide du AWS CLI

Vous pouvez créer et gérer des modèles de lancement via AWS Management Console, AWS Command Line Interface (AWS CLI) ouSDKs. Cette section présente des exemples de création et de gestion de modèles de lancement pour Amazon EC2 Auto Scaling à partir du AWS CLI.

Exemple d’utilisation

{ "LaunchTemplateName": "my-template-for-auto-scaling", "VersionDescription": "test description", "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "Monitoring": { "Enabled": true }, "Placement": { "Tenancy": "dedicated" }, "CreditSpecification": { "CpuCredits": "unlimited" }, "MetadataOptions": { "HttpTokens": "required", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled" } } }

Créer un modèle de lancement de base

Pour créer un modèle de lancement de base, utilisez la create-launch-templatecommande suivante, avec les modifications suivantes :

  • Remplacez ami-04d5cc9b88example par l'ID AMI à partir duquel les instances doivent être lancées.

  • t2.microRemplacez-le par un type d'instance compatible avec celui AMI que vous avez spécifié.

Cet exemple crée un modèle de lancement avec le nom my-template-for-auto-scaling. Si les instances créées par ce modèle de lancement sont lancées par défautVPC, elles reçoivent une adresse IP publique par défaut. Si les instances ne sont pas lancées par défautVPC, elles ne reçoivent pas d'adresse IP publique par défaut.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Pour plus d'informations sur la JSON mise en forme de paramètres entre guillemets, consultez la section Utilisation de guillemets avec des chaînes AWS CLI dans le Guide de l'AWS Command Line Interface utilisateur.

Vous pouvez également spécifier les paramètres JSON formatés dans un fichier de configuration.

L'exemple suivant crée un modèle de lancement de base, référençant un fichier de configuration pour les valeurs de paramètre de modèle de lancement.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data file://config.json

Contenu de config.json :

{ "ImageId":"ami-04d5cc9b88example", "InstanceType":"t2.micro" }

Spécifier des balises qui balisent les instances au lancement

L'exemple suivant ajoute une balise (par exemple,purpose=webserver) aux instances au lancement.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Note

Si vous spécifiez des balises d'instance dans votre modèle de lancement, puis que vous avez choisi de propager les balises de votre groupe Auto Scaling à ses instances, toutes les balises sont fusionnées. Si la même clé d’identification est spécifiée pour une identification dans votre modèle de lancement et une identification dans votre groupe Auto Scaling, la valeur de l’identification du groupe est prioritaire.

Spécifiez un IAM rôle à transmettre aux instances

L'exemple suivant indique le nom du profil d'instance associé au IAM rôle à transmettre aux instances lors du lancement. Pour de plus amples informations, veuillez consulter Rôle IAM pour les applications qui s'exécutent sur des instances Amazon EC2.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"IamInstanceProfile":{"Name":"my-instance-profile"},"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Attribuer des adresses IP publiques

L'create-launch-templateexemple suivant configure le modèle de lancement pour attribuer des adresses publiques aux instances lancées dans un environnement autre que celui par défaut. VPC

Note

Lorsque vous spécifiez une interface réseau, spécifiez une valeur Groups correspondant aux groupes de sécurité dans VPC lesquels votre groupe Auto Scaling lancera les instances. Spécifiez les VPC sous-réseaux en tant que propriétés du groupe Auto Scaling.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Spécifier un script de données utilisateur qui configure les instances au lancement

L'exemple suivant spécifie un script de données utilisateur sous la forme d'une chaîne codée en base64 qui configure les instances au lancement. La create-launch-templatecommande nécessite des données utilisateur codées en base64.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"UserData":"IyEvYmluL2Jhc...","ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Spécifier un mappage de périphérique de stockage en mode bloc

L'create-launch-templateexemple suivant crée un modèle de lancement avec un mappage de périphériques en mode bloc : un EBS volume de 22 Go mappé vers. /dev/xvdcz Le /dev/xvdcz volume utilise le type de volume à usage général SSD (gp2) et est supprimé lors de la terminaison de l'instance à laquelle il est attaché.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"BlockDeviceMappings":[{"DeviceName":"/dev/xvdcz","Ebs":{"VolumeSize":22,"VolumeType":"gp2","DeleteOnTermination":true}}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Spécifier les hôtes dédiés pour obtenir des licences logicielles auprès de fournisseurs externes

Si vous spécifiez host (hôte), vous pouvez spécifier un groupe de ressources hôte et une configuration de licence License Manager pour obtenir des licences logicielles éligibles auprès de fournisseurs externes. Vous pouvez ensuite utiliser les licences sur les EC2 instances à l'aide de la create-launch-templatecommande suivante.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"Placement":{"Tenancy":"host","HostResourceGroupArn":"arn"},"LicenseSpecifications":[{"LicenseConfigurationArn":"arn"}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Spécifier une interface réseau existante

L'create-launch-templateexemple suivant configure l'interface réseau principale pour utiliser une interface réseau existante.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"NetworkInterfaceId":"eni-b9a5ac93","DeleteOnTermination":false}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Créer plusieurs interfaces réseau

L'create-launch-templateexemple suivant ajoute une interface réseau secondaire. L'index de périphérique principal est 0 pour l'interface réseau principale, et l'index de périphérique secondaire est 1 pour l'interface réseau secondaire.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f88example"],"DeleteOnTermination":true},{"DeviceIndex":1,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

Si vous utilisez un type d'instance qui prend en charge plusieurs cartes réseau et adaptateurs Elastic Fabric (EFAs), vous pouvez ajouter une interface secondaire à une carte réseau secondaire et l'activer à EFA l'aide de la create-launch-templatecommande suivante. Pour plus d'informations, consultez la section Ajouter un EFA à un modèle de lancement dans le guide de EC2 l'utilisateur Amazon.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"NetworkCardIndex":0,"DeviceIndex":0,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true},{"NetworkCardIndex":1,"DeviceIndex":1,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true}],"ImageId":"ami-09d95fab7fexample","InstanceType":"p4d.24xlarge"}'
Avertissement

Le type d'instance p4d.24xlarge entraîne des coûts plus élevés que les autres exemples de cette section. Pour plus d'informations sur la tarification des instances P4d, consultez la section Tarification des instances Amazon EC2 P4d.

Note

L'attachement de plusieurs interfaces réseau du même sous-réseau à une instance peut introduire un routage asymétrique, en particulier sur les instances utilisant une variante Linux non Amazon. Si vous avez besoin de ce type de configuration, vous devez configurer l'interface réseau secondaire dans le système d'exploitation. Par exemple, consultez Comment puis-je faire fonctionner mon interface réseau secondaire dans mon EC2 instance Ubuntu ? dans le AWS Knowledge Center.

Gérer vos modèles de lancement

AWS CLI Il inclut plusieurs autres commandes qui vous aident à gérer vos modèles de lancement.

Lister et décrire vos modèles de lancement

Vous pouvez utiliser deux AWS CLI commandes pour obtenir des informations sur vos modèles de lancement : describe-launch-templateset describe-launch-template-versions.

La describe-launch-templatescommande vous permet d'obtenir la liste de tous les modèles de lancement que vous avez créés. Vous pouvez utiliser une option pour filtrer les résultats sur un nom de modèle de lancement, créer une heure, une clé de balise ou une combinaison clé-valeur de balise. Cette commande renvoie des informations récapitulatives sur l'un de vos modèles de lancement, y compris l'identifiant du modèle de lancement, la dernière version et la version par défaut.

L'exemple suivant fournit un résumé du modèle de lancement indiqué.

aws ec2 describe-launch-templates --launch-template-names my-template-for-auto-scaling

Voici un exemple de réponse.

{ "LaunchTemplates": [ { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2020-02-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } ] }

Si vous n'utilisez pas le paramètre --launch-template-names pour limiter la sortie à un seul modèle de lancement, les informations sur tous vos modèles de lancement sont renvoyées.

La describe-launch-template-versionscommande suivante fournit des informations décrivant les versions du modèle de lancement spécifié.

aws ec2 describe-launch-template-versions --launch-template-id lt-068f72b729example

Voici un exemple de réponse.

{ "LaunchTemplateVersions": [ { "VersionDescription": "version1", "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "VersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "LaunchTemplateData": { "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "purpose", "Value": "webserver" } ] } ], "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "DeviceIndex": 0, "DeleteOnTermination": true, "Groups": [ "sg-903004f88example" ], "AssociatePublicIpAddress": true } ] }, "DefaultVersion": true, "CreateTime": "2020-02-28T19:52:27.000Z" } ] }

Créer une version d’un modèle de lancement

La create-launch-template-versioncommande suivante crée une nouvelle version du modèle de lancement basée sur la version 1 du modèle de lancement et spécifie un AMI identifiant différent.

aws ec2 create-launch-template-version --launch-template-id lt-068f72b729example --version-description version2 \ --source-version 1 --launch-template-data "ImageId=ami-c998b6b2example"

Pour définir la version par défaut du modèle de lancement, utilisez la modify-launch-templatecommande.

Supprimer une version d’un modèle de lancement

La delete-launch-template-versionscommande suivante supprime la version du modèle de lancement spécifiée.

aws ec2 delete-launch-template-versions --launch-template-id lt-068f72b729example --versions 1

Supprimer un modèle de lancement

Si vous n'avez plus besoin d'un modèle de lancement, vous pouvez le supprimer à l'aide de la delete-launch-templatecommande suivante. La suppression d’un modèle de lancement entraîne celle de toutes ses versions.

aws ec2 delete-launch-template --launch-template-id lt-068f72b729example

Mettre à jour un groupe Auto Scaling pour utiliser un modèle de lancement

Vous pouvez utiliser la update-auto-scaling-groupcommande pour ajouter un modèle de lancement à un groupe Auto Scaling existant.

Mettre à jour un groupe Auto Scaling pour utiliser la dernière version d'un modèle de lancement

La update-auto-scaling-groupcommande suivante met à jour le groupe Auto Scaling spécifié afin d'utiliser la dernière version du modèle de lancement spécifié.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateId=lt-068f72b729example,Version='$Latest'

Mettre à jour un groupe Auto Scaling pour utiliser une version spécifique d'un modèle de lancement

La update-auto-scaling-groupcommande suivante met à jour le groupe Auto Scaling spécifié pour utiliser une version spécifique du modèle de lancement spécifié.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-template-for-auto-scaling,Version='2'