Crea una EC2 flotta - Amazon Elastic Compute Cloud

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à.

Crea una EC2 flotta

Per creare una EC2 flotta, definisci la configurazione della flotta in un JSON file e fai riferimento al file con il comando create-fleet AWS CLI . Nel JSON file, è necessario specificare la capacità target totale per il parco istanze, le capacità target separate per le istanze Spot e le istanze On-Demand e un modello di avvio che definisca la configurazione per le istanze del parco istanze, ad esempio un tipo di istanza, una sottorete o una AMI zona di disponibilità e uno o più gruppi di sicurezza. Facoltativamente, puoi specificare configurazioni aggiuntive, come i parametri per sostituire la configurazione del modello di lancio, le strategie di allocazione per selezionare le istanze Spot e le istanze On-Demand dai pool di EC2 capacità e l'importo massimo che sei disposto a pagare per il parco istanze. Per ulteriori informazioni, consulta Opzioni di configurazione per la tua EC2 flotta o la tua flotta Spot.

The EC2 Fleet lancia le istanze On-Demand quando la capacità è disponibile e le istanze Spot quando il prezzo massimo supera il prezzo Spot e la capacità è disponibile.

Se il tuo parco istanze Spot include istanze Spot ed è del tipomaintain, Amazon EC2 cercherà di mantenere la capacità target del parco istanze in caso di interruzione delle istanze Spot.

EC2Limitazioni del parco veicoli

Le seguenti limitazioni si applicano a EC2 Fleet:

  • La creazione di una EC2 flotta è disponibile solo tramite Amazon EC2 API AWS CLI, AWS SDKs, e AWS CloudFormation.

  • Una richiesta di EC2 flotta non può estendersi a AWS diverse regioni. È necessario creare una EC2 flotta separata per ogni regione.

  • Una richiesta EC2 Fleet non può estendersi a diverse sottoreti della stessa zona di disponibilità.

EC2Prerequisiti della flotta

Modello di avvio

Un modello di avvio specifica le informazioni di configurazione sulle istanze da avviare, come il tipo di istanza e la zona di disponibilità. Per ulteriori informazioni sui modelli di avvio, consulta. Memorizza i parametri di avvio delle istanze nei modelli di EC2 lancio di Amazon

Ruolo legato ai servizi per Fleet EC2

Il AWSServiceRoleForEC2Fleet ruolo concede al EC2 Fleet l'autorizzazione a richiedere, avviare, terminare e contrassegnare le istanze per tuo conto. Amazon EC2 utilizza questo ruolo collegato al servizio per completare le seguenti azioni:

  • ec2:RunInstances – Avviare istanze.

  • ec2:RequestSpotInstances – Richiesta Istanze spot.

  • ec2:TerminateInstances – Terminare istanze

  • ec2:DescribeImages— Descrivi Amazon Machine Images (AMIs) per le istanze.

  • ec2:DescribeInstanceStatus— Descrivi lo stato delle istanze.

  • ec2:DescribeSubnets— Descrivi le sottoreti per le istanze.

  • ec2:CreateTags— Aggiungi tag alla EC2 flotta, alle istanze e ai volumi.

Assicurati che questo ruolo esista prima di utilizzare AWS CLI o an API per creare un EC2 parco veicoli.

Nota

Una instant EC2 flotta non richiede questo ruolo.

Per creare il ruolo, usa la IAM console come segue.

Per creare il AWSServiceRoleForEC2Fleet ruolo di EC2 Fleet
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione, seleziona Roles (Ruoli).

  3. Selezionare Create role (Crea ruolo).

  4. Nella pagina Seleziona un'entità attendibile, esegui le operazioni seguenti:

    1. Per Tipo di entità attendibile, scegli Servizio AWS .

    2. In Caso d'uso, per Servizio o caso d'uso, scegli EC2- Fleet.

      Suggerimento

      Assicurati di scegliere EC2- Flotta. Se scegli EC2, il caso d'uso EC2- Fleet non viene visualizzato nell'elenco dei casi d'uso. Lo use case EC2- Fleet creerà automaticamente una policy con le IAM autorizzazioni richieste e la suggerirà AWSServiceRoleForEC2Fleetcome nome del ruolo.

    3. Scegli Next (Successivo).

  5. Nella pagina Add permissions (Aggiungi autorizzazioni), scegli Next (Successivo).

  6. Nella pagina Nomina, rivedi e crea scegli Crea ruolo.

Se non hai più bisogno di usare EC2 Fleet, ti consigliamo di eliminare il AWSServiceRoleForEC2Fleetruolo. Dopo che questo ruolo è stato eliminato dal proprio account, è possibile creare di nuovo il ruolo se si crea un altro parco istanze.

Per ulteriori informazioni, consulta i ruoli collegati ai servizi nella Guida per l'IAMutente.

Concedi l'accesso alle chiavi gestite dal cliente da utilizzare con copie crittografate AMIs e istantanee EBS

Se specifichi uno EBS snapshot Amazon crittografato AMI o crittografato nella tua EC2 flotta e utilizzi una AWS KMS chiave per la crittografia, devi concedere al AWSServiceRoleForEC2Fleetruolo l'autorizzazione a utilizzare la chiave gestita dal cliente in modo che Amazon EC2 possa avviare istanze per tuo conto. Per farlo, occorre aggiungere una concessione alla chiave gestita dal cliente, come mostrato nella procedura seguente.

Nel processo di assegnazione delle autorizzazioni, le concessioni rappresentano un'alternativa alle policy delle chiavi. Per ulteriori informazioni, consulta Utilizzo delle concessioni e Utilizzo delle policy delle chiavi in AWS KMS nella Guida per gli sviluppatori di AWS Key Management Service .

Per concedere al AWSServiceRoleForEC2Fleet ruolo le autorizzazioni all'uso della chiave gestita dal cliente
  • Utilizza il comando create-grant per aggiungere una concessione alla chiave gestita dal cliente e per specificare il principale (il ruolo AWSServiceRoleForEC2Fleetcollegato al servizio) a cui è concessa l'autorizzazione per eseguire le operazioni consentite dalla concessione. La chiave gestita dal cliente è specificata dal key-id parametro e dalla chiave gestita dal ARN cliente. Il principale è specificato dal grantee-principal parametro e dal ARN ruolo AWSServiceRoleForEC2Fleetcollegato al servizio.

    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"

Autorizzazioni per gli utenti di Fleet EC2

Se i tuoi utenti creeranno o gestiranno una EC2 flotta, assicurati di concedere loro le autorizzazioni richieste.

Per creare una politica per EC2 Fleet
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione, selezionare Policies (Policy).

  3. Scegli Create Policy (Crea policy).

  4. Nella pagina Crea politica, scegli la JSONscheda, sostituisci il testo con quanto segue e scegli Rivedi politica.

    { "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:*Concede all'utente l'autorizzazione a richiamare tutte le EC2 API azioni Amazon. Per limitare l'utente a specifiche EC2 API azioni Amazon, specifica invece tali azioni.

    L'utente deve avere l'autorizzazione per avviare l'iam:ListRolesazione per enumerare IAM i ruoli esistenti, l'iam:PassRoleazione per specificare il ruolo EC2 Fleet e l'azione per enumerare i profili iam:ListInstanceProfiles di istanza esistenti.

    (Facoltativo) Per consentire a un utente di creare ruoli o profili di istanza utilizzando la IAM console, è inoltre necessario aggiungere le seguenti azioni alla policy:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  5. Nella pagina Review policy (Rivedi policy), immettere un nome policy e una descrizione, poi selezionare Create policy (Crea policy).

  6. Per fornire l'accesso, aggiungi autorizzazioni ai tuoi utenti, gruppi o ruoli:

Crea un parco veicoli EC2

Per avviare una flotta di istanze utilizzando EC2 Fleet, devi solo specificare i seguenti parametri nella richiesta del parco istanze e il parco istanze utilizzerà i valori predefiniti per gli altri parametri:

  • LaunchTemplateIdoppureLaunchTemplateName: specifica il modello di avvio da utilizzare (che contiene i parametri per le istanze da avviare, come il tipo di istanza e la zona di disponibilità)

  • TotalTargetCapacity: specifica la capacità di destinazione totale per il parco istanze

  • DefaultTargetCapacityType: specifica se l'opzione di acquisto di default è On demand o Spot

Per sovrascrivere i parametri specificati nel modello di avvio, è possibile specificare una o più sostituzioni. Ogni sostituzione può variare in base al tipo di istanza, alla zona di disponibilità, alla sottorete e al prezzo massimo e può includere una capacità ponderata diversa. In alternativa alla specifica del tipo di istanza, puoi specificare gli attributi che deve avere un'istanza e Amazon EC2 identificherà tutti i tipi di istanza con tali attributi. Per ulteriori informazioni, consulta Specificare gli attributi, ad esempio la selezione del tipo per EC2 Fleet o Spot Fleet..

Per EC2 Fleet di tipoinstant, è possibile specificare un parametro Systems Manager anziché l'AMIID. È possibile specificare il parametro Systems Manager nell'override o nel modello di avvio. Per ulteriori informazioni, consulta Utilizzare un parametro Systems Manager anziché un AMI ID.

È possibile specificare i parametri della flotta in un JSON file. Per informazioni su tutti i possibili parametri che è possibile specificare, vedereVisualizza tutte le opzioni di configurazione del EC2 parco veicoli.

Per esempi di configurazione del parco veicoli, vedereCLIConfigurazioni di esempio per Fleet EC2.

Al momento non è disponibile alcun supporto da console per la creazione di una EC2 flotta.

Per creare una EC2 flotta
  • Utilizzate il comando create-fleet (AWS CLI) per creare la flotta e specificare il JSON file che contiene i parametri di configurazione della flotta.

aws ec2 create-fleet --cli-input-json file://file_name.json

Di seguito è riportato l'output di esempio per un parco istanze del tipo request o maintain.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

Di seguito è riportato l'output di esempio per un parco istanze del tipo instant che ha avviato la capacità target.

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

Di seguito è riportato l'output di esempio per un parco istanze del tipo instant che ha avviato parte della capacità target con errori per le istanze che non erano state avviate.

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

Di seguito è riportato l'output di esempio per un parco istanze del tipo instant che non ha avviato istanze.

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

Crea un EC2 parco istanze che sostituisca le istanze Spot non funzionanti

EC2Fleet verifica lo stato di integrità delle istanze del parco istanze ogni due minuti. Lo stato di un'istanza è healthy o unhealthy.

EC2Fleet determina lo stato di integrità di un'istanza utilizzando i controlli di stato forniti da AmazonEC2. Un'istanza viene determinata come unhealthy quando lo stato del controllo dello stato dell'istanza o del controllo dello stato del sistema è impaired per tre controlli dello stato di integrità consecutivi. Per ulteriori informazioni, consulta Controlli dello stato per le EC2 istanze Amazon.

È possibile configurare il parco istanze per sostituire le Istanze spot non integre. Dopo l'impostazione di ReplaceUnhealthyInstances su true, l'istanza spot viene sostituita quando viene segnalata come unhealthy. Durante la sostituzione di un'istanza spot non integra, il parco istanze può scendere al di sotto della sua capacità obiettivo.

Requisiti
  • La sostituzione dell'Health check è supportata solo per EC2 le flotte che mantengono una capacità target (flotte di tipomaintain) e non per le flotte di tipo o. request instant

  • La sostituzione del controllo dello stato è supportata solo per Istanze spot. Questa funzionalità non è supportata per Istanze on demand.

  • Puoi configurare la tua EC2 flotta per sostituire le istanze non integre solo al momento della creazione.

  • Gli utenti possono utilizzare la sostituzione del controllo dell'integrità solo se hanno l'autorizzazione a chiamare l'operazione ec2:DescribeInstanceStatus.

Per configurare un EC2 parco istanze per sostituire le istanze Spot non integre
  1. Utilizza le informazioni per creare una EC2 flotta in. Crea un parco veicoli EC2

  2. Per configurare il parco istanze Spot in modo da sostituire le istanze Spot non funzionanti, nel JSON fileReplaceUnhealthyInstances, specificare. true

Visualizza tutte le opzioni di configurazione del EC2 parco veicoli

Per visualizzare l'elenco completo dei parametri di configurazione di EC2 Fleet, puoi generare un JSON file. Per una descrizione di ciascun parametro, consultare create-fleet nella Guida di riferimento ai comandi della AWS CLI .

Per generare un JSON file con tutti i possibili parametri EC2 Fleet

Utilizzate il comando create-fleet (AWS CLI) e il --generate-cli-skeleton parametro per generare un JSON file EC2 Fleet e indirizzate l'output su un file per salvarlo.

aws ec2 create-fleet \ --generate-cli-skeleton input > ec2createfleet.json

Output di esempio

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