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 AWS CLI auf die Datei. In der JSON Datei müssen Sie die Gesamtzielkapazität für die Flotte, separate Zielkapazitäten für Spot-Instances und On-Demand-Instances sowie eine Startvorlage angeben, die die Konfiguration für die Instances in der Flotte definiert, z. B. einen Instance-TypAMI, 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.

EC2Einschränkungen bei der Flotte

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

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

  • Eine EC2 Flottenanfrage kann sich nicht auf 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.

EC2Voraussetzungen für die Flotte

Startvorlage

Eine Startvorlage gibt die Konfigurationsinformationen zu den zu startenden Instances an, z. B. den Instance-Typ und die Availability Zone. Weitere Informationen zu Startvorlagen finden Sie unterInstance-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 Sie den Status der Instances.

  • ec2:DescribeSubnets— Beschreiben Sie die 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 das AWS CLI oder an verwendenAPI, um eine EC2 Flotte zu erstellen.

Anmerkung

Für eine instant EC2 Flotte ist diese Rolle nicht erforderlich.

Verwenden Sie die IAM Konsole wie folgt, um die Rolle zu erstellen.

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

  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 AWSServiceRoleForEC2Fleetals 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 AWSServiceRoleForEC2FleetRolle 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 im IAMBenutzerhandbuch unter Rollen im Zusammenhang mit Diensten.

Gewähren Sie Zugriff auf vom Kunden verwaltete Schlüssel zur Verwendung mit verschlüsselten Schlüsseln AMIs und Snapshots EBS

Wenn Sie in Ihrer EC2 Flotte einen verschlüsselten AMI oder verschlüsselten EBS Amazon-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 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 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 des vom Kunden verwalteten ARN Schlüssels angegeben. Der Prinzipal wird durch den grantee-principal Parameter und den ARN der AWSServiceRoleForEC2Fleetserviceverknü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 die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Richtlinien.

  3. Wählen Sie Create Policy (Richtlinie erstellen) aus.

  4. Wählen Sie auf der Seite Richtlinie erstellen die JSONRegisterkarte aus, ersetzen Sie den Text durch den folgenden Text und wählen Sie Richtlinie überprüfen aus.

    { "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 API Amazon-Aktionen aufzurufen. Um den Benutzer auf bestimmte EC2 API Amazon-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) Damit ein Benutzer Rollen oder Instanzprofile mithilfe der IAM Konsole erstellen kann, müssen Sie der Richtlinie außerdem 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:

Erstellen Sie eine EC2 Flotte

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:

  • LaunchTemplateIdoder LaunchTemplateName — Gibt die zu verwendende Startvorlage an (die die Parameter für die zu startenden Instances enthält, z. B. den Instance-Typ und 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 zu überschreiben, können Sie eine oder mehrere Überschreibungen angeben. Jede Überschreibung kann je 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 Manager-Parameter in der Override- oder in der Startvorlage angeben. Weitere Informationen finden Sie unter Verwenden Sie einen Systems Manager Manager-Parameter anstelle einer AMI ID.

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

Beispiele für Flottenkonfigurationen finden Sie unterCLIBeispielkonfigurationen 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 (AWS CLI), 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

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

EC2Fleet ermittelt den Integritätsstatus einer Instance anhand der von Amazon bereitgestellten StatuschecksEC2. 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 dann 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 inErstellen Sie eine EC2 Flotte.

  2. Um die Flotte so zu konfigurieren, dass sie fehlerhafte Spot-Instances ersetztReplaceUnhealthyInstances, geben Sie true in der JSON Datei für an.

Alle EC2 Flottenkonfigurationsoptionen anzeigen

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

Um eine JSON Datei mit allen möglichen EC2 Flottenparametern zu generieren

Verwenden Sie den Befehl create-fleet (AWS CLI) und den --generate-cli-skeleton Parameter, um eine EC2 JSON Fleet-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": "" }