Attributbasierte Auswahl von Instance-Typen für Spot-Flotte - Amazon Elastic Compute Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Attributbasierte Auswahl von Instance-Typen für Spot-Flotte

Wenn Sie eine Spot-Flotte erstellen, müssen Sie mindestens einen Instance-Typ für die Konfiguration der On-Demand-Instances und Spot-Instances in der Flotte angeben. Alternativ zur manuellen Angabe der Instance-Typen können Sie die Attribute angeben, die eine Instance haben muss, und Amazon EC2 identifiziert alle Instance-Typen mit diesen Attributen. Dies ist bekannt als attributbasierte Instance-Typauswahl. Sie können beispielsweise die minimale und maximale Anzahl von vCPUs angeben, die für Ihre Instances erforderlich sind, und die Spot-Flotte startet die Instances mit allen verfügbaren Instance-Typen, die diese vCPU-Anforderungen erfüllen.

Die attributbasierte Auswahl von Instance-Typen ist ideal für Workloads und Frameworks, die hinsichtlich der verwendeten Instance-Typen flexibel sein können, etwa beim Ausführen von Containern oder Web-Flotten, beim Verarbeiten von Big Data und der Implementierung von Tools zur fortlaufenden Integration und Bereitstellung (CI/CD).

Vorteile

Die Auswahl des attributbasierten Instance-Typs bietet folgende Vorteile:

  • Einfache Verwendung der richtigen Instance-Typen — Bei so vielen verfügbaren Instance-Typen kann es zeitaufwändig sein, die richtigen Instance-Typen für Ihren Workload zu finden. Wenn Sie Instance-Attribute angeben, haben die Instance-Typen automatisch die erforderlichen Attribute für Ihre Workload.

  • Vereinfachte Konfiguration — Um mehrere Instance-Typen für eine Spot-Flotte manuell anzugeben, müssen Sie für jeden Instance-Typ eine separate Überschreibung der Startvorlage erstellen. Bei der attributbasierten Auswahl von Instance-Typen müssen Sie jedoch nur die Instance-Attribute in der Startvorlage oder in einer Startvorlagen-Überschreibung angeben, um mehrere Instance-Typen bereitzustellen.

  • Automatische Verwendung neuer Instance-Typen — Wenn Sie Instance-Attribute anstelle von Instance-Typen angeben, kann Ihre Flotte Instance-Typen der neueren Generation verwenden, sobald sie veröffentlicht werden, was die Konfiguration der Flotte „zukunftssicher“ macht.

  • Flexibilität beim Instance-Typ — Wenn Sie Instance-Attribute anstelle von Instance-Typen angeben, kann Spot Fleet für den Start von Spot-Instances aus einer Vielzahl von Instance-Typen wählen. Dies entspricht den bewährten Methoden von Spot zur Flexibilität von Instance-Typen.

Attributbasierte Auswahl von Instance-Typen

Um die attributbasierte Auswahl von Instance-Typen in Ihrer Flottenkonfiguration zu verwenden, ersetzen Sie die Liste der Instance-Typen durch eine Liste von Instance-Attributen, die Ihre Instances erfordern. Die Spot-Flotte startet Instances für alle verfügbaren Instance-Typen mit den angegebenen Instance-Attributen.

Arten von Instance-Attributen

Es gibt mehrere Instance-Attribute, die Sie angeben können, um Ihre Rechenanforderungen auszudrücken, wie z. B.:

  • vCPU-Anzahl — Die minimale und maximale Anzahl von vCPUs pro Instanz.

  • Arbeitsspeicher — Das Minimum und das Maximum an Arbeitsspeicher GiBs pro Instanz.

  • Lokaler Speicher — Ob EBS- oder Instance-Speicher-Volumes für den lokalen Speicher verwendet werden sollen.

  • Spitzenleistung — Ob die T-Instance-Familie verwendet werden soll, einschließlich der Typen T4g, T3a, T3 und T2.

Eine Beschreibung der einzelnen Attribute und der Standardwerte finden Sie InstanceRequirementsin der Amazon EC2 API-Referenz.

Wo wird die attributbasierte Auswahl von Instance-Typen konfiguriert?

Je nachdem, ob Sie die Konsole oder die verwenden AWS CLI, können Sie die Instance-Attribute für die attributbasierte Auswahl des Instance-Typs wie folgt angeben:

In der Konsole können Sie die Instance-Attribute in einer oder beiden der folgenden Flottenkonfigurationskomponenten angeben:

  • In einer Startvorlage. Verweisen Sie dann in der Flottenanforderung auf die Startvorlage

  • In der Flottenanforderung

In der AWS CLI können Sie die Instance-Attribute in einer oder allen der folgenden Flottenkonfigurationskomponenten angeben:

  • In einer Startvorlage. Verweisen Sie in der Flottenanforderung auf die Startvorlage.

  • In einer Startvorlagen-Überschreibung

    Wenn Sie eine Mischung aus Instances wünschen, die verschiedene AMIs verwenden, können Sie Instance-Attribute in mehreren Startvorlagen-Überschreibungen angeben. Zum Beispiel können verschiedene Instance-Typen x86- und ARM-basierte Prozessoren verwenden.

  • In einer Startspezifikation

Wie die Spot-Flotte bei der Bereitstellung einer Flotte die attributbasierte Auswahl von Instance-Typen verwendet

Die Spot-Flotte stellt eine Flotte auf folgende Weise bereit:

  • Die Spot-Flotte identifiziert die Instance-Typen mit den angegebenen Attributen.

  • Die Spot-Flotte bestimmt anhand des Preisschutzes, welche Instance-Typen ausgeschlossen werden sollen.

  • Spot Fleet bestimmt anhand der AWS Regionen oder Availability Zones, die über die entsprechenden Instance-Typen verfügen, die Kapazitätspools, aus denen der Start der Instances in Betracht gezogen wird.

  • Die Spot-Flotte wendet die angegebene Zuweisungsstrategie an, um zu bestimmen, aus welchen Kapazitätspools die Instances gestartet werden sollen.

    Beachten Sie, dass die attributbasierte Auswahl von Instance-Typen nicht die Kapazitätspools auswählt, aus denen die Flotte bereitgestellt werden soll. Dies ist die Aufgabe der Zuweisungsstrategien. Es kann eine große Anzahl von Instance-Typen mit den angegebenen Attributen geben und einige von ihnen sind unter Umständen teuer.

    Wenn Sie eine Zuweisungsstrategie angeben, startet die Spot-Flotte Instances gemäß der angegebenen Zuweisungsstrategie.

    • Bei Spot-Instances unterstützt die attributbasierte Auswahl von Instance-Typen die capacityOptimizedPrioritized- und capacityOptimized- Zuweisungsstrategien.

    • Bei On-Demand-Instances unterstützt die attributbasierte Auswahl des Instance-Typs die lowestPrice Zuweisungsstrategie, die garantiert, dass Spot Fleet On-Demand-Instances aus den kostengünstigsten Kapazitätspools startet.

  • Wenn es keine Kapazität für die Instance-Typen mit den angegebenen Instance-Attributen gibt, können keine Instances gestartet werden und die Flotte gibt einen Fehler zurück.

Preisschutz

Der Preisschutz ist ein Feature, die verhindert, dass Ihre Spot-Flotte Instance-Typen verwendet, die Sie für zu teuer halten würden, selbst wenn sie den von Ihnen angegebenen Attributen entsprechen. Um den Preisschutz zu nutzen, legen Sie einen Preisgrenzwert fest. Wenn Amazon EC2 dann Instance-Typen mit Ihren Attributen auswählt, schließt es Instance-Typen aus, deren Preis über Ihrem Schwellenwert liegt.

Amazon EC2 berechnet den Preisschwellenwert wie folgt:

  • Amazon EC2 identifiziert zunächst den Instance-Typ mit dem niedrigsten Preis aus den Instance-Typen, die Ihren Attributen entsprechen.

  • Amazon EC2 nimmt dann den Wert (ausgedrückt als Prozentsatz), den Sie für den Preisschutzparameter angegeben haben, und multipliziert ihn mit dem Preis des identifizierten Instance-Typs. Das Ergebnis ist der Preis, der als Preisschwellenwert verwendet wird.

Es gibt separate Preisschwellen für On-Demand-Instances und Spot-Instances.

Wenn Sie eine Flotte mit attributbasierter Instance-Typauswahl erstellen, ist der Preisschutz standardmäßig aktiviert. Sie können die Standardwerte beibehalten oder eigene Werte angeben.

Sie können den Preisschutz auch deaktivieren. Um anzugeben, dass es keinen Schwellenwert für den Preisschutz gibt, geben Sie einen hohen Prozentwert an, z. 999999 B.

Wie wird der Instance-Typ mit dem niedrigsten Preis identifiziert

Amazon EC2 bestimmt den Preis, auf dem der Preisschwellenwert basieren soll, indem es den Instance-Typ mit dem niedrigsten Preis aus den Instance-Typen identifiziert, die Ihren angegebenen Attributen entsprechen. Dies geschieht auf folgende Weise:

  • Zunächst werden die Instance-Typen C, M oder R der aktuellen Generation betrachtet, die Ihren Attributen entsprechen. Wenn es Übereinstimmungen findet, wird der Instance-Typ mit dem niedrigsten Preis identifiziert.

  • Wenn es keine Übereinstimmung gibt, sucht es nach allen Instance-Typen der aktuellen Generation, die Ihren Attributen entsprechen. Wenn es Übereinstimmungen findet, wird der Instance-Typ mit dem niedrigsten Preis identifiziert.

  • Wenn es keine Übereinstimmung gibt, sucht es nach allen Instance-Typen der vorherigen Generation, die Ihren Attributen entsprechen, und identifiziert den Instance-Typ mit dem niedrigsten Preis.

Preisschutz für On-Demand-Instances

Der Schwellenwert für den Preisschutz für On-Demand-Instance-Typen wird als Prozentsatz berechnet, der über dem identifizierten On-Demand-Instance-Typ mit dem niedrigsten Preis liegt (OnDemandMaxPricePercentageOverLowestPrice). Sie geben den höheren Prozentsatz an, den Sie bereit sind zu zahlen. Wenn Sie diesen Parameter nicht angeben, 20 wird der Standardwert von verwendet, um einen Preisschutzschwellenwert zu berechnen, der 20% über dem identifizierten Preis liegt.

Wenn der identifizierte On-Demand-Instance-Preis beispielsweise0.4271, und Sie angeben25, liegt der Preisschwellenwert 25% über0.4271. Er wird wie folgt berechnet:0.4271 * 1.25 = 0.533875. Der berechnete Preis ist der Höchstbetrag, den Sie bereit sind, für On-Demand-Instances zu zahlen. In diesem Beispiel schließt Amazon EC2 alle On-Demand-Instance-Typen aus, die mehr als 0.533875 kosten.

Preisschutz für Spot-Instances

Standardmäßig wendet Amazon EC2 automatisch den optimalen Spot-Instance-Preisschutz an, sodass konsistent aus einer Vielzahl von Instance-Typen ausgewählt werden kann. Sie können den Preisschutz auch manuell selbst festlegen. Wenn Sie dies jedoch Amazon EC2 für Sie erledigen lassen, können Sie die Wahrscheinlichkeit erhöhen, dass Ihre Spot-Kapazität ausgeschöpft ist.

Sie können den Preisschutz mithilfe einer der folgenden Optionen manuell angeben. Wenn Sie den Preisschutz manuell festlegen, empfehlen wir, die erste Option zu verwenden.

  • Ein Prozentsatz des identifizierten On-Demand-Instance-Typs mit dem niedrigsten Preis [MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]

    Wenn der angegebene Preis für den On-Demand-Instance-Typ 0.4271 beispielsweise ist und Sie angeben60, liegt der Preisgrenzwert bei 60% von0.4271. Er wird wie folgt berechnet:0.4271 * 0.60 = 0.25626. Der berechnete Preis ist der Höchstbetrag, den Sie bereit sind, für Spot-Instances zu zahlen. In diesem Beispiel schließt Amazon EC2 alle Spot-Instance-Typen aus, die mehr als 0.25626 kosten.

  • Ein Prozentsatz, der höher ist als der identifizierte Spot-Instance-Typ mit dem niedrigsten Preis [] SpotMaxPricePercentageOverLowestPrice

    Wenn der Preis für den identifizierten Spot-Instance-Typ beispielsweise und Sie angeben25, liegt der Preisschwellenwert 25% über0.1808. 0.1808 Er wird wie folgt berechnet:0.1808 * 1.25 = 0.226. Der berechnete Preis ist der Höchstbetrag, den Sie bereit sind, für Spot-Instances zu zahlen. In diesem Beispiel schließt Amazon EC2 alle Spot-Instance-Typen aus, die mehr als 0.266 kosten. Wir empfehlen, diesen Parameter nicht zu verwenden, da die Spot-Preise schwanken können und daher auch Ihr Preisschutzschwellenwert schwanken kann.

Geben Sie die Preisschutzschwelle an

Schwellenwert für Preisschutz angeben

Konfigurieren Sie beim Erstellen der Spot-Flotte die Flotte für eine attributbasierte Auswahl des Instance-Typs und gehen Sie dann folgendermaßen vor:

  • Konsole

    Zur Eingabe des Schwellenwerts für On-Demand-Instance-Preisschutz wählen Sie unter Additional instance attribute (Zusätzliches Instance-Attribut) die Option On-demand price protection (On-Demand-Preisschutz) aus. Wählen Sie dann Add attribute (Attribut hinzufügen) aus. Geben Sie bei On-Demand price protection percentage (Prozentsatz des On-Demand-Preisschutzes) den Preisschutzschwellenwert als Prozentsatz ein.

    Zur Eingabe des Schwellenwerts für Spot-Instance-Preisschutz wählen Sie unter Additional instance attribute (Zusätzliches Instance-Attribut) die Option Sport price protection (Spot-Preisschutz) aus. Wählen Sie dann Add attribute (Attribut hinzufügen) aus. Wählen Sie einen Parameter und geben Sie den Preisschutzschwellenwert als Prozentsatz ein.

  • AWS CLI

    Zum Angeben des Schwellenwerts zum Preisschutz für On-Demand-Instances geben Sie in der JSON-Konfigurationsdatei in der InstanceRequirements-Struktur für OnDemandMaxPricePercentageOverLowestPrice den Preisschutzschwellenwert als Prozentsatz ein.

    Um den Schwellenwert für den Preisschutz der Spot-Instance anzugeben, geben Sie in der JSON-Konfigurationsdatei in der InstanceRequirements Struktur einen der folgenden Parameter an:

    • Geben Sie für MaxSpotPriceAsPercentageOfOptimalOnDemandPrice den Schwellenwert für den Preisschutz als Prozentsatz ein.

    • Geben Sie für SpotMaxPricePercentageOverLowestPrice die Preisschutzschwelle als Prozentsatz ein.

Weitere Informationen zum Erstellen der Flotte finden Sie unter Erstellen einer Spot-Flotte mit attributbasierter Auswahl von Instance-Typen.

Anmerkung

Wenn Sie beim Erstellen der Spot-Flotte Total target capacity (Gesamtzielkapazität) auf vCPUs oder Memory (MiB) (Arbeitsspeicher (MiB)) (Konsole) oder TargetCapacityUnitType auf vcpu oder memory-mib (AWS CLI) festlegen, wird der Preisschutzschwellenwert anhand des Preises pro vCPU oder pro Arbeitsspeicher anstelle des Preises pro Instance angewendet.

Überlegungen

  • Sie können entweder Instance-Typen oder Instance-Attribute in einer Spot-Flotte angeben, aber nicht beides gleichzeitig.

    Wenn Sie die CLI verwenden, überschreiben die Startvorlagen-Überschreibungen die Startvorlage. Wenn die Startvorlage beispielsweise einen Instance-Typ enthält und die Startvorlagen-Überschreibung Instance-Attribute enthält, überschreiben die Instances, die durch die Instance-Attribute identifiziert werden, den Instance-Typ in der Startvorlage.

  • Wenn Sie die CLI verwenden und Instance-Attribute als Überschreibungen angeben, können Sie nicht auch Gewichtungen oder Prioritäten angeben.

  • Sie können maximal vier InstanceRequirements-Strukturen in einer Anforderungskonfiguration angeben.

Erstellen einer Spot-Flotte mit attributbasierter Auswahl von Instance-Typen

Sie können mithilfe der Amazon-EC2-Konsole oder der AWS CLI eine Flotte so konfigurieren, dass sie die attributbasierte Auswahl von Instance-Typen verwendet.

Erstellen einer Spot-Flotte mit der Konsole

So konfigurieren Sie eine Spot-Flotte für die attributbasierte Auswahl von Instance-Typen (Konsole)
  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Klicken Sie im Navigationsbereich auf Spot-Anforderungen und wählen Sie die Spot-Instances anfordern aus.

  3. Befolgen Sie die Schritte zum Erstellen einer Spot-Flotte. Weitere Informationen finden Sie unter Erstellen einer Spot-Flotten-Anforderung mit definierten Parametern (Konsole).

    Konfigurieren Sie beim Erstellen der Spot-Flotte wie folgt die Flotte für die attributbasierte Auswahl von Instance-Typen:

    1. Wählen Sie für Instance type requirements (Anforderungen hinsichtlich des Instance-Typs) die Option Specify instance attributes that match your compute requirements (Instance-Attribute angeben, die Ihren Computinganforderungen entsprechen) aus.

    2. Geben Sie für vCPUs die gewünschte minimale und maximale Anzahl der vCPUs ein. Um kein Limit anzugeben, wählen Sie Kein Minimum, Kein Maximum oder beides.

    3. Geben Sie für Arbeitsspeicher (GiB) den gewünschten Mindest- und Höchstwert ein. Um kein Limit anzugeben, wählen Sie Kein Minimum, Kein Maximum oder beide Optionen aus.

    4. (Optional) Für Zusätzliche Instance-Attribute können Sie optional ein oder mehrere Attribute angeben, um Ihre Computinganforderungen genauer auszudrücken. Jedes zusätzliche Attribut fügt Ihrer Anfrage weitere Einschränkungen hinzu.

    5. (Optional) Um die Instance-Typen mit Ihren angegebenen Attributen anzuzeigen, erweitern Sie Vorschau der übereinstimmenden Instance-Typen.

Erstellen Sie eine Spot-Flotte mit dem AWS CLI

So konfigurieren Sie eine Spot-Flotte für die attributbasierte Auswahl von Instance-Typen (AWS CLI)

Verwenden Sie den Befehl request-spot-fleet(AWS CLI), um eine Spot-Flotte zu erstellen. Geben Sie die Flottenkonfiguration in einer JSON-Datei an.

aws ec2 request-spot-fleet \ --region us-east-1 \ --spot-fleet-request-config file://file_name.json

file_name.json-Beispieldatei

Das folgende Beispiel enthält Parameter, mit denen eine Spot-Flotte für attributbasierte Instance-Typauswahl konfiguriert wird, gefolgt von einer Texterklärung.

{ "AllocationStrategy": "priceCapacityOptimized", "TargetCapacity": 20, "Type": "request", "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }] }

Die Attribute für die attributbasierte Auswahl von Instance-Typen werden in der InstanceRequirements-Struktur angegeben. In diesem Beispiel werden zwei Attribute angegeben:

  • VCpuCount – Es sind mindestens 2 vCPUs angegeben. Da kein Maximum angegeben ist, gibt es keine Höchstgrenze.

  • MemoryMiB – Es werden mindestens 4 MiB Arbeitsspeicher angegeben. Da kein Maximum angegeben ist, gibt es keine Höchstgrenze.

Alle Instance-Typen mit 2 oder mehr vCPUs und 4 MiB oder mehr Arbeitsspeicher werden identifiziert. Der Preisschutz und die Zuweisungsstrategie könnten jedoch einige Instance-Typen ausschließen, wenn die Spot-Flotte die Flotte bereitstellt.

Eine Liste und Beschreibungen aller möglichen Attribute, die Sie angeben können, finden Sie InstanceRequirementsin der Amazon EC2 API-Referenz.

Anmerkung

Wenn InstanceRequirements in der Flottenkonfiguration enthalten ist, müssen InstanceType und WeightedCapacity ausgeschlossen werden. Sie können die Flottenkonfiguration nicht gleichzeitig mit den Instance-Attributen bestimmen.

Die JSON-Datei enthält auch die folgende Flottenkonfiguration:

  • "AllocationStrategy": "priceCapacityOptimized" – Die Zuweisungsstrategie für die Spot Instances in der Flotte.

  • "LaunchTemplateName": "my-launch-template", "Version": "1" – Die Startvorlage enthält einige Informationen zur Instance-Konfiguration. Wenn jedoch Instance-Typen angegeben sind, werden diese durch die in InstanceRequirements angegebenen Attribute überschrieben.

  • "TargetCapacity": 20 – Die Zielkapazität beträgt 20 Instances.

  • "Type": "request" – Der Anforderungstyp für die Flotte ist request.

Beispiele für Konfigurationen, die gültig und ungültig sind

Wenn Sie den verwenden AWS CLI , um eine Spot-Flotte zu erstellen, müssen Sie sicherstellen, dass Ihre Flottenkonfiguration gültig ist. Die folgenden Beispiele zeigen gültige und ungültige Konfigurationen.

Konfigurationen gelten als ungültig, wenn sie Folgendes enthalten:

  • Eine einzelne Overrides-Struktur mit InstanceRequirements und InstanceType

  • Zwei Overrides-Strukturen, eine mit InstanceRequirements und die andere mit InstanceType

  • Zwei InstanceRequirements-Strukturen mit sich überlappenden Attributwerten innerhalb derselben LaunchTemplateSpecification

Gültige Konfiguration: Einzelstartvorlage mit Überschreibungen

Die folgende Konfiguration ist gültig. Sie enthält eine Startvorlage und eine Overrides-Struktur mit einer InstanceRequirements-Struktur. Eine Texterklärung der Beispielkonfiguration folgt.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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

Um die attributbasierte Instance-Auswahl zu verwenden, müssen Sie die InstanceRequirements-Struktur in Ihre Flottenkonfiguration aufnehmen und die gewünschten Attribute für die Instances in der Flotte angeben.

Im vorhergehenden Beispiel werden die folgenden Instance-Attribute angegeben:

  • VCpuCount – Die Instance-Typen müssen mindestens 2 und höchstens 8 vCPUs aufweisen.

  • MemoryMiB – Die Instance-Typen müssen maximal 10240 MiB Speicher haben. Ein Minimum von 0 bedeutet, dass kein Mindestwert vorhanden ist.

  • MemoryGiBPerVCpu – Die Instance-Typen müssen maximal 10 000 GiB Speicher pro vCPU haben. Der Parameter Min ist optional. Indem Sie ihn weglassen, geben Sie kein Mindestlimit an.

TargetCapacityUnitType

Der TargetCapacityUnitType-Parameter gibt die Einheit für die Zielkapazität an. Im Beispiel ist die Zielkapazität 5000 und der Typ der Zielkapazitätseinheit vcpu. Zusammen geben Sie eine gewünschte Zielkapazität von 5 000 vCPUs an. Die Spot-Flotte wird genügend Instances starten, damit die Gesamtzahl der vCPUs in der Flotte 5 000 vCPUs beträgt.

Gültige Konfiguration: Einzelne Startvorlage mit mehreren InstanceRequirements

Die folgende Konfiguration ist gültig. Sie enthält eine Startvorlage und eine Overrides-Struktur mit zwei InstanceRequirements-Strukturen. Die in InstanceRequirements angegebenen Attribute sind gültig, da sich die Werte nicht überschneiden – die erste InstanceRequirements-Struktur gibt eine VCpuCount von 0-2 vCPUs an, während die zweite InstanceRequirements-Struktur 4-8 vCPUs angibt.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Gültige Konfiguration: Zwei Startvorlagen, jede mit Überschreibungen

Die folgende Konfiguration ist gültig. Sie enthält zwei Startvorlagen mit jeweils einer Overrides-Struktur, die eine InstanceRequirements-Struktur enthält. Diese Konfiguration ist nützlich für arm- und x86-Architekturunterstützung in derselben Flotte.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Gültige Konfiguration: Nur InstanceRequirements angegeben, keine überlappenden Attributwerte

Die folgende Konfiguration ist gültig. Sie enthält zwei LaunchTemplateSpecification-Strukturen, jeweils mit einer Startvorlage und einer Overrides-Struktur, die eine InstanceRequirements-Struktur enthält. Die in InstanceRequirements angegebenen Attribute sind gültig, da sich die Werte nicht überschneiden – die erste InstanceRequirements-Struktur gibt eine VCpuCount von 0-2 vCPUs an, während die zweite InstanceRequirements-Struktur 4-8 vCPUs angibt.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Die Konfiguration ist nicht gültig: Overrides enthalten InstanceRequirements und InstanceType.

Die folgende Konfiguration ist ungültig. Die Overrides-Struktur enthält InstanceRequirements und InstanceType. Sie können für Overrides InstanceRequirements oder InstanceType angeben, aber nicht beides.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Konfiguration ungültig: Zwei Overrides enthalten InstanceRequirements und InstanceType

Die folgende Konfiguration ist ungültig. Die Overrides-Strukturen enthalten InstanceRequirements und InstanceType. Sie können entweder InstanceRequirements oder InstanceType angeben, aber nicht beides, auch wenn sie sich in unterschiedlichen Overrides-Strukturen befinden.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Konfiguration ungültig: Überlappende Attributwerte

Die folgende Konfiguration ist ungültig. Die beiden InstanceRequirements-Strukturen enthalten jeweils "VCpuCount": {"Min": 0, "Max": 2}. Die Werte für diese Attribute überschneiden sich, was zu doppelten Kapazitätspools führt.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000: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" } }

Vorschau von Instance-Typen mit bestimmten Attributen

Sie können den AWS CLI Befehl get-instance-types-from-instance-requirements verwenden, um eine Vorschau der Instance-Typen anzuzeigen, die den von Ihnen angegebenen Attributen entsprechen. Dies ist besonders nützlich, um herauszufinden, welche Attribute in Ihrer Anforderungskonfiguration angegeben werden sollen, ohne Instances zu starten. Beachten Sie, dass der Befehl die verfügbare Kapazität nicht berücksichtigt.

Um eine Vorschau einer Liste von Instanztypen anzuzeigen, indem Sie Attribute mit dem AWS CLI
  1. (Optional) Um alle möglichen Attribute zu generieren, die angegeben werden können, verwenden Sie den Befehl get-instance-types-from-instance-requirements und den Parameter. --generate-cli-skeleton Sie können die Ausgabe optional in eine Datei umleiten, um sie mit mit input > attributes.json zu speichern.

    aws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input > attributes.json

    Erwartete Ausgabe

    { "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": "" }
  2. Erstellen Sie eine JSON-Konfigurationsdatei mit der Ausgabe des vorherigen Schritts und konfigurieren Sie sie wie folgt:

    Anmerkung

    Sie müssen Werte für ArchitectureTypes, VirtualizationTypes, VCpuCount und MemoryMiB angeben. Sie können die anderen Attribute weglassen. In diesem Fall werden die Standardwerte verwendet.

    Eine Beschreibung der einzelnen Attribute und ihrer Standardwerte finden Sie unter get-instance-types-from-instance-requirements in der Amazon EC2 EC2-Befehlszeilenreferenz.

    1. Geben Sie für ArchitectureTypes mindestes einen Prozessorarchitekturtyp an.

    2. Geben Sie für VirtualizationTypes mindestens eine Art von Virtualisierung an.

    3. Geben Sie für VCpuCount die minimale und maximale Anzahl von vCPUs an. Wenn Sie keine Mindestgrenze angeben möchten, geben Sie 0 für Min an. Wenn Sie keine Maximalgrenze angeben möchten, lassen Sie den Max-Parameter weg.

    4. Geben Sie für MemoryMiB den Mindest- und Höchstwert für Speicher in MiB an. Wenn Sie keine Mindestgrenze angeben möchten, geben Sie 0 für Min an. Wenn Sie keine Maximalgrenze angeben möchten, lassen Sie den Max-Parameter weg.

    5. Sie können optional eines oder mehrere der anderen Attribute angeben, um die Liste der zurückgegebenen Instance-Typen weiter einzuschränken.

  3. Um eine Vorschau der Instance-Typen mit den Attributen anzuzeigen, die Sie in der JSON-Datei angegeben haben, verwenden Sie den Befehl get-instance-types-from-instance-requirements und geben Sie mithilfe des Parameters den Namen und den Pfad zu Ihrer JSON-Datei an. --cli-input-json Sie können die Ausgabe optional so formatieren, dass sie in einem Tabellenformat angezeigt wird.

    aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json \ --output table

    Beispiel-Datei Attribute.json

    In diesem Beispiel sind die erforderlichen Attribute in der JSON-Datei enthalten. Sie lauten ArchitectureTypes, VirtualizationTypes, VCpuCount, und MemoryMiB. Darüber hinaus ist das optionale InstanceGenerations-Attribut ebenfalls enthalten. Beachten Sie, dass für MemoryMiB der Max-Wert weggelassen werden kann, um anzuzeigen, dass kein Grenzwert vorhanden ist.

    { "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }

    Beispielausgabe

    ------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || c6a.xlarge || ...
  4. Nachdem Sie Instance-Typen identifiziert haben, die Ihren Anforderungen entsprechen, notieren Sie die Instance-Attribute, die Sie verwendet haben, damit Sie sie beim Konfigurieren Ihrer Flottenanforderung verwenden können.