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.
Inhalt
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
oderrequest
kann laufende Instances haben, nachdem die EC2-Flotte-Anforderung gelöscht wurde. Eine gelöschteinstant
-Flotte mit laufenden Instances wird nicht unterstützt. Dieser Status gilt nicht fürinstant
-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
Um eine EC2-Flotte zu erstellen, müssen die folgenden Voraussetzungen erfüllt sein:
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
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und dann Create role (Rolle erstellen).
-
Gehen Sie auf der Seite Typ der vertrauenswürdigen Entität auswählen wie folgt vor:
-
Wählen Sie unter Vertrauenswürdiger Entitätstyp die Option AWS -Service aus.
-
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.
-
Wählen Sie Next (Weiter).
-
-
Wählen Sie auf der Seite Add permissions (Berechtigungen hinzufügen) die Option Next (Weiter) aus.
-
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 dengrantee-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
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Policies aus.
-
Wählen Sie Richtlinie erstellen aus.
-
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 undiam: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
-
-
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.
-
Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:
-
Benutzer und Gruppen in AWS IAM Identity Center:
Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter Erstellen eines Berechtigungssatzes im AWS IAM Identity Center -Benutzerhandbuch.
-
Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden:
Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anweisungen unter Erstellen einer Rolle für einen externen Identitätsanbieter (Verbund) im IAM-Benutzerhandbuch.
-
IAM-Benutzer:
-
Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Folgen Sie den Anweisungen unter Erstellen einer Rolle für einen IAM-Benutzer im IAM-Benutzerhandbuch.
-
(Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Befolgen Sie die Anweisungen unter Hinzufügen von Berechtigungen zu einem Benutzer (Konsole) im IAM-Benutzerhandbuch.
-
-
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 Typrequest
oderinstant
. -
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
-
Befolgen Sie die Schritte zum Erstellen von EC2-Flotte. Weitere Informationen finden Sie unter Erstellen einer EC2-Flotte.
-
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
oderLaunchTemplateName
– 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:
-
Benutzer und Gruppen in AWS IAM Identity Center:
Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter Erstellen eines Berechtigungssatzes im AWS IAM Identity Center -Benutzerhandbuch.
-
Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden:
Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anweisungen unter Erstellen einer Rolle für einen externen Identitätsanbieter (Verbund) im IAM-Benutzerhandbuch.
-
IAM-Benutzer:
-
Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Folgen Sie den Anweisungen unter Erstellen einer Rolle für einen IAM-Benutzer im IAM-Benutzerhandbuch.
-
(Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Befolgen Sie die Anweisungen unter Hinzufügen von Berechtigungen zu einem Benutzer (Konsole) im IAM-Benutzerhandbuch.
-
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ürTotalTargetCapacity
,OnDemandTargetCapacity
undSpotTargetCapacity
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 sindno-termination
undtermination
.
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 DefaultTargetCapacityType
spot
, 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
oderrequest
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": "*" } ] }