Arbeiten mit EC2-Flotten - 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.

Arbeiten mit EC2-Flotten

Um mit EC2-Flotte zu beginnen, erstellen Sie eine Anforderung mit der Gesamtzielkapazität, der On-Demand-Kapazität, der Spot-Kapazität und einer oder mehreren Startspezifikationen für die Instances sowie dem Höchstpreis, den Sie zu zahlen bereit sind. Die Flottenanforderung muss eine Startvorlage enthalten, die die Informationen definiert, die die Flotte benötigt, um eine Instance zu starten, z. B. eine AMI, einen Instance-Typ, ein Subnetz oder eine Availability Zone, und eine oder mehrere Sicherheitsgruppen. Sie können für den Instance-Typ, das Subnetz, die Availability Zone und den Höchstpreis, den Sie zu zahlen bereit sind, Startspezifikationen überschreiben und Sie können jeder Startspezifikation eine gewichtete Kapazität zuweisen.

Die EC2-Flotte startet On-Demand-Instances, wenn freie Kapazität vorhanden ist, und startet Spot-Instances, wenn Ihr Höchstpreis den Spot-Preis übersteigt und Kapazität verfügbar ist.

Wenn Ihre Flotte Spot-Instances enthält, kann Amazon EC2 versuchen, Ihre Flotten-Zielkapazität aufrechtzuerhalten, wenn sich die Spot-Preise ändern.

Eine EC2-Flotte-Anforderung vom Typ maintain oder request bleibt solange aktiv, bis sie abläuft oder Sie sie löschen. Wenn Sie eine Flotte vom Typ maintain oder request löschen, können Sie angeben, ob das Löschen die Instances dieser Flotte beendet. Anderenfalls werden die On-Demand-Instances so lange ausgeführt, bis Sie sie beenden. Die Spot-Instances werden ausgeführt, bis sie unterbrochen oder von Ihnen beendet werden.

EC2-Flotte-Anforderungsstatus

Eine EC2-Flotte-Anfrage kann die folgenden Zustände aufweisen:

submitted

Die EC2-Flotte-Anforderung wird evaluiert und Amazon EC2 bereitet den Start der Zielanzahl von Instances vor. Die Anfrage kann On-Demand-Instances, Spot-Instances oder beides enthalten. Wenn eine Anforderung Ihre Flottenlimits überschreiten würde, wird sie sofort gelöscht.

active

Die EC2-Flotte-Anfrage wurde validiert und Amazon EC2 versucht, die Zielanzahl der laufenden Instances beizubehalten. Die Anforderung bleibt so lange in diesem Zustand, bis sie geändert oder gelöscht wird.

modifying

Die EC2-Flotte-Anforderung wird geändert. Die Anforderung bleibt in diesem Zustand, bis die Änderung vollständig bearbeitet oder die Anforderung gelöscht wird. Nur ein maintain-Flottentyp kann geändert werden. Dieser Status gilt nicht für die anderen Anforderungstypen.

deleted_running

Die EC2-Flotte-Anforderung wird gelöscht und startet keine weiteren Instances. Die bestehenden Instances laufen weiter, bis sie unterbrochen oder manuell beendet werden. Die Anforderung bleibt so lange in diesem Zustand, bis alle Instances unterbrochen oder beendet wurden. Nur ein EC2-Flotte vom Typ maintain oder request kann laufende Instances haben, nachdem die EC2-Flotte-Anforderung gelöscht wurde. Eine gelöschte instant-Flotte mit laufenden Instances wird nicht unterstützt. Dieser Status gilt nicht für instant-Flotten.

deleted_terminating

Die EC2-Flotte-Anforderung wird gelöscht und die zugehörigen Instances werden beendet. Die Anforderung bleibt so lange in diesem Zustand, bis alle Instances beendet wurden.

deleted

Die EC2-Flotte wird gelöscht und hat keine laufenden Instances. Die Anforderung wird zwei Tage nach Beendigung der zugehörigen Instances gelöscht.

EC2-Flotte-Voraussetzungen

Startvorlage

Eine Startvorlage enthält Informationen über die zu startenden Instances, wie den Instance-Typ, die Availability Zone und den Höchstpreis, den Sie zu zahlen bereit sind. Weitere Informationen finden Sie unter Starten einer Instance über eine Startvorlage.

Serviceverknüpfte Rolle für EC2-Flotte

Die AWSServiceRoleForEC2Fleet-Rolle gewährt der EC2-Flotte die Berechtigung, in Ihrem Namen Instances anzufordern, zu launchen, zu beenden und zu markieren. Amazon EC2 verwendet diese serviceverknüpfte Rolle, um die folgenden Aktionen durchzuführen:

  • ec2:RunInstances – Instances starten.

  • ec2:RequestSpotInstances – Spot-Instances anfragen.

  • ec2:TerminateInstances – Instances beenden.

  • ec2:DescribeImages – Amazon Machine Images (AMI) für die Spot-Instances beschreiben.

  • ec2:DescribeInstanceStatus – Status der Spot-Instances beschreiben.

  • ec2:DescribeSubnets – Subnetze für Spot-Instances beschreiben.

  • ec2:CreateTags – Tags zu den EC2-Flotte, Instances und Volumes hinzufügen.

Stellen Sie sicher, dass diese Rolle vorhanden ist, bevor Sie die AWS CLI oder eine API verwenden, um eine EC2-Flotte zu erstellen.

Anmerkung

Ein instant EC2-Flotte erfordert diese Rolle nicht.

Um die Rolle anzulegen, verwenden Sie die IAM-Konsole wie folgt.

Um die AWSServiceRoleForEC2Fleet Rolle für die EC2-Flotte zu erstellen
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und dann Create role (Rolle erstellen).

  3. Gehen Sie auf der Seite Typ der vertrauenswürdigen Entität auswählen wie folgt vor:

    1. Wählen Sie unter Vertrauenswürdiger Entitätstyp die Option AWS -Service aus.

    2. Wählen Sie unter Anwendungsfall für Service oder Anwendungsfall die Option EC2 — Fleet aus.

      Tipp

      Achten Sie darauf, EC2 — Fleet auszuwählen. Wenn Sie EC2 wählen, wird der Anwendungsfall EC2 — Fleet nicht in der Liste der Anwendungsfälle angezeigt. Im Anwendungsfall EC2 — Fleet wird automatisch eine Richtlinie mit den erforderlichen IAM-Berechtigungen erstellt und AWSServiceRoleForEC2Fleetals Rollennamen vorgeschlagen.

    3. Wählen Sie Next (Weiter).

  4. Wählen Sie auf der Seite Add permissions (Berechtigungen hinzufügen) die Option Next (Weiter) aus.

  5. Wählen Sie auf der Seite Benennen, Überprüfen und Erstellen die Option Rolle erstellen aus.

Wenn Sie EC2 Fleet nicht mehr verwenden müssen, empfehlen wir Ihnen, die Rolle zu löschen. AWSServiceRoleForEC2Fleet Nachdem diese Rolle aus Ihrem Konto gelöscht wurde, können Sie die Rolle erneut anlegen, wenn Sie eine andere Flotte anlegen.

Weitere Informationen finden Sie unter Verwenden von serviceverknüpften Rollen im -IAM-Benutzerhandbuch.

Gewähren von Zugriff auf von Kunden verwaltete Schlüssel zur Verwendung mit verschlüsselten AMIs und EBS-Snapshots

Wenn Sie in Ihrer EC2-Flotte ein verschlüsseltes AMI oder einen verschlüsselten Amazon EBS-Snapshot angeben und einen AWS KMS Schlüssel für die Verschlüsselung verwenden, müssen Sie der AWSServiceRoleForEC2FleetRolle die Berechtigung zur Verwendung des vom Kunden verwalteten Schlüssels erteilen, damit Amazon EC2 Instances in Ihrem Namen starten kann. Dazu müssen Sie dem vom Kunden verwalteten Schlüssel eine Erteilung hinzufügen, wie im Folgenden gezeigt:

Bei der Einrichtung von Berechtigungen ist die Erteilung von Berechtigung eine Alternative zu Schüsselrichtlinien. Weitere Informationen finden Sie unter Verwenden von Erteilungen und Verwenden von Schlüsselrichtlinien in AWS KMS im Entwicklerhandbuch für AWS Key Management Service .

Um der AWSServiceRoleForEC2Fleet Rolle Berechtigungen zur Verwendung des vom Kunden verwalteten Schlüssels zu erteilen
  • Verwenden Sie den Befehl create-grant, um dem vom Kunden verwalteten Schlüssel einen Zuschuss hinzuzufügen und den Prinzipal (die AWSServiceRoleForEC2Fleetdienstbezogene Rolle) anzugeben, dem die Berechtigung erteilt wird, die durch die Gewährung erlaubten Operationen auszuführen. Der vom Kunden verwaltete Schlüssel wird durch den key-id-Parameter und den ARN des vom Kunden verwalteten Schlüssels angegeben. Der Principal wird durch den grantee-principal Parameter und den ARN der AWSServiceRoleForEC2Fleetdienstverknüpften Rolle angegeben.

    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"

Berechtigungen für EC2-Flotten-Benutzer

Wenn Ihre Benutzer eine EC2-Flotte erstellen oder verwalten, stellen Sie sicher, dass Sie ihnen die erforderlichen Berechtigungen gewähren.

So erstellen Sie eine Richtlinie für EC2-Flotte
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Policies aus.

  3. Wählen Sie Richtlinie erstellen aus.

  4. Wählen Sie auf der Seite Create policy (Richtlinie erstellen) die Registerkarte JSON, ersetzen Sie den Text durch den im Folgenden gezeigten Text, und wählen Sie Review policy (Richtlinie überprüfen).

    { "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:* erteilt einem Benutzer die Berechtigung, alle Amazon-EC2-API-Aktionen aufzurufen. Sie können die Berechtigung eines Benutzer auf bestimmte Amazon EC2-API-Aktionen beschränken, indem Sie diese Aktionen stattdessen explizit angeben.

    Der Benutzer muss über die Berechtigung verfügen, die folgenden Aktionen aufzurufen: iam:ListRoles, um vorhandene IAM-Rollen aufzulisten, iam:PassRole, um die Rolle für die EC2-Flotte anzugeben und iam:ListInstanceProfiles, um vorhandene Instance-Profile aufzulisten.

    (Optional) Um einem Benutzer das Erstellen von Rollen oder Instance-Profilen mithilfe der IAM-Konsole zu ermöglichen, müssen Sie der Richtlinie auch die folgenden Aktionen hinzufügen:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  5. Geben Sie auf der Seite Review policy (Richtlinie überprüfen) einen Richtlinienamen und eine Beschreibung ein und wählen Sie anschließend Create policy (Richtlinie erstellen) aus.

  6. Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:

EC2-Flotte-Zustandsprüfungen

EC2-Flotte überprüft den Zustand der Instances in der Flotte alle zwei Minuten. Der Zustand einer Instance lautet entweder healthy oder unhealthy.

EC2-Flotte bestimmt den Zustand einer Instance mit den von Amazon EC2 bereitgestellten Zustandsprüfungen. Eine Instance wird als unhealthy bestimmt, wenn der Status der Instance-Statusprüfung oder der Systemstatusprüfung für drei aufeinanderfolgende Zustandsprüfungen impaired ist. Weitere Informationen finden Sie unter Statusprüfungen für Ihre Instances.

Sie können Ihre Flotte so konfigurieren, dass nicht voll funktionsfähige Spot-Instances ersetzt werden. Nach der Festlegung von ReplaceUnhealthyInstances auf true wird eine Spot Instance ersetzt, wenn sie als unhealthy gemeldet wird. Die Flotte kann die Zielkapazität einige Minuten lang unterschreiten, während eine nicht voll funktionsfähige Spot-Instance ersetzt wird.

Voraussetzungen
  • Die Ersetzung im Zuge von Zustandsprüfungen wird nur für EC2-Flotten unterstützt, die eine Zielkapazität (Flotten vom Typ maintain) beibehalten und nicht für Flotten vom Typ request oder instant.

  • Der Austausch von Zustandsprüfungen wird nur für Spot-Instances unterstützt. Diese Feature wird für On-Demand-Instances nicht unterstützt.

  • Sie können Ihre EC2-Flotte nur beim Erstellen so konfigurieren, dass nicht voll funktionsfähige Instances ersetzt werden.

  • Benutzer können die Ersetzung im Rahmen von Zustandsprüfungen nur verwenden, wenn sie über die Berechtigung zum Aufrufen der ec2:DescribeInstanceStatus-Aktion verfügen.

So konfigurieren Sie ein EC2-Flotte, um nicht voll funktionsfähige Spot-Instances zu ersetzen
  1. Befolgen Sie die Schritte zum Erstellen von EC2-Flotte. Weitere Informationen finden Sie unter Erstellen einer EC2-Flotte.

  2. Um die Flotte so zu konfigurieren, dass sie nicht voll funktionsfähige Spot-Instances ersetzt, geben Sie in der JSON-Datei für ReplaceUnhealthyInstances true ein.

Erzeugen einer EC2-Flotte-JSON-Konfigurationsdatei

Um die vollständige Liste der EC2-Flottenkonfigurationsparameter anzuzeigen, können Sie eine JSON-Datei erzeugen. Eine Beschreibung aller Parameter finden Sie unter create-fleet in der AWS CLI -Befehlsreferenz.

So erzeugen Sie eine JSON-Datei mit allen verfügbaren EC2-Flotte-Parametern über die Befehlszeile
  • Verwenden Sie den Befehl create-fleet (AWS CLI) und den --generate-cli-skeleton-Parameter, um eine EC2-Flotten-JSON-Datei zu erzeugen und die Ausgabe zum Speichern in eine Datei umzuleiten.

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

    Beispielausgabe

    { "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "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": "" }

Erstellen einer EC2-Flotte

Um eine EC2-Flotte zu erstellen, müssen Sie nur die folgenden Parameter angeben:

  • LaunchTemplateId oder LaunchTemplateName – Gibt die zu verwendende Startvorlage an (die die Parameter für die zu startenden Instances enthält, wie den Instance-Typ, die Availability Zone und den Höchstpreis, den Sie bereit sind zu zahlen)

  • TotalTargetCapacity – Gibt die Gesamtzielkapazität für die Flotte an

  • DefaultTargetCapacityType – Gibt an, ob die Standardkaufoption On-Demand oder Spot ist

Sie können mehrere Startspezifikationen angeben, die die Startvorlage überschreiben. Die Startspezifikationen können je nach Instance-Typ, Availability Zone, Subnetz und Höchstpreis variieren und eine andere gewichtete Kapazität enthalten. Alternativ können Sie die Attribute angeben, die eine Instance haben muss, und Amazon EC2 identifiziert alle Instance-Typen mit diesen Attributen. Weitere Informationen finden Sie unter Attributbasierte Auswahl von Instance-Typen für EC2-Flotte.

Wenn Sie keinen Parameter angeben, verwendet die Flotte den Standardwert für den Parameter.

Geben Sie die Flottenparameter in einer JSON-Datei an. Weitere Informationen finden Sie unter Erzeugen einer EC2-Flotte-JSON-Konfigurationsdatei.

Derzeit wird das Erstellen einer EC2-Flotte in der Konsole nicht unterstützt.

So erstellen Sie eine EC2-Flotte (AWS CLI)
  • Verwenden Sie den Befehl create-fleet (AWS CLI), um eine EC2-Flotte zu erstellen, und geben Sie die JSON-Datei an, die die Flottenkonfigurationsparameter enthält.

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

Beispiel-Konfigurationsdateien finden Sie unter EC2-Flotte-Beispielkonfigurationen.

Es folgt eine Beispielausgabe für eine Flotte des Typs request oder maintain:

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

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die die Zielkapazität gestartet hat:

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

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die die Zielkapazität teilweise mit Fehlern für Instances gestartet hat, die nicht gestartet wurden:

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

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die keine Instances gestartet hat:

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

Markieren einer EC2-Flotte

Um die Kategorisierung und Verwaltung Ihrer EC2-Flotte-Anforderungen zu vereinfachen, können Sie sie mit benutzerdefinierten Metadaten markieren. Sie können einer EC2-Flotte-Anforderung beim Erstellen oder danach ein Tags (Markierungen) zuweisen.

Wenn Sie eine Flottenanforderung markieren, werden die Instances und Volumes, die von der Flotte gestartet werden, nicht automatisch markiert. Sie müssen die von der Flotte gestarteten Instances und Volumes explizit markieren. Sie können festlegen, dass Tags (Markierungen) nur der Flottenanforderung, nur den Instances, die von der Flotte gestartet werden oder nur den Volumes zugewiesen werden, die den Instances zugeordnet sind, die von der Flotte gestartet wurden oder allen drei.

Anmerkung

Bei instant-Flottentypen können Sie Volumes markieren, die an On-Demand-Instances und Spot-Instances angehängt sind. Bei request- oder maintain-Flottentypen können Sie nur Volumes markieren, die an On-Demand-Instances angehängt sind.

Weitere Informationen zur Funktionsweise von Tags (Markierungen) finden Sie unter Markieren Ihrer Amazon-EC2-Ressourcen mit Tags (Markierungen).

Voraussetzung

Gewähren Sie dem Benutzer die Berechtigung zum Markieren von Ressourcen. Weitere Informationen finden Sie unter Beispiel: Markieren von Ressourcen.

So gewähren Sie einem Benutzer die Berechtigung zum Markieren von Ressourcen

Erstellen Sie eine IAM-Richtlinie, die Folgendes beinhaltet:

  • Die Aktion ec2:CreateTags. Dadurch erhält der Benutzer die Berechtigung zum Erstellen von Tags.

  • Die Aktion ec2:CreateFleet. Dadurch wird dem Benutzer die Berechtigung zum Erstellen einer EC2-Flotten-Anfrage gewährt.

  • Für Resource wird empfohlen, dass Sie "*" angeben. Dadurch können Benutzer alle Ressourcentypen markieren.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagEC2FleetRequest", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "*" }
Wichtig

Derzeit unterstützen wir keine Berechtigungen auf Ressourcenebene für die create-fleet-Ressource. Wenn Sie create-fleet als Ressource angeben, erhalten Sie eine nicht autorisierte Ausnahme, wenn Sie versuchen, die Flotte zu markieren. Das folgende Beispiel veranschaulicht, wie die Richtlinie nicht festgelegt wird.

{ "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:create-fleet/*" }

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:

So markieren Sie eine neue EC2-Flotte-Anforderung

Um eine EC2-Flotte-Anforderungen beim Erstellen zu markieren, geben Sie das Schlüssel-Wert-Paar in der JSON-Datei an, mit der die Flotte erstellt wird. Der Wert für ResourceType muss fleet sein. Wenn Sie einen anderen Wert angeben, schlägt die Flottenanforderung fehl.

So markieren Sie Instances und Volumes, die durch eine EC2-Flotte gestartet werden

Um Instances und Volumes mit Tags zu markieren, wenn sie durch die Flotte gestartet werden, geben Sie die Tags in der Startvorlage an, auf die in der EC2-Flotte-Anforderung verwiesen wird.

Anmerkung

Sie können keine an Spot-Instances angehängt Volumes markieren, die von einem request- oder maintain-Flottentyp gestartet werden.

So markieren Sie eine vorhandene EC2-Flotten-Anforderung oder Instance oder ein vorhandenes Volume (AWS CLI)

Verwenden Sie den Befehl create-Tags, um vorhandene Ressourcen zu markieren.

aws ec2 create-tags \ --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \ --tags Key=purpose,Value=test

Beschreiben der EC2-Flotte

Sie können Ihre EC2-Flottenkonfiguration, die Instances in Ihrer EC2-Flotte und den Ereignisverlauf Ihrer EC2-Flotte beschreiben.

EC2-Flotten beschreiben (AWS CLI)

Verwenden Sie den Befehl describe-fleets, um Ihre EC2-Flotten zu beschreiben:

aws ec2 describe-fleets
Wichtig

Wenn eine Flotte vom Typ instant ist, müssen Sie die Flotten-ID angeben. Anderenfalls wird sie in der Antwort nicht angezeigt. Schließen Sie --fleet-ids wie folgt ein:

aws ec2 describe-fleets --fleet-ids fleet-8a22eee4-f489-ab02-06b8-832a7EXAMPLE

Beispielausgabe

{ "Fleets": [ { "ActivityStatus": "fulfilled", "CreateTime": "2022-02-09T03:35:52+00:00", "FleetId": "fleet-364457cd-3a7a-4ed9-83d0-7b63e51bb1b7", "FleetState": "active", "ExcessCapacityTerminationPolicy": "termination", "FulfilledCapacity": 2.0, "FulfilledOnDemandCapacity": 0.0, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 2, "DefaultTargetCapacityType": "spot" }, "TerminateInstancesWithExpiration": false, "Type": "maintain", "ReplaceUnhealthyInstances": false, "SpotOptions": { "AllocationStrategy": "capacity-optimized", "InstanceInterruptionBehavior": "terminate" }, "OnDemandOptions": { "AllocationStrategy": "lowestPrice" } } ] }

Verwenden Sie den describe-fleet-instancesBefehl, um die Instances für die angegebene EC2-Flotte zu beschreiben. Die zurückgegebene Liste der laufenden Instances wird regelmäßig aktualisiert und kann veraltet sein.

aws ec2 describe-fleet-instances --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

Beispielausgabe

{ "ActiveInstances": [ { "InstanceId": "i-09cd595998cb3765e", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-86k84j6p" }, { "InstanceId": "i-09cf95167ca219f17", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-dvxi7fsm" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

Verwenden Sie den describe-fleet-historyBefehl, um den Verlauf der angegebenen EC2-Flotte für den angegebenen Zeitraum zu beschreiben.

aws ec2 describe-fleet-history --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --start-time 2018-04-10T00:00:00Z

Beispielausgabe

{ "HistoryRecords": [ { "EventInformation": { "EventSubType": "submitted" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:05.000Z" }, { "EventInformation": { "EventSubType": "active" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:15.000Z" }, { "EventInformation": { "EventDescription": "t2.small, ami-07c8bc5c1ce9598c3, ...", "EventSubType": "progress" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-083a1c446e66085d2" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-090db02406cc3c2d6" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", "StartTime": "2018-04-09T23:53:20.000Z" }

Ändern einer EC2-Flotte

Sie können eine EC2-Flotte ändern, die sich im Zustand submitted oder active befindet. Wenn Sie eine Flotte ändern, wird sie in den modifying-Zustand versetzt.

Sie können nur ein EC2-Flotte mit dem Typ maintain ändern. Sie können ein EC2-Flotte des Typs request oder instant nicht ändern.

Sie können die folgenden Parameter einer EC2-Flotte ändern:

  • target-capacity-specification – Zielkapazität für TotalTargetCapacity, OnDemandTargetCapacity und SpotTargetCapacity erhöhen oder verringern.

  • excess-capacity-termination-policy – Ob laufende Instances beendet werden sollen, wenn die Gesamtzielkapazität der EC2-Flotte unter die aktuelle Flottengröße gesenkt wird. Gültige Werte sind no-termination und termination.

Wenn Sie die Zielkapazität erhöhen, startet die EC2-Flotte die zusätzlichen Instances entsprechend der Instance-Kaufoption, die für den DefaultTargetCapacityType angegeben wurde, die entweder On-Demand-Instances oder Spot-Instances sind.

Wenn ja DefaultTargetCapacityTypespot, startet die EC2-Flotte die zusätzlichen Spot-Instances entsprechend ihrer Zuweisungsstrategie.

Wenn Sie die Zielkapazität verringern, löscht die EC2-Flotte alle offenen Anfragen, die die neue Zielkapazität überschreiten. Sie können anfordern, dass die Flotte Instances beendet, bis die Größe der Flotte die neue Zielkapazität erreicht hat. Wenn die Zuweisungsstrategie lowest-price lautet, beendet die Flotte die Instances mit dem höchsten Preis pro Einheit. Wenn die Zuweisungsstrategie diversified lautet, beendet die Flotte Instances in allen Pools. Alternativ können Sie anfordern, dass die EC2-Flotte ihre aktuelle Größe beibehält, dabei jedoch keine Spot-Instances ersetzt, die unterbrochen werden, und keine Instances, die Sie manuell beenden.

Wenn eine EC2-Flotte eine Spot-Instance aufgrund einer Verringerung der Zielkapazität beendet, erhält die Instance eine Benachrichtigung über die Unterbrechung einer Spot-Instance.

So ändern Sie eine EC2-Flotte (AWS CLI)

Verwenden Sie den Befehl modify-fleet, um die Zielkapazität der angegebenen EC2-Flotte zu aktualisieren:

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=20

Wenn Sie die Zielkapazität verringern, die aktuelle Größe der Flotte jedoch beibehalten möchten, können Sie den vorherigen Befehl wie folgt ändern:

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=10 \ --excess-capacity-termination-policy no-termination

Löschen einer EC2-Flotte

Wenn Sie eine EC2-Flotte nicht mehr benötigen, können Sie sie löschen. Nachdem Sie eine Flotte gelöscht haben, werden alle der Flotte zugeordneten Spot-Anfragen abgebrochen, sodass keine neuen Spot-Instances gestartet werden.

Wenn Sie eine EC2-Flotte löschen, müssen Sie auch angeben, ob Sie alle ihre Instances beenden möchten. Dazu gehören sowohl On-Demand-Instances als auch Spot-Instances. Bei instant Flotten muss EC2 Fleet die Instances beenden, wenn die Flotte gelöscht wird. Eine gelöschte instant-Flotte mit laufenden Instances wird nicht unterstützt.

Wenn Sie angeben, dass die Instances beim Löschen der Flotte beendet werden müssen, wird die Flotte in den deleted_terminating-Status versetzt. Andernfalls befindet sie sich im deleted_running-Zustand und die Instances werden weiter ausgeführt, bis sie unterbrochen oder von Ihnen manuell beendet werden.

Einschränkungen
  • Sie können bis zu 25 Flotten des Typs instant in einer einzigen Anfrage löschen.

  • Sie können bis zu 100 Flotten des Typs maintain oder request in einer einzigen Anfrage löschen.

  • Sie können bis zu 125 Flotten in einer einzigen Anfrage löschen, sofern Sie das oben angegebene Kontingent für jeden Flottentyp nicht überschreiten.

  • Wenn Sie die angegebene Anzahl an zu löschenden Flotten überschreiten, werden keine Flotten gelöscht.

  • Bis zu 1000 Instances können in einer einzigen Anfrage zum Löschen von instant-Flotten beendet werden.

So löschen Sie eine EC2-Flotte und beenden ihre Instances (AWS CLI)

Verwenden Sie den delete-fleets-Befehl und den --terminate-instances-Parameter, um die angegebene EC2-Flotte zu löschen und die zugehörigen Instances zu beenden.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --terminate-instances

Beispielausgabe

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_terminating", "PreviousFleetState": "active", "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" } ] }
So löschen Sie eine EC2-Flotte, ohne deren Instances zu beenden (AWS CLI)

Sie können den vorherigen Befehl mit dem --no-terminate-instances-Parameter ändern, um die angegebene EC2-Flotte zu löschen, ohne die zugehörigen Instances zu beenden.

Anmerkung

--no-terminate-instances wird nicht für instant-Flotten unterstützt.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --no-terminate-instances

Beispielausgabe

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_running", "PreviousFleetState": "active", "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE" } ] }

Beheben von Fehlern, wenn eine Flotte nicht gelöscht werden kann

Wenn ein EC2-Flotte nicht gelöscht werden kann, gibt UnsuccessfulFleetDeletions in der Ausgabe die ID des EC2-Flotte, einen Fehlercode und eine Fehlermeldung zurück.

Die Fehlercodes sind:

  • ExceededInstantFleetNumForDeletion

  • fleetIdDoesNotExist

  • fleetIdMalformed

  • fleetNotInDeletableState

  • NoTerminateInstancesNotSupported

  • UnauthorizedOperation

  • unexpectedError

Fehlerbehebung für ExceededInstantFleetNumForDeletion

Wenn Sie versuchen, mehr als 25 instant-Flotten in einer einzigen Anfrage zu löschen, wird der ExceededInstantFleetNumForDeletion-Fehler zurückgegeben. Es folgt eine Beispielausgabe für diesen Fehler.

{ "UnsuccessfulFleetDeletions": [ { "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } }, { "FleetId": "fleet-9a941b23-0286-5bf4-2430-03a029a07e31", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } } . . . ], "SuccessfulFleetDeletions": [] }
Fehlerbehebung bei NoTerminateInstancesNotSupported

Wenn Sie angeben, dass die Instances in einer instant-Flotte beim Löschen der Flotte nicht beendet werden dürfen, wird der NoTerminateInstancesNotSupported-Fehler zurückgegeben. --no-terminate-instances wird nicht für instant-Flotten unterstützt. Es folgt eine Beispielausgabe für diesen Fehler.

{ "UnsuccessfulFleetDeletions": [ { "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "NoTerminateInstances option is not supported for instant fleet", "Code": "NoTerminateInstancesNotSupported" } } ], "SuccessfulFleetDeletions": []
Fehlerbehebung bei UnauthorizedOperation

Wenn Sie keine Berechtigung zum Beenden von Instances haben, erhalten Sie den UnauthorizedOperation-Fehler beim Löschen einer Flotte, die ihre Instances beenden muss. Das Folgende ist die Fehlerantwort.

<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this operation. Encoded authorization failure message: VvuncIxj7Z_CPGNYXWqnuFV-YjByeAU66Q9752NtQ-I3-qnDLWs6JLFd KnSMMiq5s6cGqjjPtEDpsnGHzzyHasFHOaRYJpaDVravoW25azn6KNkUQQlFwhJyujt2dtNCdduJfrqcFYAjlEiRMkfDHt7N63SKlweKUl BHturzDK6A560Y2nDSUiMmAB1y9UNtqaZJ9SNe5sNxKMqZaqKtjRbk02RZu5V2vn9VMk6fm2aMVHbY9JhLvGypLcMUjtJ76H9ytg2zRlje VPiU5v2s-UgZ7h0p2yth6ysUdhlONg6dBYu8_y_HtEI54invCj4CoK0qawqzMNe6rcmCQHvtCxtXsbkgyaEbcwmrm2m01-EMhekLFZeJLr DtYOpYcEl4_nWFX1wtQDCnNNCmxnJZAoJvb3VMDYpDTsxjQv1PxODZuqWHs23YXWVywzgnLtHeRf2o4lUhGBw17mXsS07k7XAfdPMP_brO PT9vrHtQiILor5VVTsjSPWg7edj__1rsnXhwPSu8gI48ZLRGrPQqFq0RmKO_QIE8N8s6NWzCK4yoX-9gDcheurOGpkprPIC9YPGMLK9tug </Message></Error></Errors><RequestID>89b1215c-7814-40ae-a8db-41761f43f2b0</RequestID></Response>

Um den Fehler zu beheben, müssen Sie die ec2:TerminateInstances-Aktion der IAM-Richtlinie hinzufügen, wie im folgenden Beispiel gezeigt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeleteFleetsAndTerminateInstances", "Effect": "Allow", "Action": [ "ec2:DeleteFleets" "ec2:TerminateInstances" ], "Resource": "*" } ] }