Erstellen Sie eine EC2 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.

Erstellen Sie eine EC2 Flotte

Um eine EC2 Flotte zu erstellen, definieren Sie die Flottenkonfiguration in einer JSON-Datei und verweisen Sie mit dem Befehl create-fleet auf die Datei. In der JSON-Datei müssen Sie die Gesamtzielkapazität für die Flotte angeben, separate Zielkapazitäten für Spot Instances und On-Demand-Instances sowie eine Startvorlage angeben, die Konfiguration für die Instances in der Flotte definiert, z. B. eine AMI, einen Instance-Typ, ein Subnetz oder eine Availability Zone, und eine oder mehrere Sicherheitsgruppen. Sie können optional zusätzliche Konfigurationen angeben, z. B. Parameter zum Überschreiben der Konfiguration der Startvorlage, Zuweisungsstrategien für die Auswahl von Spot-Instances und On-Demand-Instances aus den EC2 Kapazitätspools und den Höchstbetrag, den Sie bereit sind, für die Flotte zu zahlen. Weitere Informationen finden Sie unter Konfigurationsoptionen für Ihre EC2 Flotte oder Spot-Flotte.

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

Wenn Ihre Flotte Spot-Instances umfasst und dem Typ entsprichtmaintain, versucht Amazon, EC2 die Zielkapazität Ihrer Flotte aufrechtzuerhalten, wenn Ihre Spot-Instances unterbrochen werden.

EC2 Einschränkungen bei der Flotte

Für EC2 Fleet gelten die folgenden Einschränkungen:

  • Das Erstellen einer EC2 Flotte ist nur über die EC2 Amazon-API, AWS CLIAWS SDKs, und verfügbar AWS CloudFormation.

  • Eine EC2 Flottenanfrage kann sich nicht über mehrere AWS Regionen erstrecken. Sie müssen für jede Region eine separate EC2 Flotte erstellen.

  • Eine EC2 Flottenanfrage kann sich nicht über verschiedene Subnetze derselben Availability Zone erstrecken.

EC2 Voraussetzungen für die Flotte

Startvorlage

Eine Startvorlage gibt die Konfigurationsinformationen über die zu startenden Instances an, wie beispielsweise den Instance-Typ und die Availability Zone. Weitere Informationen über Startvorlagen finden Sie unter Instance-Startparameter in EC2 Amazon-Startvorlagen speichern.

Servicebezogene Rolle für Fleet EC2

Die AWSServiceRoleForEC2Fleet Rolle gewährt der EC2 Flotte die Berechtigung, Instances in Ihrem Namen anzufordern, zu starten, zu beenden und zu taggen. Amazon EC2 verwendet diese servicebezogene Rolle, um die folgenden Aktionen durchzuführen:

  • ec2:RunInstances – Instances starten.

  • ec2:RequestSpotInstances – Spot-Instances anfragen.

  • ec2:TerminateInstances – Instances beenden.

  • ec2:DescribeImages— Beschreiben Sie Amazon Machine Images (AMIs) für die Instances.

  • ec2:DescribeInstanceStatus – Beschreiben des Status der Instances.

  • ec2:DescribeSubnets – Beschreiben der Subnetze für Instances.

  • ec2:CreateTags— Fügen Sie der EC2 Flotte, den Instances und den Volumes Tags hinzu.

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

Anmerkung

Eine instant EC2 Flotte benötigt diese Rolle nicht.

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

Um die AWSService RoleFor EC2 Flottenrolle für EC2 Fleet zu erstellen
  1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

  2. Wählen Sie im Navigationsbereich Rollen aus.

  3. Wählen Sie Rolle erstellen aus.

  4. Gehen Sie auf der Seite Select trusted entity (Vertrauenswürdige 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 - Flotte aus.

      Tipp

      Achten Sie darauf, dass Sie EC2 — Flotte wählen. Wenn Sie wählen EC2, wird der Anwendungsfall EC2 — Fleet nicht in der Liste der Anwendungsfälle angezeigt. Der Anwendungsfall EC2 - Fleet erstellt automatisch eine Richtlinie mit den erforderlichen IAM-Berechtigungen und schlägt AWSServiceRoleForEC2Fleet als Rollennamen vor.

    3. Wählen Sie Weiter.

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

  6. 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 AWSServiceRoleForEC2Fleet-Rolle zu löschen. 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 Serviceverknüpfte Rollen im IAM-Benutzerhandbuch.

Gewähren Sie Zugriff auf vom 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 AWSServiceRoleForEC2Flottenrolle die Erlaubnis erteilen, den vom Kunden verwalteten Schlüssel zu verwenden, damit Amazon Instances in Ihrem Namen starten EC2 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 AWSService RoleFor EC2 Flottenrolle 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 Grant hinzuzufügen und den Principal (die dienstbezogene AWSServiceRoleForEC2Flottenrolle) anzugeben, der die Berechtigung zur Ausführung der durch die Gewährung erlaubten Operationen erhält. 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 mit dem AWSServiceRoleForEC2Fleet-Service verknü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 Flottenbenutzer

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

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

  2. Wählen Sie im Navigationsbereich Richtlinien.

  3. Wählen Sie Create Policy (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*" } ] }

    Das ec2:* gewährt einem Benutzer die Erlaubnis, alle EC2 Amazon-API-Aktionen aufzurufen. Um den Benutzer auf bestimmte EC2 Amazon-API-Aktionen zu beschränken, geben Sie stattdessen diese Aktionen an.

    Der Benutzer muss berechtigt sein, die iam:ListRoles Aktion zum Auflisten vorhandener IAM-Rollen, die iam:PassRole Aktion zum Angeben der EC2 Flottenrolle und die iam:ListInstanceProfiles Aktion zum Auflisten vorhandener Instance-Profile aufzurufen.

    (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:

Eine EC2 Flotte erstellen

Um eine Flotte von Instances mit EC2 Fleet zu starten, müssen Sie in Ihrer Flottenanforderung nur die folgenden Parameter angeben, und die Flotte verwendet die Standardwerte für die anderen Parameter:

  • LaunchTemplateId oder LaunchTemplateName – Gibt die zu verwendende Startvorlage an (die die Parameter für die zu startenden Instances enthält, wie beispielsweise den Instance-Typ, die Availability Zone)

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

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

Um die in der Startvorlage angegebenen Parameter außer Kraft zu setzen, können Sie eine oder mehrere Überschreibungen angeben. Jede Überschreibung kann nach Instance-Typ, Availability Zone, Subnetz und Höchstpreis variieren und eine unterschiedliche gewichtete Kapazität beinhalten. Als Alternative zur Angabe eines Instance-Typs 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 Geben Sie Attribute für die Auswahl des Instance-Typs für EC2 Fleet oder Spot-Flotte an.

Für EC2 Flotten des Typs instant können Sie anstelle der AMI-ID einen Systems Manager Manager-Parameter angeben. Sie können den Systems-Manager-Parameter in der Überschreibung oder in der Startvorlage angeben. Weitere Informationen finden Sie unter Verwenden eines Systems-Manager-Parameters anstelle einer AMI-ID.

Die Flottenparameter in einer JSON-Datei angeben. Informationen zu allen möglichen Parametern, die Sie angeben können, finden Sie unter Alle EC2 Flottenkonfigurationsoptionen anzeigen.

Flottenkonfigurationsbeispiele finden Sie unter CLI-Beispielkonfigurationen für EC2 Fleet.

Derzeit gibt es keine Konsolenunterstützung für die Erstellung einer EC2 Flotte.

Um eine EC2 Flotte zu erstellen
  • Verwenden Sie den Befehl create-fleet, um die 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

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

Erstellen Sie eine EC2 Flotte, die fehlerhafte Spot-Instances ersetzt

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

EC2 Fleet ermittelt den Integritätsstatus einer Instance anhand der von Amazon bereitgestellten Statuschecks EC2. 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 Statuschecks für EC2 Amazon-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
  • Der Ersatz von Gesundheitschecks wird nur für EC2 Flotten unterstützt, die eine Zielkapazität beibehalten (Flotten vom Typmaintain), nicht für Flotten des Typs oder. request instant

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

  • Sie können Ihre EC2 Flotte so konfigurieren, dass fehlerhafte Instances nur ersetzt werden, wenn Sie sie erstellen.

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

Um eine EC2 Flotte so zu konfigurieren, dass sie fehlerhafte Spot-Instances ersetzt
  1. Verwenden Sie die Informationen zum Erstellen einer EC2 Flotte inEine EC2 Flotte erstellen.

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

Alle EC2 Flottenkonfigurationsoptionen anzeigen

Um die vollständige Liste der EC2 Flottenkonfigurationsparameter anzuzeigen, können Sie eine JSON-Datei generieren. Eine Beschreibung der einzelnen Parameter finden Sie unter create-fleet.

Um eine JSON-Datei mit allen möglichen EC2 Fleet-Parametern zu generieren

Verwenden Sie den Befehl create-fleet (AWS CLI) und den --generate-cli-skeleton Parameter, um eine EC2 Fleet-JSON-Datei zu generieren, und leiten Sie die Ausgabe in eine Datei weiter, um sie zu speichern.

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

Beispielausgabe

{ "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "price-capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "r5.metal", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "", "HostResourceGroupArn": "" }, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "required", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "excluded", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "on-demand", "TargetCapacityUnitType": "memory-mib" }, "TerminateInstancesWithExpiration": true, "Type": "instant", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ], "Context": "" }