Specifica gli attributi per la selezione del tipo di istanza per il parco del tipo per il parco istanze EC2 o il parco istanze Spot
Quando si crea un parco istanze EC2 o un parco istanze spot, è necessario specificare uno o più tipi di istanza per la configurazione delle istanze on-demand e delle istanze spot nel parco istanze. In alternativa alla specifica manuale dei tipi di istanza, è possibile specificare gli attributi che un’istanza deve avere e Amazon EC2 identificherà tutti i tipi di istanza con tali attributi. Questo è noto come selezione del tipo di istanza basata su attributi. Ad esempio, puoi specificare il numero minimo e massimo di vCPU richieste per le istanze e il parco istanze avvierà le istanze utilizzando qualsiasi tipo di istanza disponibile che soddisfi i requisiti di tali vCPU.
La selezione del tipo di istanza basata su attributi è ideale per carichi di lavoro e framework che possono essere flessibili sui tipi di istanza utilizzati, ad esempio quando si eseguono container o parchi istanze Web, elaborazione di Big Data e implementazione di strumenti CI/CD (Continuous Integration and Deployment).
Vantaggi
La selezione del tipo di istanza basata su attributi comporta i seguenti vantaggi:
-
Usa facilmente i tipi di istanza giusti – Con un numero così elevato di tipi di istanza disponibili, trovare i tipi di istanza adatti per il proprio carico di lavoro può richiedere molto tempo. Quando si specificano gli attributi dell’istanza, i tipi di istanza avranno automaticamente gli attributi richiesti per il carico di lavoro.
-
Configurazione semplificata – Per specificare manualmente più tipi di istanza per un parco istanze, è necessario creare un modello di avvio separato per ogni tipo di istanza. Tuttavia, con la selezione del tipo di istanza basata su attributi, per fornire più tipi di istanza è necessario specificare solo gli attributi dell’istanza nel modello di avvio o in una sostituzione di un modello di avvio.
-
Uso automatico di nuovi tipi di istanza – Quando si specificano gli attributi di istanza anziché i tipi di istanza, il parco istanze può utilizzare tipi di istanza di nuova generazione man mano che vengono rilasciati: una configurazione del parco istanze "a prova di futuro".
-
Flessibilità del tipo di istanza – Quando specifichi gli attributi dell’istanza anziché i tipi di istanza, il parco istanze può selezionare da un’ampia gamma di tipi di istanza per l’avvio di istanze spot che aderiscono alla Best practice delle istanze spot per la flessibilità dei tipi di istanza.
Argomenti
Come funziona la selezione del tipo di istanza basata su attributi
Creazione di un EC2 Fleet con la selezione del tipo di istanza basata su attributi
Creazione di una serie di istanze spot con la selezione del tipo di istanza basata su attributi
Esempi di configurazioni del parco istanze EC2 che sono valide e non valide
Esempi di configurazioni del parco istanze spot che sono valide e non valide
Come funziona la selezione del tipo di istanza basata su attributi
Per utilizzare la selezione del tipo di istanza basata su attributi nella configurazione del parco istanze, è necessario sostituire l’elenco dei tipi di istanza con un elenco di attributi di istanza richiesti dalle istanze. Il parco istanze EC2 o il parco istanze spot avvierà le istanze su qualsiasi tipo di istanza disponibile con gli attributi di istanza specificati.
Argomenti
Tipi di attributi di istanza
Esistono diversi attributi di istanza che è possibile specificare per esprimere i requisiti di calcolo, come ad esempio:
-
Numero di vCPU – Il numero minimo e massimo di vCPU per istanza.
-
Memoria – Il numero minimo e massimo di GIB di memoria per istanza.
-
Archiviazione locale – Se utilizzare EBS o i volumi di archivio dell’istanza per l’archiviazione locale.
-
Prestazioni espandibili – Se utilizzare la famiglia di istanze T, inclusi i tipi T4g, T3a, T3 e T2.
Per una descrizione di ciascun attributo e i relativi valori di default, consulta InstanceRequirements nella Documentazione di riferimento all’API di Amazon EC2.
Dove configurare la selezione del tipo di istanza basata su attributi
A seconda che si usi la console o la AWS CLI, è possibile specificare gli attributi di istanza per la selezione del tipo di istanza basata su attributi come segue:
Nella console è possibile specificare gli attributi di istanza nei seguenti componenti di configurazione del parco istanze:
-
In un modello di avvio, facendo successivamente riferimento al modello di avvio nella richiesta del parco istanze
-
(Solo parco istanze spot) Nella richiesta del parco istanze
Nella AWS CLI è possibile specificare gli attributi di istanza in uno o in tutti i componenti di configurazione del parco istanze riportati di seguito:
-
In un modello di avvio, facendo successivamente riferimento al modello di avvio nella richiesta del parco istanze
-
In una sostituzione del modello di avvio
Se si desidera un mix di istanze che utilizzano AMI diverse, è possibile specificare gli attributi di istanza in più sostituzioni di modelli di avvio. Ad esempio, diversi tipi di istanza possono utilizzare processori x86 e ARM.
-
(Solo parco istanze spot) In una specifica di avvio
Come il parco istanze EC2 o il parco istanze spot utilizza la selezione del tipo di istanza basata su attributi durante il provisioning di un parco istanze
Il parco istanze EC2 o il parco istanze spot fornisce un parco istanze nel seguente modo:
-
Identifica i tipi di istanza che hanno gli attributi specificati.
-
Utilizza la protezione dei prezzi per determinare quali tipi di istanza escludere.
-
Determina i pool di capacità da cui prenderà in considerazione l’avvio delle istanze in base alle regioni AWS o zone di disponibilità con tipi di istanza corrispondenti.
-
Applica la strategia di allocazione specificata per determinare da quali pool di capacità avviare le istanze.
Notare che la selezione del tipo di istanza basata su attributi non sceglie i pool di capacità da cui effettuare il provisioning del parco istanze; questo è il compito delle strategie di allocazione.
Se si specifica una strategia di allocazione, il parco istanze avvierà le istanze in base alla strategia di allocazione specificata.
-
Per le istanze spot, la selezione del tipo di istanza basata su attributi supporta le strategie di allocazione con ottimizzazione per prezzo e capacità, ottimizzazione per capacità e prezzo più basso. Non consigliamo la strategia di allocazione spot con prezzo più basso perché presenta il rischio di interruzione più elevato per le tue istanze spot.
-
Per le istanze on demand, la selezione del tipo di istanza basata su attributi supporta la strategia di allocazione con prezzo più basso.
-
-
Se non è presente alcuna capacità per i tipi di istanza con gli attributi di istanza specificati, non è possibile avviare le istanze e il parco istanze restituisce un errore.
Protezione del prezzo
La protezione dei prezzi è una funzione che impedisce al proprio parco istanze EC2 o parco istanze spot di utilizzare tipi di istanza troppo costosi anche se si adattano agli attributi specificati. Per utilizzare la protezione del prezzo, devi impostare una soglia di prezzo. Poi, quando Amazon EC2 seleziona i tipi di istanza con i tuoi attributi, esclude i tipi di istanza con un prezzo più alto di quanto definito dalla soglia.
Il modo in cui Amazon EC2 calcola la soglia di prezzo è il seguente:
-
Amazon EC2 identifica innanzitutto il tipo di istanza con il prezzo più basso tra quelle che corrispondono ai tuoi attributi.
-
Poi, Amazon EC2 prende il valore (espresso in percentuale) da te specificato per il parametro di protezione del prezzo e lo moltiplica per il prezzo del tipo di istanza identificato. Il risultato è il prezzo utilizzato come soglia di prezzo.
Vi sono soglie di prezzo separate per le istanze on demand e le istanze spot.
Quando sia crea un parco istanze con selezione del tipo di istanza basata su attributi, la protezione dei prezzi è abilitata per impostazione predefinita. Puoi mantenere i valori predefiniti o specificarne uno personalizzato.
Puoi anche disattivare la protezione del prezzo. Per non indicare alcuna soglia di protezione del prezzo, specifica un valore percentuale elevato, come 999999.
Argomenti
Come viene identificato il tipo di istanza con prezzo più basso
Amazon EC2 determina il prezzo su cui basare la soglia di prezzo identificando il tipo di istanza con il prezzo più basso tra quelle che corrispondono ai tuoi attributi specificati. Ciò avviene come indicato di seguito:
-
Per prima cosa, esamina i tipi di istanza C, M o R dell’attuale generazione che corrispondono ai tuoi attributi. Se trova corrispondenze, identifica il tipo di istanza con il prezzo più basso.
-
Se non vi sono corrispondenze, esamina poi i tipi di istanza dell’attuale generazione che corrispondono ai tuoi attributi. Se trova corrispondenze, identifica il tipo di istanza con il prezzo più basso.
-
Se non vi sono corrispondenze, esamina tutti i tipi di istanza della generazione precedente che corrispondono ai tuoi attributi e identifica il tipo di istanza con il prezzo più basso.
Protezione del prezzo dell’istanza on demand
La soglia di protezione del prezzo per i tipi di istanze on demand viene calcolata come percentuale superiore al tipo di istanza on demand con prezzo più basso (OnDemandMaxPricePercentageOverLowestPrice) identificato. Specifichi la percentuale più alta che sei disposto a pagare. Se non specifichi questo parametro, viene utilizzato un valore predefinito di 20 per calcolare una soglia di protezione del prezzo del 20% superiore al prezzo identificato.
Ad esempio, se il prezzo dell’istanza on demand identificato è 0.4271, e tu specifichi 25, la soglia di prezzo è superiore del 25% rispetto a 0.4271. Viene calcolato come indicato di seguito: 0.4271 * 1.25 =
0.533875. Il prezzo calcolato è il massimo che sei disposto a pagare per le istanze on demand e, in questo esempio, Amazon EC2 escluderà qualsiasi tipo di istanza on demand che costa più di 0.533875.
Protezione del prezzo dell’istanza spot
Per impostazione predefinita, Amazon EC2 applicherà automaticamente una protezione del prezzo ottimale dell’istanza spot per scegliere in modo coerente tra un’ampia gamma di tipi di istanza. Puoi anche impostare manualmente la protezione del prezzo. Tuttavia, lasciarlo fare ad Amazon EC2 può aumentare la probabilità che la tua capacità Spot venga soddisfatta.
Puoi specificare manualmente la protezione del prezzo utilizzando una delle seguenti opzioni. Se imposti manualmente la protezione del prezzo, ti consigliamo di usare la prima opzione.
-
Una percentuale del tipo di istanza on demand con prezzo più basso identificato [
MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]Ad esempio, se il prezzo del tipo di istanza on demand identificato è
0.4271, e tu specifichi60, la soglia di prezzo è superiore del 60% di0.4271. Viene calcolato come indicato di seguito:0.4271 * 0.60 = 0.25626. Il prezzo calcolato è il massimo che sei disposto a pagare per le istanze spot e, in questo esempio, Amazon EC2 escluderà qualsiasi tipo di istanza spot che costa più di0.25626. -
Una percentuale superiore al tipo di istanza spot con prezzo più basso identificato [
SpotMaxPricePercentageOverLowestPrice]Ad esempio, se il prezzo del tipo di istanza Spot identificato è
0.1808, e tu specifichi25, la soglia di prezzo è superiore del 25% rispetto a0.1808. Viene calcolato come indicato di seguito:0.1808 * 1.25 = 0.226. Il prezzo calcolato è il massimo che sei disposto a pagare per le istanze spot e, in questo esempio, Amazon EC2 escluderà qualsiasi tipo di istanza spot che costa più di0.266. Non è consigliabile utilizzare questo parametro perché i prezzi spot possono fluttuare e quindi anche la soglia di protezione del prezzo potrebbe variare.
Specifica la soglia di protezione del prezzo
Per specificare la soglia di protezione del prezzo usando la AWS CLI
Durante la creazione di un parco istanze EC2 o un parco istanze spot usando la AWS CLI, configura il parco istanze per la selezione del tipo di istanza basata su attributi ed esegui le seguenti operazioni:
-
Per specificare la soglia di protezione del prezzo dell’istanza on demand, nel file di configurazione JSON, nella struttura
InstanceRequirements, perOnDemandMaxPricePercentageOverLowestPrice, inserisci la soglia di protezione del prezzo in percentuale. -
Per specificare la soglia di protezione del prezzo dell’istanza spot, nel file di configurazione JSON, nella struttura
InstanceRequirements, specifica uno dei seguenti parametri:-
Per
MaxSpotPriceAsPercentageOfOptimalOnDemandPrice, inserisci la soglia di protezione del prezzo in percentuale. -
Per
SpotMaxPricePercentageOverLowestPrice, inserisci la soglia di protezione del prezzo in percentuale.
-
Per ulteriori informazioni, consulta Creazione di un EC2 Fleet con la selezione del tipo di istanza basata su attributi o Creazione di una serie di istanze spot con la selezione del tipo di istanza basata su attributi.
(Solo parco istanze spot) Per specificare la soglia di protezione del prezzo usando la console
Durante la creazione del parco istanze spot nella console, configura il parco istanze per la selezione del tipo di istanza basata su attributi ed esegui le seguenti operazioni:
-
Per specificare la soglia di protezione del prezzo dell’istanza on demand, in Attributo istanza aggiuntivo, scegli Protezione del prezzo on demand, scegli Aggiungi attributo, e poi inserisci la soglia di protezione del prezzo in percentuale.
-
Per specificare la soglia di protezione del prezzo dell’istanza spot, Attributo istanza aggiuntivo, scegli Protezione del prezzo Spot, scegli Aggiungi attributo, scegli un valore di base su cui basare il prezzo, e poi inserisci la soglia di protezione del prezzo in percentuale.
Nota
Durante la creazione del parco istanze, se imposti TargetCapacityUnitType su vcpu o memory-mib, la soglia di protezione del prezzo viene applicata in base al prezzo per vCPU o per memoria, anziché al prezzo per istanza.
Protezione delle prestazioni
La protezione delle prestazioni è una funzionalità che garantisce che il parco istanze EC2 o il parco istanze spot utilizzi tipi di istanze che sono simili o superiori a un riferimento prestazionale specificato. Per utilizzare la protezione delle prestazioni, devi specificare una famiglia di istanze come riferimento di base. Le funzionalità della famiglia di istanze specificata stabiliscono il livello di prestazioni minimo accettabile. Quando Amazon EC2 seleziona i tipi di istanza per il parco istanze, considera gli attributi specificati e il riferimento delle prestazioni. I tipi di istanza che non rientrano nel riferimento prestazionale vengono automaticamente esclusi dalla selezione, anche se corrispondono agli altri attributi specificati. Ciò garantisce che tutti i tipi di istanza selezionati offrano prestazioni simili o superiori rispetto al riferimento stabilito dalla famiglia di istanze specificata. Amazon EC2 utilizza questo riferimento per guidare la selezione del tipo di istanza, ma non è garantito che i tipi di istanza selezionati superino sempre il riferimento per ogni applicazione.
Attualmente, questa funzionalità supporta solo le prestazioni della CPU come fattore prestazionale di riferimento. Le prestazioni della CPU del processore CPU della famiglia di istanze specificata fungono da riferimento delle prestazioni, garantendo che i tipi di istanza selezionati siano simili o superiori a questo riferimento. Le famiglie di istanze con gli stessi processori CPU producono gli stessi risultati di filtraggio, anche se le loro prestazioni di rete o disco sono diverse. Ad esempio, specificando c6in o c6i come riferimento di base si otterranno risultati di filtraggio basati sulle prestazioni identici perché entrambe le famiglie di istanze utilizzano lo stesso processore CPU.
Famiglie di istanza non supportate
Le seguenti famiglie di istanze non sono supportate per la protezione delle prestazioni:
-
c1 -
g3|g3s -
hpc7g -
m1|m2 -
mac1|mac2|mac2-m1ultra|mac2-m2|mac2-m2pro -
p3dn|p4d|p5 -
t1 -
u-12tb1|u-18tb1|u-24tb1|u-3tb1|u-6tb1|u-9tb1|u7i-12tb|u7in-16tb|u7in-24tb|u7in-32tb
Se abiliti la protezione delle prestazioni specificando una famiglia di istanze supportata, i tipi di istanza restituiti escluderanno le famiglie di istanze non supportate di cui sopra.
Se specifichi una famiglia di istanze non supportata come valore per le prestazioni di riferimento, l’API restituisce una risposta vuota per GetInstanceTypesFromInstanceRequirements e un’eccezione per CreateFleet, RequestSpotFleet, ModifyFleet e ModifySpotFleetRequest.
Esempio: Impostare un riferimento di prestazioni per la CPU
Nell’esempio seguente, il requisito dell’istanza è l’avvio con tipi di istanza con core CPU con prestazioni pari a quelle della famiglia di istanze c6i. In questo modo verranno esclusi i tipi di istanza con processori CPU meno performanti, anche se soddisfano altri requisiti di istanza specificati, come il numero di vCPU. Ad esempio, se gli attributi dell’istanza specificati includono 4 vCPU e 16 GB di memoria, un tipo di istanza con questi attributi ma con prestazioni della CPU inferiori a c6i verrà escluso dalla selezione.
"BaselinePerformanceFactors": { "Cpu": { "References": [ { "InstanceFamily": "c6i" } ] }
Considerazioni
-
È possibile specificare i tipi di istanza o gli attributi di istanza in un parco istanze EC2 o un parco istanze spot, ma non entrambi nello stesso momento.
Quando si utilizza la CLI, le sostituzioni del modello di avvio sovrascriveranno il modello di avvio. Ad esempio, se il modello di avvio contiene un tipo di istanza e la sostituzione del modello di avvio contiene attributi di istanza, le istanze identificate dagli attributi di istanza sostituiranno il tipo di istanza nel modello di avvio.
-
Quando si utilizza la CLI e si specificano gli attributi di istanza come sostituzioni, non è possibile specificare pesi o priorità.
-
In una configurazione di richiesta è possibile specificare un massimo di quattro strutture
InstanceRequirements.
Creazione di un EC2 Fleet con la selezione del tipo di istanza basata su attributi
Puoi configurare un EC2 Fleet in modo da utilizzare la selezione del tipo di istanza basata su attributi. Non è possibile creare un EC2 Fleet usando la console Amazon EC2.
I parametri per la selezione del tipo di istanza basata su attributi sono specificati nella struttura InstanceRequirements. Quando InstanceRequirements è incluso nella configurazione del parco istanze, InstanceType e WeightedCapacity devono essere esclusi; non possono determinare la configurazione del parco istanze contemporaneamente agli attributi di istanza.
Negli esempi di AWS CLI e PowerShell, vengono specificati i seguenti attributi:
-
VCpuCount: un minimo di 2 vCPU e un massimo di 4 vCPU. Se non è necessario un limite massimo, puoi omettere il valore massimo. -
MemoryMiB: un minimo di 8 GiB di memoria e un massimo di 16 GiB. Se non è necessario un limite massimo, puoi omettere il valore massimo.
Questa configurazione identifica qualsiasi tipo di istanza con un numero di vCPU compreso fra 2 e 4 e da 8 a 16 GiB di memoria. Tuttavia, la protezione dei prezzi e la strategia di allocazione potrebbero escludere alcuni tipi di istanze quando il parco istanze EC2 alloca le istanze.
Creazione di una serie di istanze spot con la selezione del tipo di istanza basata su attributi
Puoi configurare un parco istanze per utilizzare la selezione del tipo di istanza basata su attributi.
I parametri per la selezione del tipo di istanza basata su attributi sono specificati nella struttura InstanceRequirements. Quando InstanceRequirements è incluso nella configurazione del parco istanze, InstanceType e WeightedCapacity devono essere esclusi; non possono determinare la configurazione del parco istanze contemporaneamente agli attributi di istanza.
Negli esempi di AWS CLI e PowerShell, vengono specificati i seguenti attributi:
-
VCpuCount: un minimo di 2 vCPU e un massimo di 4 vCPU. Se non è necessario un limite massimo, puoi omettere il valore massimo. -
MemoryMiB: un minimo di 8 GiB di memoria e un massimo di 16 GiB. Se non è necessario un limite massimo, puoi omettere il valore massimo.
Questa configurazione identifica qualsiasi tipo di istanza che hanno un numero di vCPU compreso fra 2 e 4 e da 8 a 16 GiB di memoria. Tuttavia, la protezione dei prezzi e la strategia di allocazione potrebbero escludere alcuni tipi di istanze quando il parco istanze spot alloca le istanze.
Esempi di configurazioni del parco istanze EC2 che sono valide e non valide
Se si utilizza la AWS CLI per creare un parco istanze EC2, è necessario assicurarsi che la configurazione del parco istanze sia valida. I seguenti esempi mostrano configurazioni valide e non valide.
Le configurazioni sono considerate non valide quando contengono quanto segue:
-
Una singola struttura
OverridesconInstanceRequirementseInstanceType -
Due strutture
Overrides, una conInstanceRequirementse l’altra conInstanceType -
Due strutture
InstanceRequirementscon valori di attributo sovrapposti all’interno dello stessoLaunchTemplateSpecification
Configurazioni di esempio
Configurazione valida: modello di avvio singolo con sostituzioni
Configurazione valida: modello di avvio singolo con più InstancerRequirements
Configurazione valida: due modelli di avvio, ognuno con sostituzioni
Configurazione valida: specificati solo InstanceRequirements, nessun valore di attributo sovrapposto
Configurazione non valida: Overrides contiene InstanceRequirements e InstanceType
Configurazione non valida: due Overrides contengono InstanceRequirements e InstanceType
Configurazione valida: modello di avvio singolo con sostituzioni
La configurazione seguente è valida. Contiene un modello di avvio e una struttura Overrides contenente una struttura InstanceRequirements. Di seguito è riportata una spiegazione della configurazione di esempio.
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "My-launch-template", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 2, "Max": 8 }, "MemoryMib": { "Min": 0, "Max": 10240 }, "MemoryGiBPerVCpu": { "Max": 10000 }, "RequireHibernateSupport": true } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 5000, "DefaultTargetCapacityType": "spot", "TargetCapacityUnitType": "vcpu" } } }
InstanceRequirements
Per utilizzare la selezione dell’istanza basata su attributi, è necessario includere la struttura InstanceRequirements nella configurazione del parco istanze e specificare gli attributi desiderati per le istanze nel parco istanze.
Nell’esempio precedente, vengono specificati i seguenti attributi di istanza:
-
VCpuCount: i tipi di istanza devono avere un minimo di 2 e un massimo di 8 vCPU. -
MemoryMiB: i tipi di istanza devono avere un massimo di 10240 MiB di memoria. Un minimo di 0 indica nessun limite minimo. -
MemoryGiBPerVCpu: i tipi di istanza devono avere un massimo di 10.000 MiB di memoria per vCPU. Il parametroMinè facoltativo. Omettendolo, non si indica alcun limite minimo.
TargetCapacityUnitType
Il parametro TargetCapacityUnitType specifica l’unità per la capacità di destinazione. Nell’esempio, la capacità di destinazione è 5000 e il tipo di unità della capacità di destinazione è vcpu, che insieme specificano una capacità di destinazione desiderata di 5.000 vCPU. Il parco istanze EC2 avvierà una quantità sufficiente di istanze in modo che il numero totale di vCPU nel parco istanze sia 5.000.
Configurazione valida: modello di avvio singolo con più InstancerRequirements
La configurazione seguente è valida. Contiene un modello di avvio e una struttura Overrides contenente due strutture InstanceRequirements. Gli attributi specificati in InstanceRequirements sono validi perché i valori non si sovrappongono; la prima struttura InstanceRequirements specifica un VCpuCount di 0-2 vCPU, mentre la seconda struttura InstanceRequirements specifica 4-8 vCPU.
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configurazione valida: due modelli di avvio, ognuno con sostituzioni
La configurazione seguente è valida. Contiene due modelli di avvio, ognuno con una struttura Overrides contenente una struttura InstanceRequirements. Questa configurazione è utile per il supporto delle architetture arm e x86 nello stesso parco istanze.
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "armLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "x86LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configurazione valida: specificati solo InstanceRequirements, nessun valore di attributo sovrapposto
La configurazione seguente è valida. Contiene due strutture LaunchTemplateSpecification, ognuna con un modello di avvio e una struttura Overrides contenente una struttura InstanceRequirements. Gli attributi specificati in InstanceRequirements sono validi perché i valori non si sovrappongono; la prima struttura InstanceRequirements specifica un VCpuCount di 0-2 vCPU, mentre la seconda struttura InstanceRequirements specifica 4-8 vCPU.
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 1, "DefaultTargetCapacityType": "spot" } } }
Configurazione non valida: Overrides contiene InstanceRequirements e InstanceType
La configurazione seguente non è valida. La struttura Overrides include sia InstanceRequirements che InstanceType. Per le Overrides, è possibile specificare InstanceRequirements o InstanceType, ma non entrambi.
{
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
},
{
"InstanceType": "m5.large"
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Configurazione non valida: due Overrides contengono InstanceRequirements e InstanceType
La configurazione seguente non è valida. Le strutture Overrides contengono sia InstanceRequirements che InstanceType. È possibile specificare InstanceRequirements o InstanceType ma non entrambi, anche se si trovano in strutture Overrides differenti.
{
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
}
]
},
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyOtherLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "m5.large"
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Configurazione non valida: valori di attributo sovrapposti
La configurazione seguente non è valida. Le due strutture InstanceRequirements, ognuna contenente "VCpuCount":
{"Min": 0, "Max": 2}. I valori di questi attributi si sovrappongono, il che restituirà pool di capacità duplicati.
{
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
},
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
}
}
]
}
],
"TargetCapacitySpecification": {
"TotalTargetCapacity": 1,
"DefaultTargetCapacityType": "spot"
}
}
}
Esempi di configurazioni del parco istanze spot che sono valide e non valide
Se si utilizza la AWS CLI per creare una serie di istanze spot, occorre assicurarsi che la configurazione del parco istanze sia valida. I seguenti esempi mostrano configurazioni valide e non valide.
Le configurazioni sono considerate non valide quando contengono quanto segue:
-
Una singola struttura
OverridesconInstanceRequirementseInstanceType -
Due strutture
Overrides, una conInstanceRequirementse l’altra conInstanceType -
Due strutture
InstanceRequirementscon valori di attributo sovrapposti all’interno dello stessoLaunchTemplateSpecification
Configurazioni di esempio
Configurazione valida: modello di avvio singolo con sostituzioni
Configurazione valida: modello di avvio singolo con più InstancerRequirements
Configurazione valida: due modelli di avvio, ognuno con sostituzioni
Configurazione valida: specificati solo InstanceRequirements, nessun valore di attributo sovrapposto
Configurazione non valida: Overrides contiene InstanceRequirements e InstanceType
Configurazione non valida: due Overrides contengono InstanceRequirements e InstanceType
Configurazione valida: modello di avvio singolo con sostituzioni
La configurazione seguente è valida. Contiene un modello di avvio e una struttura Overrides contenente una struttura InstanceRequirements. Di seguito è riportata una spiegazione della configurazione di esempio.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "My-launch-template", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 2, "Max": 8 }, "MemoryMib": { "Min": 0, "Max": 10240 }, "MemoryGiBPerVCpu": { "Max": 10000 }, "RequireHibernateSupport": true } } ] } ], "TargetCapacity": 5000, "OnDemandTargetCapacity": 0, "TargetCapacityUnitType": "vcpu" } }
InstanceRequirements
Per utilizzare la selezione dell’istanza basata su attributi, è necessario includere la struttura InstanceRequirements nella configurazione del parco istanze e specificare gli attributi desiderati per le istanze nel parco istanze.
Nell’esempio precedente, vengono specificati i seguenti attributi di istanza:
-
VCpuCount: i tipi di istanza devono avere un minimo di 2 e un massimo di 8 vCPU. -
MemoryMiB: i tipi di istanza devono avere un massimo di 10240 MiB di memoria. Un minimo di 0 indica nessun limite minimo. -
MemoryGiBPerVCpu: i tipi di istanza devono avere un massimo di 10.000 MiB di memoria per vCPU. Il parametroMinè facoltativo. Omettendolo, non si indica alcun limite minimo.
TargetCapacityUnitType
Il parametro TargetCapacityUnitType specifica l’unità per la capacità di destinazione. Nell’esempio, la capacità di destinazione è 5000 e il tipo di unità della capacità di destinazione è vcpu, che insieme specificano una capacità di destinazione desiderata di 5.000 vCPU. La serie di istanze spot avvierà un numero sufficiente di istanze in modo che il numero totale di vCPU nel parco istanze sia di 5.000.
Configurazione valida: modello di avvio singolo con più InstancerRequirements
La configurazione seguente è valida. Contiene un modello di avvio e una struttura Overrides contenente due strutture InstanceRequirements. Gli attributi specificati in InstanceRequirements sono validi perché i valori non si sovrappongono; la prima struttura InstanceRequirements specifica un VCpuCount di 0-2 vCPU, mentre la seconda struttura InstanceRequirements specifica 4-8 vCPU.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }
Configurazione valida: due modelli di avvio, ognuno con sostituzioni
La configurazione seguente è valida. Contiene due modelli di avvio, ognuno con una struttura Overrides contenente una struttura InstanceRequirements. Questa configurazione è utile per il supporto delle architetture arm e x86 nello stesso parco istanze.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "armLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "x86LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }
Configurazione valida: specificati solo InstanceRequirements, nessun valore di attributo sovrapposto
La configurazione seguente è valida. Contiene due strutture LaunchTemplateSpecification, ognuna con un modello di avvio e una struttura Overrides contenente una struttura InstanceRequirements. Gli attributi specificati in InstanceRequirements sono validi perché i valori non si sovrappongono; la prima struttura InstanceRequirements specifica un VCpuCount di 0-2 vCPU, mentre la seconda struttura InstanceRequirements specifica 4-8 vCPU.
{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }
Configurazione non valida: Overrides contiene InstanceRequirements e InstanceType
La configurazione seguente non è valida. La struttura Overrides include sia InstanceRequirements che InstanceType. Per le Overrides, è possibile specificare InstanceRequirements o InstanceType, ma non entrambi.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
},
{
"InstanceType": "m5.large"
}
]
}
],
"TargetCapacity": 1,
"OnDemandTargetCapacity": 0,
"Type": "maintain"
}
}
Configurazione non valida: due Overrides contengono InstanceRequirements e InstanceType
La configurazione seguente non è valida. Le strutture Overrides contengono sia InstanceRequirements che InstanceType. È possibile specificare InstanceRequirements o InstanceType ma non entrambi, anche se si trovano in strutture Overrides differenti.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
}
]
},
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyOtherLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "m5.large"
}
]
}
],
"TargetCapacity": 1,
"OnDemandTargetCapacity": 0,
"Type": "maintain"
}
}
Configurazione non valida: valori di attributo sovrapposti
La configurazione seguente non è valida. Le due strutture InstanceRequirements, ognuna contenente "VCpuCount":
{"Min": 0, "Max": 2}. I valori di questi attributi si sovrappongono, il che restituirà pool di capacità duplicati.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "MyLaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
},
{
"InstanceRequirements": {
"VCpuCount": {
"Min": 0,
"Max": 2
},
"MemoryMiB": {
"Min": 0
}
}
}
}
]
}
],
"TargetCapacity": 1,
"OnDemandTargetCapacity": 0,
"Type": "maintain"
}
}
Anteprima di tipi di istanza con attributi specificati
Puoi utilizzare il comando get-instance-types-from-instance-requirements per visualizzare in anteprima i tipi di istanza che corrispondono agli attributi specificati. Ciò è particolarmente utile per capire quali attributi specificare nella configurazione della richiesta senza avviare alcuna istanza. Si noti che il comando non considera la capacità disponibile.
Come visualizzare in anteprima un elenco dei tipi di istanza specificando gli attributi tramite la AWS CLI
-
(Facoltativo) Per generare tutti gli attributi possibili che possono essere specificati, utilizzare il comando get-instance-types-from-instance-requirements e il parametro
--generate-cli-skeleton. Facoltativamente, è possibile indirizzare l’output a un file per salvarlo tramiteinput >.attributes.jsonaws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input >attributes.jsonOutput previsto
{ "DryRun": true, "ArchitectureTypes": [ "i386" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "intel" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "current" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "included", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "included", "LocalStorageTypes": [ "hdd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "gpu" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "nvidia" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 }, "NetworkBandwidthGbps": { "Min": 0.0, "Max": 0.0 }, "AllowedInstanceTypes": [ "" ] }, "MaxResults": 0, "NextToken": "" } -
Creare un file di configurazione JSON utilizzando l’output del passaggio precedente e configurarlo come segue:
Nota
È necessario fornire valori per
ArchitectureTypes,VirtualizationTypes,VCpuCounteMemoryMiB. È possibile omettere gli altri attributi, nel qual caso saranno utilizzati i valori di default.Per una descrizione di ciascun attributo e dei relativi valori di default, consulta get-instance-types-from-instance-requirements.
-
Per
ArchitectureTypes, specificare uno o più tipi di architettura del processore. -
Per
VirtualizationTypes, specificare uno o più tipi di virtualizzazione. -
Per
VCpuCount, specificare il numero minimo e massimo di vCPU. Per non specificare un limite minimo, perMin, specificare0. Per non specificare alcun limite massimo, omettere il parametroMax. -
Per
MemoryMiB, specificare la quantità minima e massima di memoria in MiB. Per non specificare un limite minimo, perMin, specificare0. Per non specificare alcun limite massimo, omettere il parametroMax. -
Facoltativamente, è possibile specificare uno o più altri attributi per limitare ulteriormente l’elenco di tipi di istanza restituiti.
-
-
Per visualizzare in anteprima i tipi di istanza con gli attributi specificati nel file JSON, utilizzare il comando get-instance-types-from-instance-requirements e specificare il nome e il percorso del file JSON utilizzando il parametro
--cli-input-json. Facoltativamente, è possibile formattare l’output in modo che venga visualizzato in un formato tabella.aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json\ --output tableEsempio di file
attributes.jsonIn questo esempio gli attributi richiesti sono inclusi nel file JSON. Tali attributi sono
ArchitectureTypes,VirtualizationTypes,VCpuCounteMemoryMiB. Inoltre, è incluso anche l’attributo facoltativoInstanceGenerations. Tenere presente che perMemoryMiB, il valoreMaxpuò essere omesso per indicare che non c’è alcun limite.{ "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }Output di esempio
------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || d2.xlarge || ... -
Dopo aver identificato i tipi di istanza che soddisfano le proprie esigenze, prendere nota degli attributi di istanza utilizzati in modo da poterli utilizzare durante la configurazione della richiesta del parco istanze.