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.
Fehlerbehebung bei S3-Batch-Vorgängen
Amazon S3 Batch Operations ermöglicht es Ihnen, umfangreiche Operationen an Amazon S3 S3-Objekten durchzuführen. Dieses Handbuch hilft Ihnen bei der Behebung häufig auftretender Probleme.
Informationen zur Behebung von Problemen mit S3 Batch Replication finden Sie unter Fehlerbehebung bei einer Replikation.
Es gibt zwei Haupttypen von Fehlern, die zu Fehlern bei Batch-Vorgängen führen:
-
API-Fehler — Die angeforderte API (z. B.
CreateJob) konnte nicht ausgeführt werden. -
Auftragsfehler — Die erste API-Anfrage war erfolgreich, aber der Job schlug fehl, z. B. aufgrund von Problemen mit dem Manifest oder den Berechtigungen für Objekte, die im Manifest angegeben sind.
NoSuchJobException
Typ: API-Fehler
Das NoSuchJobException tritt auf, wenn S3 Batch Operations den angegebenen Job nicht finden kann. Dieser Fehler kann in mehreren Szenarien auftreten, die über den einfachen Ablauf eines Jobs hinausgehen. Zu den häufigsten Ursachen gehören die folgenden.
Ablauf eines Jobs — Jobs werden 90 Tage nach Erreichen eines Endstatus (
CompleteCancelled, oderFailed) automatisch gelöscht.Falsche Job-ID — Die in der Job-ID verwendete Job-ID
DescribeJoboder stimmtUpdateJobStatusnicht mit der von zurückgegebenen ID übereinCreateJob.Falsche Region — Es wird versucht, auf einen Job zuzugreifen, der sich in einer anderen Region befindet als der, in der er erstellt wurde.
Falsches Konto — Es wird eine Job-ID von einem anderen AWS Konto verwendet.
Formatfehler bei der Job-ID — Tippfehler, zusätzliche Zeichen oder falsche Formatierung in der Job-ID.
Zeitliche Probleme — Der Jobstatus wird unmittelbar nach der Erstellung überprüft, bevor der Job vollständig registriert ist.
Zu den damit verbundenen Fehlermeldungen gehören die folgenden.
No such jobThe specified job does not exist
Bewährte Methoden zur Vermeidung von NoSuchJobException API-Ausfällen
Job IDs sofort speichern — Speichern Sie die Job-ID aus der
CreateJobAntwort, bevor Sie nachfolgende API-Aufrufe durchführen.Implementieren Sie die Wiederholungslogik — Fügen Sie einen exponentiellen Backoff hinzu, wenn Sie den Jobstatus unmittelbar nach der Erstellung überprüfen.
Überwachung einrichten — Erstellen Sie CloudWatch Alarme, um den Abschluss des Auftrags vor Ablauf von 90 Tagen nachzuverfolgen. Einzelheiten finden Sie unter Verwenden von CloudWatch Alarmen im CloudWatch Amazon-Benutzerhandbuch.
Einheitliche Regionen verwenden — Stellen Sie sicher, dass alle Auftragsoperationen dieselbe Region für die Auftragserstellung verwenden.
Eingabe validieren — Überprüfen Sie das Format der Job-ID, bevor Sie API-Aufrufe tätigen.
Wenn Jobs ablaufen
Jobs in Endstaaten werden automatisch nach 90 Tagen gelöscht. Beachten Sie Folgendes, um den Verlust von Jobinformationen zu vermeiden.
Abschlussberichte vor Ablauf herunterladen — Anweisungen zum Abrufen und Speichern von Auftragsergebnissen finden Sie unter.
Archivieren Sie Auftragsmetadaten in Ihren eigenen Systemen — Speichern Sie wichtige Auftragsinformationen in Ihren Datenbanken oder Überwachungssystemen.
Automatische Benachrichtigungen vor Ablauf der Frist von 90 Tagen einrichten — Verwenden Sie Amazon EventBridge , um Regeln zu erstellen, die Benachrichtigungen auslösen, wenn Jobs abgeschlossen sind. Weitere Informationen finden Sie unter Amazon-S3-Ereignisbenachrichtigungen.
Fehlerbehebung für NoSuchJobException
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der Job in Ihrem Konto und Ihrer Region existiert.
aws s3control list-jobs --account-id111122223333--regionus-east-1Verwenden Sie den folgenden Befehl, um in allen Jobstatus zu suchen. Mögliche Jobstatus sind
Active,,,Cancelled,Cancelling,Complete,Completing,Failed,,Failing,NewPausedPausing,Preparingund.ReadySuspendedaws s3control list-jobs --account-id111122223333--job-statusesyour-job-statusVerwenden Sie den folgenden Befehl, um zu überprüfen, ob der Job auch in anderen Regionen existiert, in denen Sie häufig Jobs erstellen.
aws s3control list-jobs --account-id111122223333--regionjob-region-1aws s3control list-jobs --account-id111122223333--regionjob-region-2-
Überprüfen Sie das Job-ID-Format. Job enthalten IDs in der Regel 36 Zeichen, z.
12345678-1234-1234-1234-123456789012B. Prüfen Sie, ob zusätzliche Leerzeichen, fehlende Zeichen oder Probleme mit der Berücksichtigung der Groß- und Kleinschreibung vorliegen, und stellen Sie sicher, dass Sie die vollständige vomCreateJobBefehl zurückgegebene Job-ID verwenden. -
Verwenden Sie den folgenden Befehl, um die CloudTrail Protokolle auf Ereignisse bei der Auftragserstellung zu überprüfen.
aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob }" \ --start-timetimestamp
AccessDeniedException
Typ: API-Fehler
Dies AccessDeniedException tritt auf, wenn eine S3 Batch Operations-Anforderung aufgrund unzureichender Berechtigungen, nicht unterstützter Vorgänge oder Richtlinieneinschränkungen blockiert wird. Dies ist einer der häufigsten Fehler bei Batch-Operationen. Er hat die folgenden häufigen Ursachen:
Fehlende IAM-Berechtigungen — Der IAM-Identität fehlen die erforderlichen Berechtigungen für Batch-Operationen. APIs
Unzureichende S3-Berechtigungen — Fehlende Berechtigungen für den Zugriff auf Quell- oder Ziel-Buckets und Objekte.
Probleme mit der Jobausführungsrolle — Der Jobausführungsrolle fehlen die Berechtigungen zur Ausführung des angegebenen Vorgangs.
Nicht unterstützte Operationen — Es wird versucht, Operationen zu verwenden, die in der aktuellen Region oder dem aktuellen Bucket-Typ nicht unterstützt werden.
Probleme beim kontoübergreifenden Zugriff — Fehlende Berechtigungen für den kontoübergreifenden Bucket- oder Objektzugriff.
Ressourcenbasierte Richtlinieneinschränkungen — Bucket-Richtlinien oder Objekte ACLs , die den Vorgang blockieren.
Einschränkungen durch Service Control Policy (SCP) — Richtlinien auf Organisationsebene, die den Vorgang verhindern.
Verwandte Fehlermeldungen:
Access DeniedUser: arn:aws:iam::account:user/username is not authorized to perform: s3:operationCross-account pass role is not allowedThe bucket policy does not allow the specified operation
Bewährte Methoden zur Vermeidung von AccessDeniedException API-Ausfällen
Verwenden Sie das Prinzip der geringsten Rechte — Gewähren Sie nur die Mindestberechtigungen, die für Ihre spezifischen Operationen erforderlich sind.
Berechtigungen vor großen Aufträgen testen — Führen Sie kleine Testaufträge aus, um Berechtigungen zu validieren, bevor Sie Tausende von Objekten verarbeiten.
Verwenden Sie den IAM-Richtliniensimulator — Testen Sie Richtlinien vor der Bereitstellung mit dem IAM-Richtliniensimulator. Weitere Informationen finden Sie unter Testen von IAM-Richtlinien mit dem IAM-Richtliniensimulator im IAM-Benutzerhandbuch.
Richten Sie die richtige kontenübergreifende Einrichtung ein — Überprüfen Sie Ihre Konfiguration für den kontenübergreifenden Zugriff auf kontoübergreifende Jobkonfigurationen. Weitere Informationen finden Sie im IAM-Tutorial: AWS Kontenübergreifendes Delegieren des Zugriffs mithilfe von IAM-Rollen im IAM-Benutzerhandbuch.
Berechtigungsänderungen überwachen — Richten Sie CloudTrail Warnmeldungen für IAM-Richtlinienänderungen ein, die sich auf Batch-Operationen auswirken könnten.
Rollenanforderungen dokumentieren — Sorgen Sie für eine klare Dokumentation der erforderlichen Berechtigungen für jeden Jobtyp.
Verwenden Sie gängige Berechtigungsvorlagen — Verwenden Sie die Beispiele für Berechtigungen und Richtlinienvorlagen:
Kontoübergreifende Ressourcen in IAM im IAM-Benutzerhandbuch.
Steuern Sie den Zugriff auf VPC-Endpunkte mithilfe der Endpunktrichtlinien im AWS PrivateLink Handbuch.
AccessDeniedException Problembehandlung
Folgen Sie diesen Schritten systematisch, um Probleme mit Berechtigungen zu identifizieren und zu lösen.
Von S3 Batch Operations unterstützte VorgängeSuchen Sie nach Regionen nach unterstützten Vorgängen. Vergewissern Sie sich, dass Directory-Bucket-Operationen nur an regionalen und zonalen Endpunkten verfügbar sind. Stellen Sie sicher, dass der Vorgang für die Speicherklasse Ihres Buckets unterstützt wird.
Verwenden Sie den folgenden Befehl, um festzustellen, ob Sie Jobs auflisten können.
aws s3control list-jobs --account-id111122223333Verwenden Sie den folgenden Befehl, um die IAM-Berechtigungen für die anfordernde Identität zu überprüfen. Das Konto, auf dem der Job ausgeführt wird, benötigt die folgenden Berechtigungen:
s3:CreateJob,s3:DescribeJob,s3:ListJobs-s3:UpdateJobPriority,s3:UpdateJobStatus-iam:PassRole.aws sts get-caller-identity111122223333Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Rolle existiert und angenommen werden kann.
aws iam get-role --role-namerole-name-
Verwenden Sie den folgenden Befehl, um die Vertrauensrichtlinie der Rolle zu überprüfen. Die Rolle, die den Job ausführt, muss Folgendes haben:
Eine Vertrauensbeziehung, die es
batchoperations---s3.amazonaws.com.rproxy.govskope.caermöglicht, die Rolle zu übernehmen.Die Operationen, die der Batch-Vorgang ausführt (z.
s3:PutObjectTaggingB. bei Tagging-Vorgängen).Zugriff auf die Quell- und Ziel-Buckets.
Berechtigung zum Lesen der Manifestdatei.
Erlaubnis zum Schreiben von Abschlussberichten.
aws iam get-role --role-namerole-name--query 'Role.AssumeRolePolicyDocument' Verwenden Sie den folgenden Befehl, um den Zugriff auf das Manifest und die Quell-Buckets zu sperren.
aws s3 ls s3://bucket-name-
Testen Sie den Vorgang, der durch den Batch-Vorgang ausgeführt wird. Wenn der Batch-Vorgang beispielsweise Tagging durchführt, taggen Sie ein Beispielobjekt im Quell-Bucket.
Suchen Sie in den Bucket-Richtlinien nach Richtlinien, die den Vorgang möglicherweise ablehnen.
Überprüfen Sie das Objekt ACLs , wenn Sie mit älteren Zugriffskontrollen arbeiten.
Stellen Sie sicher, dass keine Service Control-Richtlinien (SCPs) den Vorgang blockieren.
Bestätigen Sie, dass VPC-Endpunktrichtlinien Batch-Operationen zulassen, wenn VPC-Endpunkte verwendet werden.
Verwenden Sie den folgenden Befehl, um Berechtigungsfehler CloudTrail zu identifizieren.
aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.errorCode = AccessDenied }" \ --start-timetimestamp
SlowDownError
Typ: API-Fehler
Die SlowDownError Ausnahme tritt auf, wenn Ihr Konto das Limit für die Anforderungsrate für S3 Batch Operations überschritten hat APIs. Dies ist ein Drosselungsmechanismus, um zu verhindern, dass der Dienst durch zu viele Anfragen überlastet wird. Er hat die folgenden häufigen Ursachen:
Hohe API-Anforderungshäufigkeit — Zu viele API-Aufrufe in einem kurzen Zeitraum.
Gleichzeitige Auftragsvorgänge — Mehrere Anwendungen oder creating/managing Benutzeraufträge gleichzeitig.
Automatisierte Skripts ohne Ratenbegrenzung — Skripte, die keine geeigneten Backoff-Strategien implementieren.
Zu häufiges Abfragen des Jobstatus — Der Jobstatus wird häufiger als nötig überprüft.
Burst-Traffic-Muster — Plötzliche Spitzenzeiten bei der API-Nutzung zu Spitzenzeiten.
Regionale Kapazitätsgrenzen — Überschreitung der zugewiesenen Anforderungskapazität für Ihre Region.
Verwandte Fehlermeldungen:
SlowDownPlease reduce your request rateRequest rate exceeded
Bewährte Methoden zur Vermeidung von SlowDownError API-Ausfällen
Implementieren Sie eine clientseitige Ratenbegrenzung — Fügen Sie Verzögerungen zwischen API-Aufrufen in Ihren Anwendungen hinzu.
Verwenden Sie exponentielles Backoff mit Jitter — Ordnen Sie Wiederholungsverzögerungen nach dem Zufallsprinzip an, um donnernde Herdenprobleme zu vermeiden.
Richten Sie die richtige Wiederholungslogik ein — Implementieren Sie automatische Wiederholungsversuche mit zunehmender Verzögerung bei vorübergehenden Fehlern.
Verwenden Sie ereignisgesteuerte Architekturen — Ersetzen Sie Abfragen durch Benachrichtigungen bei Änderungen des Auftragsstatus. EventBridge
Verteilung der Arbeitslast auf mehrere Zeiträume — Gestaffeln Sie die Auftragserstellung und die Statusprüfungen auf verschiedene Zeiträume.
Überwachung von Ratenlimits und Warnmeldungen — Richten Sie CloudWatch Alarme ein, um zu erkennen, wenn Sie sich den Grenzwerten nähern.
Die meisten AWS SDKs verfügen über eine integrierte Wiederholungslogik für Fehler bei der Ratenbegrenzung. Konfigurieren Sie sie wie folgt:
AWS CLI— Verwendung
cli-read-timeoutundcli-connect-timeoutParameter.AWS SDK for Python (Boto3) — Konfigurieren Sie Wiederholungsmodi und maximale Versuche in Ihrer Client-Konfiguration.
AWS SDK for Java — Verwendung
RetryPolicyundClientConfigurationEinstellungen.AWS SDK für JavaScript — Konfiguration
maxRetriesundretryDelayOptions.
Weitere Informationen zu Wiederholungsmustern und bewährten Methoden finden Sie unter Wiederholungsversuch mit Backoff-Muster im Leitfaden Prescriptive Guidance. AWS
SlowDownError Problembehandlung
Implementieren Sie in Ihrem Code sofort exponentielles Backoff.
Beispiel von exponentiellem Backoff in Bash
for attempt in {1..5}; do if aws s3control describe-job --account-id111122223333--job-idjob-id; then break else wait_time=$((2**attempt)) echo "Rate limited, waiting ${wait_time} seconds..." sleep $wait_time fi done-
Wird verwendet CloudTrail , um die Quelle des hohen Anforderungsvolumens zu identifizieren.
aws logs filter-log-events \ --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob || $.eventName = DescribeJob }" \ --start-timetimestamp\ --query 'events[*].[eventTime,sourceIPAddress,userIdentity.type,eventName]' Überprüfen Sie die Häufigkeit der Abfragen.
Vermeiden Sie es, den Jobstatus mehr als einmal alle 30 Sekunden auf aktive Jobs zu überprüfen.
Verwenden Sie nach Möglichkeit Benachrichtigungen über den Abschluss von Jobs, anstatt Abfragen durchzuführen.
Implementieren Sie Jitter in Ihren Abfrageintervallen, um synchronisierte Anfragen zu vermeiden.
-
Optimieren Sie Ihre API-Nutzungsmuster.
Wenn möglich, mehrere Operationen stapeln.
Verwenden Sie
ListJobsdiese Option, um den Status mehrerer Jobs in einem Anruf abzurufen.Jobinformationen zwischenspeichern, um redundante API-Aufrufe zu reduzieren.
Verteilen Sie die Schaffung von Arbeitsplätzen über einen bestimmten Zeitraum, anstatt viele Arbeitsplätze gleichzeitig zu schaffen.
-
Verwenden Sie CloudWatch Metriken für API-Aufrufe, um Ihre Anforderungsmuster zu überwachen.
aws logs put-metric-filter \ --log-group-name CloudTrail/S3BatchOperations \ --filter-name S3BatchOpsAPICallCount \ --filter-pattern "{ $.eventSource = s3.amazonaws.com && $.eventName = CreateJob }" \ --metric-transformations \ metricName=S3BatchOpsAPICalls,metricNamespace=Custom/S3BatchOps,metricValue=1
InvalidManifestContent
Typ: Jobausfall
Die InvalidManifestContent Ausnahme tritt auf, wenn Probleme mit dem Format, dem Inhalt oder der Struktur der Manifestdatei vorliegen, die verhindern, dass S3 Batch Operations den Job verarbeitet. Es hat die folgenden häufigen Ursachen:
Formatverletzungen — Fehlende erforderliche Spalten, falsche Trennzeichen oder fehlerhafte CSV-Struktur.
Probleme mit der Inhaltskodierung — Falsche Zeichenkodierung, STL-Markierungen oder Nicht-UTF-8-Zeichen.
Probleme mit Objektschlüsseln — Ungültige Zeichen, falsche URL-Kodierung oder Schlüssel, die Längenbeschränkungen überschreiten.
Größenbeschränkungen — Das Manifest enthält mehr Objekte, als der Vorgang unterstützt.
Formatfehler bei der Versions-ID — Fehlerhafte oder ungültige Version IDs für versionierte Objekte.
ETag Formatprobleme — Falsches ETag Format oder fehlende Anführungszeichen für Operationen, die Folgendes erfordern. ETags
Inkonsistente Daten — Gemischte Formate innerhalb desselben Manifests oder inkonsistente Spaltenanzahl.
Verwandte Fehlermeldungen:
Required fields are missing in the schema: + missingFieldsInvalid Manifest ContentThe S3 Batch Operations job failed because it contains more keys than the maximum allowed in a single jobInvalid object key formatManifest file is not properly formattedInvalid version ID formatETag format is invalid
Bewährte Methoden zur Vermeidung von InvalidManifestContent Jobausfällen
Vor dem Upload validieren — Testen Sie das Manifestformat mit kleinen Jobs, bevor Sie große Datensätze verarbeiten.
Konsistente Kodierung verwenden — Verwenden Sie für Manifestdateien immer die UTF-8-Kodierung ohne BOM.
Implementieren Sie Standards für die Manifestgenerierung — Erstellen Sie Vorlagen und Validierungsverfahren für die Manifesterstellung.
Gehen Sie richtig mit Sonderzeichen um — URL-kodieren Sie Objektschlüssel, die Sonderzeichen enthalten.
Objektanzahl überwachen — Verfolgen Sie die Größe des Manifests und teilen Sie große Jobs proaktiv auf.
Existenz von Objekten überprüfen — Stellen Sie sicher, dass Objekte existieren, bevor Sie sie in Manifeste aufnehmen.
Verwenden Sie AWS Tools für die Manifestgenerierung — Nutzen Sie AWS CLI
s3api list-objects-v2diese Option, um ordnungsgemäß formatierte Objektlisten zu generieren.
Häufige Probleme und Lösungen für Manifeste:
Fehlende erforderliche Spalten — Stellen Sie sicher, dass Ihr Manifest alle erforderlichen Spalten für Ihren Vorgangstyp enthält. Die am häufigsten fehlenden Spalten sind Bucket und Key.
Falsches CSV-Format — Verwenden Sie Kommatrennzeichen, sorgen Sie für eine einheitliche Spaltenanzahl in allen Zeilen und vermeiden Sie eingebettete Zeilenumbrüche innerhalb von Feldern.
Sonderzeichen in Objektschlüsseln — URL-kodieren Objektschlüssel, die Leerzeichen, Unicode-Zeichen oder XML-Sonderzeichen (<, >, &, „, ') enthalten.
Große Manifestdateien — Teilen Sie Manifeste mit mehr als dem Operationslimit in mehrere kleinere Manifeste auf und erstellen Sie separate Jobs.
Ungültige Version IDs — Stellen Sie sicher, dass IDs es sich bei der Version um richtig formatierte alphanumerische Zeichenfolgen handelt. Entfernen Sie die Spalte mit der Versions-ID, falls sie nicht benötigt wird.
Probleme mit der Kodierung — Speichern Sie Manifestdateien als UTF-8 ohne BOM. Vermeiden Sie es, Manifeste durch Systeme zu kopieren, die die Kodierung verändern könnten.
Ausführliche Spezifikationen und Beispiele für das Manifestformat finden Sie im Folgenden:
InvalidManifestContent Problembehandlung
Laden Sie die Manifest-Datei herunter und überprüfen Sie sie. Stellen Sie manuell sicher, dass das Manifest die Formatanforderungen erfüllt:
CSV-Format mit Kommatrennzeichen.
UTF-8-Kodierung ohne BOM.
Konsistente Anzahl von Spalten in allen Zeilen.
Keine leeren Zeilen oder abschließenden Leerzeichen.
Objektschlüssel sind korrekt URL-kodiert, wenn sie Sonderzeichen enthalten.
Verwenden Sie den folgenden Befehl, um die Manifestdatei herunterzuladen.
aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key./manifest.csv-
Überprüfen Sie die erforderlichen Spalten für Ihren Vorgang:
Alle Operationen:
Bucket,KeyOperationen kopieren:
VersionId(optional)Operationen wiederherstellen:
VersionId(optional)Tag-Operationen ersetzen: Es sind keine zusätzlichen Spalten erforderlich.
ACL-Operationen ersetzen: Keine zusätzlichen Spalten erforderlich.
Wiederherstellung einleiten:
VersionId(optional)
-
Überprüfen Sie die Grenzwerte für die Anzahl der Objekte:
Kopieren: Maximal 1 Milliarde Objekte.
Löschen: Maximal 1 Milliarde Objekte.
Wiederherstellen: Maximal 1 Milliarde Objekte.
Tagging: maximal 1 Milliarde Objekte.
ACL: maximal 1 Milliarde Objekte.
-
Erstellen Sie ein Testmanifest mit einigen Objekten aus Ihrem ursprünglichen Manifest.
-
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob eine Stichprobe von Objekten aus dem Manifest vorhanden ist.
aws s3 ls s3://amzn-s3-demo-bucket1/object-key -
Überprüfen Sie die Details zum Auftragsfehler und überprüfen Sie den Grund des Fehlers sowie alle spezifischen Fehlerdetails in der Jobbeschreibung.
aws s3control describe-job --account-id111122223333--job-idjob-id