Wie behebe ich Probleme mit Sammelaufträgen in Amazon S3?

Lesedauer: 8 Minute
0

Wenn ich eine Sammelauftragsaufgabe in Amazon Simple Storage Service (Amazon S3) für Objekte in meinem Bucket erstelle, gibt Amazon S3 eine Fehlermeldung zurück. Oder der Sammelauftrag schlägt fehl.

Kurzbeschreibung

Wenn ein Auftrag in Amazon S3 Batch Operations auf ein Problem stößt, das eine erfolgreiche Ausführung verhindert, schlägt der Auftrag fehl. Ein fehlgeschlagener Auftrag generiert einen oder mehrere Fehlercodes und kann mehrere Gründe haben. Um die Fehlercodes und Gründe für eine Amazon S3 Batch Operation einzusehen, können Sie die Einzelheiten zum Auftrag anfordern. Sie können Ihre Fehlercodes und Gründe auch im Abschlussbericht für den Auftrag überprüfen.

Um zu verhindern, dass Aufträge eine große Anzahl von erfolglosen Vorgängen ausführen, legt Amazon S3 für jeden Sammelauftrag einen Schwellenwert für Aufgabenfehler fest. Amazon S3 überwacht die Aufgaben-Fehlerrate, nachdem mindestens 1.000 Aufgaben ausgeführt wurden. Wenn ein Auftrag die Ausfallrate von 50 % überschreitet, schlägt der Auftrag fehl. Um diesen Fehler zu beheben, überprüfen Sie die Ursachen der Fehler und korrigieren Sie diese. Reichen Sie den Auftrag dann erneut ein.

Lösung

Das Manifest-Dateiformat ist falsch (.csv oder JSON)

Amazon S3 Batch Operations unterstützt .csv- und JSON-Manifest-Dateien (Bericht von Amazon S3 Inventory). Wenn die Manifest-Datei nicht korrekt ist, müssen Sie einen neuen Sammelauftrag in Amazon S3 erstellen und das richtige Format angeben.

  • Verwenden Sie für den Bericht in Amazon S3 Inventory einen Bericht im CSV-Format und geben Sie die Datei manifest.json an, die mit dem Inventarbericht verknüpft ist.

  • Fügen Sie bei .csv-Dateien den Bucket-Namen und den Objektschlüssel in jede Zeile der Manifest-Datei ein. Fügen Sie optional die Objektversion hinzu. Wenn Sie Versions-IDs in das Manifest aufnehmen, müssen Sie IDs für alle Objekte angeben. Geben Sie andernfalls keine Versions-IDs an. Objektschlüssel müssen URL-codiert sein.

    **Hinweis:**Wenn sich die Objekte in Ihrem Manifest in einem versionierten Bucket befinden, müssen Sie die Versions-IDs für die Objekte angeben. Andernfalls schlägt der Sammelauftrag fehl. Oder Amazon S3 wendet den Sammelauftrag möglicherweise auf die falsche Version des Objekts an.

Weitere Informationen finden Sie unter Angeben eines Manifests.

Die Manifest-Datei spezifiziert mehrere Bucket-Namen oder enthält mehrere Kopfzeilen

Bei S3 Batch Operations müssen alle Objekte, die in der Manifest-Datei aufgeführt sind, im selben Bucket vorhanden sein. Andernfalls erhalten Sie diese Fehlermeldung:

„Gründe für den Fehler: Pro Job darf es nicht mehr als 1 Bucket geben. JOB_ID"

Stellen Sie bei S3-Sammelaufträgen sicher, dass Ihre Manifest-Datei nur einen Bucket-Namen angibt und keine Kopfzeilen enthält. In diesem Beispiel gibt Amazon S3 eine Fehlermeldung zurück, weil die Manifest-Datei mehrere Kopfzeilen enthält.

bucket,key
my-batch-bucket,object001.txt
my-batch-bucket,object002.txt
my-batch-bucket,object003.txt
my-batch-bucket,object004.txt

Der IAM-Rolle fehlen die Berechtigungen zum Lesen der Manifest-Datei

Die Rolle im AWS Identity and Access Management (IAM), die den S3-Sammelauftrag erstellt, muss über GetObject-Leseberechtigungen für die Manifest-Datei verfügen. Überprüfen Sie die Metadaten des Objekts auf Zugriffskonflikte mit der Inhaberschaft des S3-Objekts. Suchen Sie auch nach nicht unterstützten Schlüsseln des AWS Key Management Service (AWS KMS), welche die Manifest-Datei verschlüsseln.

Wenn die IAM-Rolle nicht über die korrekten Berechtigungen verfügt, erhalten Sie die folgenden Fehlermeldungen, wenn Sie einen S3-Sammelauftrag erstellen:

Beispiel für einen Fehler im AWS-CLI

„Grund des Fehlers: Das Lesen des Manifests ist nicht gestattet: AccessDenied“

**Hinweis:**Wenn Sie bei der Ausführung von Befehlen im AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von Fehlern im AWS-CLI. Stellen Sie darüber hinaus sicher, dass Sie die neueste Version des AWS-CLI verwenden.

Beispiel für einen Fehler in der Amazon S3-Konsole

„Warnung: Das ETag des Manifest-Objekts konnte nicht abgerufen werden. Geben Sie ein anderes Objekt an, um fortzufahren“

**Hinweis:**S3 Batch Operations unterstützt CSV-Inventarberichte, die mit AWS KMS verschlüsselt sind. S3 Batch Operations unterstützt keine .csv-Manifest-Dateien, die mit AWS KMS verschlüsselt sind. Weitere Informationen finden Sie unter Korrigieren des Inventars mithilfe der S3-Konsole.

Der Sammelauftrag befindet sich in einer anderen Region

Kopieraufträge in S3 Batch Operations müssen sich in derselben AWS-Region befinden wie der Ziel-Bucket, in den die Objekte kopiert werden sollen. Wenn Sie einen Sammelauftrag erstellen, müssen Sie dieselbe Region wählen, wie bei Ihrem Ziel-Bucket. Wenn sich der Ziel-Bucket beispielsweise in der Region us-west-2 befindet, wählen Sie us-west-2 als Region für den Sammelauftrag aus.

Der Ziel-Bucket für Ihren S3-Inventarbericht fehlt

Es muss einen Ziel-Bucket für das Manifest geben, das S3 Batch Operations generiert. Die Amazon S3-Bucket-Richtlinie muss auch die Aktion s3:PutObject zulassen. Wenn der Bericht an ein anderes AWS-Konto gesendet wird, müssen Sie sicherstellen, dass es der Ziel-Bucket der IAM-Rolle erlaubt, die Aktion s3:PutObject auszuführen.

Die Vertrauensrichtlinie der IAM-Rolle fehlt

**Hinweis:**Stellen Sie sicher, dass Sie eine IAM-Rolle und keinen IAM-Benutzer angeben.

Die Vertrauensrichtlinie für eine IAM-Rolle definiert die Bedingungen, die erfüllt sein müssen, damit andere Prinzipale sie übernehmen können. Damit der Dienstprinzipal von S3 Batch Operations die IAM-Rolle übernehmen kann, fügen Sie der Rolle eine Vertrauensrichtlinie hinzu.

Dieses Beispiel für eine Vertrauensrichtlinie gewährt Zugriff auf Amazon S3. Sie reduziert alle Risiken, die mit der Ausweitung von Berechtigungen verbunden sind:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batchoperations.s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Die IAM-Berechtigungen zum Erstellen eines Sammelauftrags fehlen

Bevor Sie Aufträge in S3 Batch Operations erstellen und ausführen, müssen Sie der IAM-Rolle die erforderlichen Berechtigungen gewähren. Wenn Ihrer IAM-Rolle die erforderlichen Berechtigungen zur Ausführung des Auftrags in S3 Batch Operations fehlen, schlägt der Sammelauftrag fehl.

Um einen Auftrag in S3 Batch Operations zu erstellen, gewähren Sie der IAM-Rolle die Berechtigungen s3:CreateJob. Dieselbe Entität, die den Auftrag erstellt, muss auch über die Berechtigungen iam:PassRole verfügen. Dadurch kann die Entität die IAM-Rolle übergeben, die Sie für den Sammelauftrag angeben. Weitere Informationen finden Sie unter Richtlinienelemente von IAM JSON: Ressource.

Kein Zugriff auf den Quell-Bucket, den S3-Inventarbericht oder den Ziel-Bucket

Stellen Sie sicher, dass die IAM-Rolle, die Sie für S3 Batch Operations verwenden, über die erforderlichen Berechtigungen verfügt, um den Sammelauftrag auszuführen.

Hier ist ein Beispiel für eine IAM-Richtlinie für den Kopiervorgang:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectTagging"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:GetObjectAcl",
        "s3:GetObjectTagging",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::{{SourceBucket}}",
        "arn:aws:s3:::{{SourceBucket}}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::{{ManifestBucket}}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::{{ReportBucket}}/*"
      ]
    }
  ]
}

Weitere Informationen finden Sie unter Erteilen von Berechtigungen für Amazon S3 Batch Operations.

Die SCP der Organisation ist restriktiv

Wenn Sie AWS Organizations verwenden, müssen Sie sicherstellen, dass es keine Ablehnungsanweisungen gibt, die den Zugriff auf Amazon S3 verweigern. Beispielsweise wenn Ihre Service-Kontrollrichtlinie (SCP) ausdrücklich alle S3-Aktionen verweigert. In diesem Fall erhalten Sie möglicherweise die Fehlermeldung Zugriff verweigert, wenn Sie einen Sammelauftrag erstellen.

Diese Beispielrichtlinie verweigert ausdrücklich alle S3-Aktionen:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Principal": "*",
      "Effect": "Deny",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

Um eine restriktive Richtlinie anzuwenden, fügen Sie die IAM-Rolle, die S3 Batch Operations zur Ausführung des Vorgangs verwendet, der Berechtigungsliste hinzu. Dieses Beispiel fügt der Richtlinie eine Ausnahme hinzu:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Principal": "\*",
      "Effect": "Deny",
      "Action": "s3:\*",
      "Resource": "\*",
      "Condition": {
        "StringNotLike": {
          "aws:userId": \[
            "AROAEXAMPLEID:\*",
            "AIDAEXAMPLEID",
            "111111111111"
          \]
        }
      }
    }
  \]
}

Die Versions-ID für ein Objekt fehlt im Manifest

Wenn ein Sammelauftrag auf ein Objekt im Manifest mit einem leeren Versions-ID-Feld stößt, erhalten Sie folgende Fehlermeldung:

„Fehler: BUCKET_NAME,prefix/file_name,failed,400,InvalidRequest,Task failed due to missing VersionId"

Wenn das Manifest-Format während des Vorgangs Versions-IDs verwendet, darf das Versions-ID-Feld keine leere Zeichenfolge enthalten. Stattdessen muss das Versions-ID-Feld eine „Null“-Zeichenfolge sein. Bei Aufträgen ohne Versionierung tritt dieser Fehler nicht auf. Sie arbeiten mit der neuesten Version jedes Objekts und nicht mit den Versions-IDs, die im Manifest zu finden sind. Um diesen Fehler zu beheben, konvertieren Sie die leeren Versions-IDs in Null-Zeichenfolgen.

**Hinweis:**Batch Operations schlägt für dieses bestimmte Objekt fehl, aber nicht für den gesamten Auftrag.

Der Auftragsbericht wird nicht zugestellt, wenn der Aufbewahrungsmodus von Amazon S3 Object Lock aktiviert ist

Wenn Sie den Object-Lock-Aufbewahrungsmodus für einen Ziel-Bucket entweder im Governance-Modus oder im Compliance-Modus konfigurieren, wird möglicherweise dieser Fehler angezeigt:

„Fehler: Gründe für den Fehler. Der Auftragsbericht konnte nicht in Ihren Bucket geschrieben werden. Bitte überprüfen Sie Ihre Berechtigungen.“

Amazon S3 unterstützt Object Lock für Ziel-Buckets mit Aufbewahrungsmodus-Konfigurationen nicht. Wenn der Aufbewahrungsmodus konfiguriert ist, ist der Bucket WORM-geschützt (Einmal-Schreiben-Mehrfach-Lesen). Um diesen Fehler zu beheben, wählen Sie einen Ziel-Bucket für Ihre Auftragsabschlussberichte, für den der Object-Lock-Aufbewahrungsmodus nicht konfiguriert ist.

**Hinweis:**Es ist der Abschlussbericht, der fehlschlägt, nicht der Auftrag. Der Auftrag wird erfolgreich abgeschlossen und alle Objekte werden verarbeitet.

Die ETag-Versionen stimmen nicht überein

Wenn Sie das Manifest im Auftrag von Batch Operations angeben, können Sie den Manifest-Objektschlüssel, das ETag und die optionale Versions-ID angeben. Wenn Sie die Manifest-Datei angeben, überprüfen Sie, ob der ETag-Wert mit dem ETag der neuesten Version des Manifest-Objekts im S3-Bucket übereinstimmt. Überprüfen Sie auf der Registerkarte Sammelaufträge der Amazon S3-Konsole das ETag des Manifest-Objekts in den Eigenschaften der Manifest-Datei. Überprüfen Sie im AWS CLI den Wert des ETags, den die Manifest-Spezifikation übergibt.

Wenn das eingetragene ETag in der Konsole oder im AWS CLI nicht mit dem ETag im S3-Bucket übereinstimmt, tritt dieser Fehler auf:

„Fehler beim Lesen des Manifests. Verursacht durch: Nichtübereinstimmung des ETags. Erwartetes ETag: 69f52a4e9f797e987155d9c8f5880897“

Notieren Sie sich das Erwartete ETag in diesem Fehler und stellen Sie sicher, dass beide Versionen Ihres ETags übereinstimmen. Weitere Informationen finden Sie unter Angeben eines Manifests.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten