Importformatkontingente und Validierung - Amazon-DynamoDB

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.

Importformatkontingente und Validierung

Importkontingente

Der DynamoDB-Import aus Amazon S3 kann bis zu 50 gleichzeitige Importaufgaben mit einer Gesamtgröße von 15 TB gleichzeitig in den Regionen us-east-1, us-west-2 und eu-west-1 unterstützen. In allen anderen Regionen werden bis zu 50 gleichzeitige Importaufgaben mit einer Gesamtgröße von 1 TB unterstützt. Jeder Importauftrag kann bis zu 50.000 Amazon S3 S3-Objekte in allen Regionen umfassen. Diese Standardkontingente werden auf jedes Konto angewendet. Wenn Sie der Meinung sind, dass Sie diese Kontingente ändern müssen, wenden Sie sich bitte an Ihr Kundenbetreuungsteam. Dies wird auf der case-by-case Grundlage geprüft. Weitere Informationen zu den DynamoDB-Grenzwerten finden Sie unter Servicekontingente.

Validierungsfehler

Während des Importvorgangs kann DynamoDB beim Parsen Ihrer Daten auf Fehler stoßen. Für jeden Fehler gibt DynamoDB ein CloudWatch Protokoll aus und zählt die Gesamtzahl der aufgetretenen Fehler. Wenn das Amazon-S3-Objekt selbst fehlerhaft formatiert ist oder sein Inhalt kein DynamoDB-Element bilden kann, können wir die Verarbeitung des verbleibenden Teils des Objekts überspringen.

Anmerkung

Wenn die Amazon-S3-Datenquelle über mehrere Elemente mit demselben Schlüssel verfügt, werden die Elemente überschrieben, bis eines übrig bleibt. Dies kann den Anschein erwecken, als sei 1 Element importiert worden und die anderen seien ignoriert worden. Die doppelten Elemente werden in zufälliger Reihenfolge überschrieben, werden nicht als Fehler gezählt und nicht in die Protokolle aufgenommen. CloudWatch

Sobald der Import abgeschlossen ist, können Sie die Gesamtzahl der importierten Elemente, die Gesamtzahl der Fehler und die Gesamtzahl der verarbeiteten Elemente anzeigen. Zur weiteren Fehlerbehebung können Sie auch die Gesamtgröße der importierten Elemente und die Gesamtgröße der verarbeiteten Daten überprüfen.

Es gibt drei Kategorien von Importfehlern: API Validierungsfehler, Datenvalidierungsfehler und Konfigurationsfehler.

APIValidierungsfehler

APIBei Validierungsfehlern handelt es sich um Fehler auf Elementebene, die sich aus der Synchronisierung ergeben. API Häufige Ursachen sind Berechtigungsprobleme, fehlende erforderliche Parameter und Fehler bei der Parametervalidierung. Einzelheiten darüber, warum der API Anruf fehlgeschlagen ist, sind in den Ausnahmen enthalten, die von der ImportTable Anfrage ausgelöst wurden.

Datenvalidierungsfehler

Datenvalidierungsfehler können entweder auf Element- oder Dateiebene auftreten. Während des Imports werden Elemente basierend auf DynamoDB-Regeln validiert, bevor sie in die Zieltabelle importiert werden. Wenn die Validierung eines Elements fehlschlägt und das Element nicht importiert wird, überspringt die Importaufgabe dieses Element und fährt mit dem nächsten Element fort. Am Ende des Auftrags wird der Importstatus auf FAILED a gesetzt FailureCode, ItemValidationError und die Überprüfung FailureMessage „Einige der Elemente haben die Überprüfung nicht bestanden und wurden nicht importiert“. Weitere Informationen finden Sie in den CloudWatch Fehlerprotokollen.“

Zu den häufigsten Ursachen für Fehler bei der Datenüberprüfung gehören Objekte, die nicht analysiert werden können, Objekte haben ein falsches Format (die Eingabe gibt DYNAMODB _ an, das Objekt befindet sich JSON jedoch nicht in DYNAMODB _JSON) und das Schema stimmt nicht mit den angegebenen Quelltabellenschlüsseln überein.

Konfigurationsfehler

Konfigurationsfehler sind in der Regel Workflowfehler aufgrund der Berechtigungsvalidierung. Der Import-Workflow überprüft einige Berechtigungen, nachdem die Anforderung angenommen wurde. Wenn es Probleme beim Aufrufen einer der erforderlichen Abhängigkeiten wie Amazon S3 oder CloudWatch dem Prozess gibt, markiert der Prozess den Importstatus alsFAILED. failureCode und failureMessage weisen auf den Grund für den Fehler hin. Gegebenenfalls enthält die Fehlermeldung auch die Anforderungs-ID, mit der Sie den Grund für den Fehler in untersuchen können CloudTrail.

Zu den häufigsten Konfigurationsfehlern gehören falsche Angaben URL für den Amazon S3 S3-Bucket und keine Zugriffsberechtigung für den Amazon S3 S3-Bucket, CloudWatch Protokolle und AWS KMS Schlüssel, die zum Entschlüsseln des Amazon S3 S3-Objekts verwendet wurden. Weitere Informationen finden Sie unter Verwenden von Datenschlüsseln.

Validieren von Amazon-S3-Quellobjekten

Um S3-Quell-Objekte zu validieren, führen Sie die folgenden Schritte aus.

  1. Überprüfen Sie das Datenformat und den Komprimierungstyp

    • Stellen Sie sicher, dass alle passenden Amazon S3 S3-Objekte unter dem angegebenen Präfix dasselbe Format haben (DYNAMODB_JSON, DYNAMODB _ION,CSV)

    • Stellen Sie sicher, dass alle passenden Amazon S3 S3-Objekte unter dem angegebenen Präfix auf die gleiche Weise komprimiert werden (GZIP,ZSTD,NONE)

      Anmerkung

      Die Amazon S3 S3-Objekte müssen nicht die entsprechende Erweiterung (.csv/.json/.ion/.gz/.zstd usw.) haben, da das im Aufruf angegebene Eingabeformat Vorrang hat. ImportTable

  2. Überprüfen Sie, ob die Importdaten dem gewünschten Tabellenschema entsprechen

    • Stellen Sie sicher, dass jedes Element in den Quelldaten über den Primärschlüssel verfügt. Ein Sortierschlüssel ist für Importe optional.

    • Stellen Sie sicher, dass der mit dem Primärschlüssel und einem beliebigen Sortierschlüssel verknüpfte Attributtyp mit dem Attributtyp in der Tabelle und im Schema übereinstimmt, wie in den Parametern für die Tabellenerstellung angegeben GSI

Fehlerbehebung

CloudWatch Logs

Bei fehlgeschlagenen Importaufträgen werden detaillierte Fehlermeldungen in den CloudWatch Protokollen gespeichert. Um auf diese Protokolle zuzugreifen, rufen Sie sie zunächst mit dem folgenden Befehl ImportArn aus der Ausgabe ab und beschreiben den Import:

aws dynamodb describe-import --import-arn arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658528578619-c4d4e311 }

Beispielausgabe:

aws dynamodb describe-import --import-arn "arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658528578619-c4d4e311" { "ImportTableDescription": { "ImportArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658528578619-c4d4e311", "ImportStatus": "FAILED", "TableArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table", "TableId": "7b7ecc22-302f-4039-8ea9-8e7c3eb2bcb8", "ClientToken": "30f8891c-e478-47f4-af4a-67a5c3b595e3", "S3BucketSource": { "S3BucketOwner": "ACCOUNT", "S3Bucket": "my-import-source", "S3KeyPrefix": "import-test" }, "ErrorCount": 1, "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT:log-group:/aws-dynamodb/imports:*", "InputFormat": "CSV", "InputCompressionType": "NONE", "TableCreationParameters": { "TableName": "target-table", "AttributeDefinitions": [ { "AttributeName": "pk", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "pk", "KeyType": "HASH" } ], "BillingMode": "PAY_PER_REQUEST" }, "StartTime": 1658528578.619, "EndTime": 1658528750.628, "ProcessedSizeBytes": 70, "ProcessedItemCount": 1, "ImportedItemCount": 0, "FailureCode": "ItemValidationError", "FailureMessage": "Some of the items failed validation checks and were not imported. Please check CloudWatch error logs for more details." } }

Rufen Sie die Protokollgruppe und die Import-ID aus der obigen Antwort ab und verwenden Sie sie, um die Fehlerprotokolle abzurufen. Die Import-ID ist das letzte Pfadelement des Felds ImportArn. Der Name der Protokollgruppe lautet /aws-dynamodb/imports. Der Name des Fehler-Protokollstreams ist import-id/error. In diesem Beispiel wäre es 01658528578619-c4d4e311/error.

Fehlender Schlüssel pk im Element

Wenn das S3-Quellobjekt nicht den Primärschlüssel enthält, der als Parameter angegeben wurde, schlägt der Import fehl. Zum Beispiel, wenn Sie den Primärschlüssel für den Import als Spaltenname „pk“ definieren.

aws dynamodb import-table —s3-bucket-source S3Bucket=my-import-source,S3KeyPrefix=import-test.csv \ —input-format CSV --table-creation-parameters '{"TableName":"target-table","KeySchema": \ [{"AttributeName":"pk","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"pk","AttributeType":"S"}],"BillingMode":"PAY_PER_REQUEST"}'

Die Spalte „pk“ fehlt im Quellobjekt import-test.csv, das die folgenden Inhalte hat:

title,artist,year_of_release The Dark Side of the Moon,Pink Floyd,1973

Dieser Import schlägt aufgrund eines Fehlers bei der Elementvalidierung wegen des fehlenden Primärschlüssels in der Datenquelle fehl.

Beispiel für ein CloudWatch Fehlerprotokoll:

aws logs get-log-events —log-group-name /aws-dynamodb/imports —log-stream-name 01658528578619-c4d4e311/error { "events": [ { "timestamp": 1658528745319, "message": "{\"itemS3Pointer\":{\"bucket\":\"my-import-source\",\"key\":\"import-test.csv\",\"itemIndex\":0},\"importArn\":\"arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658528578619-c4d4e311\",\"errorMessages\":[\"One or more parameter values were invalid: Missing the key pk in the item\"]}", "ingestionTime": 1658528745414 } ], "nextForwardToken": "f/36986426953797707963335499204463414460239026137054642176/s", "nextBackwardToken": "b/36986426953797707963335499204463414460239026137054642176/s" }

Dieses Fehlerprotokoll zeigt an, dass „ein oder mehrere Parameterwerte ungültig waren: Der Schlüssel pk im Element fehlt“. Da dieser Importauftrag fehlgeschlagen ist, existiert jetzt die Tabelle „Zieltabelle“ und ist leer, da keine Elemente importiert wurden. Das erste Element wurde verarbeitet, und das Objekt hat die Elementvalidierung nicht bestanden.

Um das Problem zu beheben, löschen Sie zuerst die „Zieltabelle“, wenn sie nicht mehr benötigt wird. Verwenden Sie dann entweder einen Primärschlüsselspaltennamen, der im Quellobjekt vorhanden ist, oder aktualisieren Sie die Quelldaten wie folgt:

pk,title,artist,year_of_release Albums::Rock::Classic::1973::AlbumId::ALB25,The Dark Side of the Moon,Pink Floyd,1973

Zieltabelle existiert

Wenn Sie eine Importaufgabe starten und eine Antwort wie folgt erhalten:

An error occurred (ResourceInUseException) when calling the ImportTable operation: Table already exists: target-table

Um diesen Fehler zu beheben, müssen Sie einen Tabellennamen wählen, der noch nicht existiert, und den Import wiederholen.

Der angegebene Bucket existiert nicht

Wenn der Quell-Bucket nicht existiert, schlägt der Import fehl und die Details der Fehlermeldung werden protokolliert CloudWatch.

Beispiel-Importbeschreibung:

aws dynamodb —endpoint-url $ENDPOINT describe-import —import-arn "arn:aws:dynamodb:us-east-1:531234567890:table/target-table/import/01658530687105-e6035287" { "ImportTableDescription": { "ImportArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table/import/01658530687105-e6035287", "ImportStatus": "FAILED", "TableArn": "arn:aws:dynamodb:us-east-1:ACCOUNT:table/target-table", "TableId": "e1215a82-b8d1-45a8-b2e2-14b9dd8eb99c", "ClientToken": "3048e16a-069b-47a6-9dfb-9c259fd2fb6f", "S3BucketSource": { "S3BucketOwner": "531234567890", "S3Bucket": "BUCKET_DOES_NOT_EXIST", "S3KeyPrefix": "import-test" }, "ErrorCount": 0, "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT:log-group:/aws-dynamodb/imports:*", "InputFormat": "CSV", "InputCompressionType": "NONE", "TableCreationParameters": { "TableName": "target-table", "AttributeDefinitions": [ { "AttributeName": "pk", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "pk", "KeyType": "HASH" } ], "BillingMode": "PAY_PER_REQUEST" }, "StartTime": 1658530687.105, "EndTime": 1658530701.873, "ProcessedSizeBytes": 0, "ProcessedItemCount": 0, "ImportedItemCount": 0, "FailureCode": "S3NoSuchBucket", "FailureMessage": "The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: Q4W6QYYFDWY6WAKH; S3 Extended Request ID: ObqSlLeIMJpQqHLRX2C5Sy7n+8g6iGPwy7ixg7eEeTuEkg/+chU/JF+RbliWytMlkUlUcuCLTrI=; Proxy: null)" } }

Der FailureCode lautet S3NoSuchBucket. Die FailureMessage enthält Details wie die Anforderungs-ID und den Service, der den Fehler ausgelöst hat. Da der Fehler erkannt wurde, bevor die Daten in die Tabelle importiert wurden, wird keine neue DynamoDB-Tabelle erstellt. In einigen Fällen, wenn diese Fehler nach dem Start des Datenimports auftreten, wird die Tabelle mit teilweise importierten Daten beibehalten.

Um diesen Fehler zu beheben, stellen Sie sicher, dass der Quell-Bucket aus Amazon S3 vorhanden ist, und starten Sie den Importvorgang neu.