Navigieren durch AWS-Servicelimits: Prävention, Überwachung und Lösungsstrategien
Erfahren Sie, wie Sie AWS-Service-Kontingente überwachen, frühzeitig Erhöhungen beantragen und bei festen Cloud-Limits umgestalten können.
Navigieren durch AWS-Service-Limits: Präventions-, Überwachungs- und Lösungsstrategien
AWS kann schnell skalieren, aber Ihr Konto hat dennoch Kontingente. Wenn Ihre Bereitstellung plötzlich keine EC2-Kapazität erstellen, keine weiteren IPs zuweisen oder die Lambda-Konkurrenz erhöhen kann, stoßen Sie möglicherweise auf ein AWS-Service-Kontingent und nicht auf einen Anwendungsfehler.
Behandeln Sie Kontingente als Teil Ihrer Architektur. Sie variieren je nach Service, Konto und Region, und einige können erhöht werden, während andere eine Designänderung erfordern.
Grundlegendes zu AWS-Service-Limits
AWS-Service-Kontingente sind Einschränkungen für Ressourcen oder Operationen in einem Konto. Sie helfen, AWS-Services und Kundenkonten vor übermäßiger Nutzung zu schützen, können aber auch legitimes Wachstum blockieren, wenn Sie nicht für sie planen.
Anpassbare vs. feste Kontingente
Es ist wichtig, zwischen zwei Haupttypen von AWS-Service-Limits zu unterscheiden:
- Anpassbare Kontingente: Diese können oft über die Service-Kontingente-Konsole oder einen AWS-Support-Fall erhöht werden.
- Feste Kontingente: Diese können für Ihr Konto nicht erhöht werden. Sie müssen Ihre Architektur umgestalten, Arbeitslasten aufteilen oder ein anderes Servicemuster verwenden.
Warum Service-Limits wichtig sind
Das Überschreiten eines Kontingents äußert sich normalerweise in fehlgeschlagener Ressourcenerstellung, gedrosselten API-Aufrufen oder einer Skalierung, die früher als erwartet stoppt. Beispielsweise kann eine Auto-Scaling-Gruppe fehlerfrei sein, aber keine weiteren Instanzen starten können, wenn dem Konto in dieser Region nicht genügend EC2-vCPU-Kontingent zur Verfügung steht.
Proaktive Überwachung von AWS-Service-Limits
Der beste Zeitpunkt, ein Kontingentproblem zu finden, ist vor einem Release oder einem Traffic-Ereignis. AWS bietet Ihnen mehrere Möglichkeiten, Kontingentwerte und bei einigen Services auch die aktuelle Nutzung einzusehen.
AWS Trusted Advisor
AWS Trusted Advisor kann einige Service-Kontingente kennzeichnen, bei denen Ihre Nutzung nahe am Limit liegt. Verfügbarkeit und Detailgrad variieren je nach Support-Plan und Service. Nutzen Sie es daher als nützliches Signal, aber nicht als einzige Quelle.
AWS Service-Kontingente-Konsole
AWS Service-Kontingente ist der Hauptort, um viele Konten-Kontingente einzusehen und Erhöhungen für anpassbare Kontingente zu beantragen.
Verwendung der Service-Kontingente-Konsole:
- Navigieren Sie in Ihrem AWS-Konto zur Service-Kontingente-Konsole.
- Sie können nach bestimmten Services suchen (z. B. „EC2", „RDS", „S3").
- Für viele Kontingente können Sie den angewendeten Wert, den Standardwert, die Anpassbarkeit und manchmal die Auslastung einsehen.
- Für anpassbare Kontingente beantragen Sie direkt auf der Kontingent-Detailseite eine Erhöhung.
Beispiel: So überprüfen Sie Ihr EC2-vCPU-Limit in einer bestimmten Region:
- Gehen Sie zu Service-Kontingente.
- Wählen Sie „EC2" aus der Serviceliste.
- Suchen Sie nach dem relevanten Kontingent für laufende On-Demand-vCPUs, z. B. das Kontingent für Standard-Instanzfamilien.
- Die Konsole zeigt Ihre aktuelle Nutzung und das maximale Limit an.
CloudWatch-Alarme
Für einige Kontingente veröffentlicht Service-Kontingente Nutzungsmetriken an CloudWatch. Für andere Services benötigen Sie möglicherweise servicespezifische Metriken oder benutzerdefinierte Inventar-Jobs. Beispielsweise verfügt Lambda über Parallelitätsmetriken, die Sie warnen können, bevor die Drosselung Anfragen beeinträchtigt.
AWS CLI-Prüfungen
Sie können Kontingentprüfungen in Bereitstellungspipelines scripten:
aws service-quotas list-service-quotas --service-code ec2 --region us-east-1
Vergleichen Sie für eine Produktionsbereitstellung das erwartete Ressourcenwachstum mit dem angewendeten Kontingent, bevor Terraform, CloudFormation oder CDK versuchen, Ressourcen zu erstellen.
Strategien zur Verwaltung von Service-Limits
Sobald Sie verstehen, wie Sie Ihre Limits überwachen, können Sie Strategien implementieren, um sie effektiv zu verwalten.
1. Verstehen Sie die Anforderungen Ihrer Anwendung
Bevor Sie Ihre Anwendungen bereitstellen oder skalieren, analysieren Sie deren Ressourcenanforderungen. Dazu gehören:
- Spitzenlastbetrachtungen: Was sind die erwarteten maximalen gleichzeitigen Benutzer oder Anforderungsraten?
- Ressourcentypen: Welche spezifischen AWS-Services und Ressourcentypen werden verwendet (z. B. EC2-Instanztypen, RDS-Datenbankgrößen, Lambda-Parallelität)?
- Regionale Verteilung: Wo werden Ihre Ressourcen bereitgestellt?
Diese Analyse hilft Ihnen vorherzusehen, auf welche Limits Sie am wahrscheinlichsten stoßen werden.
2. Entwerfen Sie für Skalierbarkeit und Elastizität
Erstellen Sie Ihre Anwendungen mit der Fähigkeit, horizontal zu skalieren (Hinzufügen weiterer Instanzen/Einheiten), anstatt sich ausschließlich auf vertikale Skalierung (größere Instanzen/Einheiten) zu verlassen. Dieser Ansatz verteilt die Last und reduziert das Risiko, auf Limits einzelner Ressourcen zu stoßen.
- Auto-Scaling-Gruppen: Verwenden Sie EC2 Auto Scaling für Nachfrageänderungen, aber überprüfen Sie, ob das Konto genügend vCPU-Kontingent für die maximale Kapazität hat.
- Serverlose Architekturen: Lambda und API Gateway entfernen die Serververwaltung, haben aber dennoch Kontingente für Parallelität, Nutzlast, Timeout und Anfragen.
3. Optimieren Sie die Ressourcennutzung
Überprüfen Sie regelmäßig Ihre bereitgestellten Ressourcen, um sicherzustellen, dass sie effizient genutzt werden. Schalten Sie ungenutzte Instanzen ab, passen Sie Ihre Datenbanken richtig an und löschen Sie nicht verbundene EBS-Volumes.
- Tagging: Implementieren Sie eine robuste Tagging-Strategie für Ihre Ressourcen. Dies erleichtert die Nachverfolgung von Besitz, Kosten und Nutzung, was helfen kann, unterausgelastete Ressourcen zu identifizieren.
- Kosten- und Nutzungsberichte: Analysieren Sie Ihre AWS-Kosten- und Nutzungsberichte, um potenzielle Bereiche der Überbereitstellung zu identifizieren.
4. Beantragen Sie Limiterhöhungen proaktiv
Warten Sie nicht, bis Sie ein Limit erreichen, um eine Erhöhung zu beantragen. Wenn das prognostizierte Wachstum Ihrer Anwendung oder ein geplantes Ereignis (wie eine Marketingkampagne oder ein Produktstart) darauf hindeutet, dass Sie ein Softlimit überschreiten könnten, reichen Sie den Antrag im Voraus ein.
So beantragen Sie eine Limiterhöhung:
- Gehen Sie zur AWS Service-Kontingente-Konsole.
- Navigieren Sie zu dem spezifischen Service und Kontingent, das Sie erhöhen müssen.
- Wählen Sie das Kontingent aus und klicken Sie auf die Schaltfläche „Kontingenterhöhung anfordern".
- Geben Sie detaillierte Informationen im Antragsformular an:
- Neuer Kontingentwert: Das gewünschte Limit.
- Grund für die Anfrage: Erklären Sie, warum Sie die Erhöhung benötigen. Seien Sie spezifisch in Bezug auf Ihren Anwendungsfall, die erwartete Nutzung und den Zeitrahmen.
- AWS-Region: Geben Sie die Region(en) an, in denen die Erhöhung benötigt wird.
- Reichen Sie den Antrag ein.
AWS kann einige Anträge schnell genehmigen, während andere eine Überprüfung erfordern und länger dauern können. Beantragen Sie Erhöhungen, bevor Sie sie benötigen, insbesondere für Starts, Migrationen und Auslastungstests.
Tipps zur Beantragung von Erhöhungen:
- Seien Sie präzise: Geben Sie das genaue Kontingent und die genaue benötigte Zahl an.
- Begründen Sie Ihren Bedarf: Eine gut begründete Erklärung mit Daten (prognostizierte Nutzung, aktuelle Auslastung) verbessert die Genehmigungschancen erheblich.
- Beantragen Sie rechtzeitig: Lassen Sie genügend Zeit für die Überprüfung und für Ihr Team, um nach der Genehmigung zu testen.
5. Verstehen Sie harte Limits
Architekturieren Sie bei festen Kontingenten um sie herum. Übliche Optionen sind die Verteilung von Arbeitslasten auf mehrere Konten, die Verwendung mehrerer Regionen, die Warteschlangenverarbeitung von Arbeit, das Batching von API-Aufrufen oder die Wahl eines besser geeigneten Services.
Häufige AWS-Service-Limits und deren Verwaltung
Schauen wir uns einige häufig auftretende Service-Limits und Verwaltungsstrategien an:
Amazon EC2
- Kontingente: Laufende On-Demand-vCPUs nach Instanzfamilie, elastische IP-Adressen, EBS-Volumes, EBS-IOPS, VPCs, Subnetze, Sicherheitsgruppen und Netzwerkschnittstellen.
- Verwaltung: Überwachen Sie die vCPU-Nutzung pro Region, beantragen Sie Erhöhungen vor Skalierungsereignissen und entfernen Sie ungenutzte elastische IPs und Volumes.
Amazon S3
- Kontingente: S3 hat Service-Kontingente wie Bucket-Limits pro Konto und dokumentierte Anforderungsraten-Richtlinien pro Präfix für Workloads mit hohem Durchsatz.
- Verwaltung: Verwenden Sie mehrere Präfixe für sehr hohe Anforderungsraten, CloudFront für leseintensive öffentliche Inhalte und S3-Metriken für Transparenz.
Amazon RDS
- Kontingente: DB-Instanzen, Cluster, Snapshots, Speicher und Parametergruppen haben Konto- oder Regionskontingente. Verbindungslimits hängen stark von Engine und Instanzklasse ab.
- Verwaltung: Passen Sie Instanzen richtig an, verwenden Sie Read Replicas für leseintensive Workloads und beantragen Sie Kontingenterhöhungen vor Migrationen oder Umgebungserweiterungen.
AWS Lambda
- Kontingente: Konto-Parallelität, reservierte Parallelität, bereitgestellte Parallelität, Nutzlastgröße, Timeout, Speicher und Grenzen für Bereitstellungspakete.
- Verwaltung: Überwachen Sie Parallelität und Drosselungen, legen Sie reservierte Parallelität für kritische Funktionen fest und beantragen Sie Erhöhungen der Konto-Parallelität vor Traffic-Spitzen.
Behebung von Fehlern aufgrund überschrittener Service-Limits
Wenn Sie auf einen Fehler vom Typ „Service-Limit überschritten" stoßen:
- Identifizieren Sie den spezifischen Service und das Limit: Die Fehlermeldung enthält normalerweise diese Informationen.
- Überprüfen Sie Ihre aktuelle Nutzung: Verwenden Sie die Service-Kontingente-Konsole oder Trusted Advisor, um Ihre Nutzung mit dem Limit abzugleichen.
- Bestimmen Sie, ob es anpassbar oder fest ist: Wenn es anpassbar ist, beantragen Sie eine Erhöhung.
- Reichen Sie einen Antrag auf Limiterhöhung ein: Befolgen Sie die im Abschnitt „Beantragen Sie Limiterhöhungen proaktiv" beschriebenen Schritte. Seien Sie bereit, detaillierte Informationen bereitzustellen.
- Wenn es ein festes Kontingent ist: Gestalten Sie Ihre Lösung neu. Ziehen Sie in Betracht:
- Ihre Arbeitslast auf mehrere AWS-Konten zu verteilen.
- Verschiedene AWS-Services zu verwenden, die möglicherweise nicht dasselbe harte Limit haben.
- Ein Warteschlangensystem oder eine Stapelverarbeitung zu implementieren, um Operationen zu handhaben, die das Limit überschreiten.
Fazit
Überprüfen Sie vor jedem größeren Start oder jeder Migration die Kontingente für die Services, die skaliert werden. Beantragen Sie Erhöhungen anpassbarer Kontingente frühzeitig, fügen Sie Alarme für die relevanten Limits hinzu und dokumentieren Sie den Umgestaltungspfad für feste Kontingente. Kontingentarbeit ist leise, wenn sie früh erledigt wird, und schmerzhaft, wenn sie während eines Ausfalls entdeckt wird.