Esempi di creazione e gestione di modelli di lancio con AWS CLI - Amazon EC2 Auto Scaling

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di creazione e gestione di modelli di lancio con AWS CLI

È possibile creare e gestire modelli di lancio tramite AWS Management Console, AWS Command Line Interface (AWS CLI) oSDKs. Questa sezione mostra esempi di creazione e gestione di modelli di lancio per Amazon EC2 Auto Scaling da. AWS CLI

Esempio di utilizzo

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

Creare un modello di avvio di base

Per creare un modello di lancio di base, usa il create-launch-templatecomando come segue, con queste modifiche:

  • Sostituisci ami-04d5cc9b88example con l'ID AMI da cui avviare le istanze.

  • Sostituisci t2.micro con un tipo di istanza compatibile con AMI quello specificato.

Questo esempio crea un modello di lancio con il nome my-template-for-auto-scaling. Se le istanze create da questo modello di avvio vengono avviate in modo predefinitoVPC, ricevono un indirizzo IP pubblico per impostazione predefinita. Se le istanze vengono avviate in modo non predefinitoVPC, per impostazione predefinita non ricevono un indirizzo IP pubblico.

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"}'

Per ulteriori informazioni sulla creazione di parametri JSON formattati tra virgolette, vedere Uso delle virgolette con le stringhe nella Guida per l'utente. AWS CLIAWS Command Line Interface

In alternativa, è possibile specificare i parametri JSON -formatted in un file di configurazione.

Nell'esempio seguente viene creato un modello di avvio di base, facendo riferimento a un file di configurazione per i valori dei parametri del modello di avvio.

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

Contenuto di config.json.

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

Specificare dei tag che etichettano le istanze all'avvio

Nell'esempio seguente viene aggiunto un tag (ad esempio purpose=webserver) alle istanze al momento dell'avvio.

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"}'
Nota

Se si specificano i tag delle istanze nel modello di avvio e si sceglie di propagare i tag del gruppo con dimensionamento automatico alle relative istanze, tutti i tag vengono uniti. Se viene specificata la stessa chiave tag per un tag nel modello di avvio e un tag nel gruppo con dimensionamento automatico, il valore del tag del gruppo ha la precedenza.

Specificate un IAM ruolo da passare alle istanze

L'esempio seguente specifica il nome del profilo di istanza associato al IAM ruolo da passare alle istanze all'avvio. Per ulteriori informazioni, consulta Ruoli IAM per le applicazioni in esecuzione sulle istanze 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"}'

Assegnare un indirizzo IP pubblico

L'create-launch-templateesempio seguente configura il modello di avvio per assegnare indirizzi pubblici alle istanze avviate in modo non predefinito. VPC

Nota

Quando specificate un'interfaccia di rete, specificate un valore corrispondente ai gruppi di sicurezza in VPC cui il gruppo Auto Scaling lancerà le istanze. Groups Specificate le VPC sottoreti come proprietà del gruppo 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"}'

Specificare uno script di dati utente che configura le istanze all'avvio

Nell'esempio seguente viene specificato uno script di dati utente come stringa con codifica base64 che configura le istanze all'avvio. Il create-launch-templatecomando richiede dati utente con codifica 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"}'

Specificare di una mappatura dei dispositivi a blocchi di un'AMI

L'create-launch-templateesempio seguente crea un modello di avvio con una mappatura del dispositivo a blocchi: un volume da 22 gigabyte mappato su. EBS /dev/xvdcz Il /dev/xvdcz volume utilizza il tipo di volume General Purpose SSD (gp2) e viene eliminato quando si termina l'istanza a cui è collegato.

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"}'

Specificare gli host dedicati per portare licenze software da fornitori esterni

Se specifichi un tenancy host, è possibile specificare un gruppo di risorse host e una configurazione delle licenze di License Manager per ottenere licenze software idonee da fornitori esterni. È quindi possibile utilizzare le licenze sulle EC2 istanze utilizzando il comando seguente. create-launch-template

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"}'

Specificare un'interfaccia di rete esistente

L'create-launch-templateesempio seguente configura l'interfaccia di rete principale per utilizzare un'interfaccia di rete esistente.

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"}'

Creare più interfacce di rete

L'create-launch-templateesempio seguente aggiunge un'interfaccia di rete secondaria. L'interfaccia di rete primaria ha un indice dispositivo pari a 0 e l'interfaccia di rete secondaria ha un indice dispositivo pari a 1.

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"}'

Se si utilizza un tipo di istanza che supporta più schede di rete ed Elastic Fabric Adapters (EFAs), è possibile aggiungere un'interfaccia secondaria a una scheda di rete secondaria e EFA abilitarla utilizzando il create-launch-templatecomando seguente. Per ulteriori informazioni, consulta Aggiungere un modello EFA a un lancio nella Amazon EC2 User Guide.

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"}'
avvertimento

Il tipo di istanza p4d.24xlarge comporta costi superiori, rispetto agli altri esempi in questa sezione. Per ulteriori informazioni sui prezzi delle istanze P4d, consulta i prezzi delle istanze Amazon EC2 P4d.

Nota

Allegare più interfacce di rete della stessa sottorete a un'istanza può introdurre il routing asimmetrico, specialmente nelle istanze che utilizzano una variante di Linux non Amazon. Se hai bisogno di questo tipo di configurazione, dovrai anche configurare l'interfaccia di rete secondaria all'interno del sistema operativo. Per un esempio, vedi Come posso far funzionare la mia interfaccia di rete secondaria nella mia istanza di Ubuntu? EC2 nel AWS Knowledge Center.

Gestire i modelli di avvio

AWS CLI Include diversi altri comandi che consentono di gestire i modelli di lancio.

Pubblicare e descrivere i modelli di avvio

Puoi usare due AWS CLI comandi per ottenere informazioni sui tuoi modelli di lancio: describe-launch-templatese describe-launch-template-versions.

Il describe-launch-templatescomando ti consente di ottenere un elenco di tutti i modelli di lancio che hai creato. È possibile utilizzare un'opzione per filtrare i risultati in base al nome di un modello di avvio, creare ora, chiave tag o combinazione chiave-valore tag. Questo comando restituisce informazioni di riepilogo su uno qualsiasi dei modelli di avvio, inclusi l'identificativo, la versione più recente e la versione di default del modello di avvio.

L'esempio seguente fornisce un riepilogo del modello di avvio specificato.

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

Di seguito è riportata una risposta di esempio.

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

Se non utilizzi l'opzione --launch-template-names per limitare l'output a un modello di avvio, vengono restituite le informazioni su tutti i modelli di avvio.

Il describe-launch-template-versionscomando seguente fornisce informazioni che descrivono le versioni del modello di avvio specificato.

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

Di seguito è riportata una risposta di esempio.

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

Creazione di una versione del modello di avvio

Il create-launch-template-versioncomando seguente crea una nuova versione del modello di avvio basata sulla versione 1 del modello di lancio e specifica un ID diversoAMI.

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

Per impostare la versione predefinita del modello di lancio, utilizzate il modify-launch-templatecomando.

Eliminare una versione del modello di avvio

Il delete-launch-template-versionscomando seguente elimina la versione del modello di lancio specificata.

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

Eliminare un modello di avvio

Se non è più necessario un modello di avvio, è possibile eliminarlo utilizzando il delete-launch-templatecomando seguente. L'eliminazione di un modello di avvio ne elimina tutte le versioni.

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

Aggiornare un gruppo con dimensionamento automatico per utilizzare un modello di avvio

È possibile utilizzare il update-auto-scaling-groupcomando per aggiungere un modello di avvio a un gruppo Auto Scaling esistente.

Aggiornare un gruppo con dimensionamento automatico affinché utilizzi la versione più recente di un modello di avvio

Il update-auto-scaling-groupcomando seguente aggiorna il gruppo Auto Scaling specificato per utilizzare la versione più recente del modello di avvio specificato.

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

Aggiornare un gruppo con dimensionamento automatico affinché utilizzi la versione specifica di un modello di avvio

Il update-auto-scaling-groupcomando seguente aggiorna il gruppo Auto Scaling specificato per utilizzare una versione specifica del modello di avvio specificato.

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