Quote e convalida dei formati di importazione - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Quote e convalida dei formati di importazione

Quote di importazione

La funzionalità DynamoDB di importazione da S3 può supportare fino a 50 processi di importazione simultanea, con una dimensione totale dell'oggetto di origine di importazione pari a 15 TB alla volta nelle regioni us-east-1, us-west-2 e eu-west-1. In tutte le altre regioni, sono supportate fino a 50 attività di importazione simultanee con una dimensione totale di 1 TB. Ogni processo di importazione può richiedere fino a 50.000 oggetti Amazon S3 in tutte le regioni. Queste quote predefinite vengono applicate a tutti gli account. Se ritieni di dover rivedere queste quote, contatta il team del tuo account, che prenderà in considerazione la modifica di volta in volta. case-by-case Per ulteriori informazioni sui limiti di DynamoDB, consulta Service Quotas.

Errori di convalida

Durante il processo di importazione, DynamoDB potrebbe riscontrare errori durante l'analisi dei dati. Per ogni errore, DynamoDB emette CloudWatch un registro e registra il numero totale di errori riscontrati. Se il formato dell'oggetto Amazon S3 è errato o se il suo contenuto non è in grado di formare un elemento DynamoDB, è possibile saltare l'elaborazione della parte rimanente dell'oggetto.

Nota

Se l'origine dei dati di Amazon S3 ha più elementi che condividono la stessa chiave, gli elementi verranno sovrascritti finché non ne rimarrà uno. Potrebbe sembrare che un elemento sia stato importato e che gli altri siano stati ignorati. Gli elementi duplicati verranno sovrascritti in ordine casuale, non verranno contati come errori e non verranno inseriti nei log. CloudWatch

Una volta completata l'importazione, puoi vedere il numero totale di elementi importati, il numero totale di errori e il numero totale di elementi elaborati. Per un'ulteriore verifica, puoi anche controllare la dimensione totale degli elementi importati e la dimensione totale dei dati elaborati.

Esistono tre categorie di errori di importazione: errori di convalida API, errori di convalida dei dati ed errori di configurazione.

Errori di convalida API

Gli errori di convalida API sono errori a livello di elemento restituiti dall'API di sincronizzazione. Le cause più comuni sono dovuti a problemi di autorizzazione, parametri obbligatori mancanti ed errori di convalida dei parametri. I dettagli relativi al motivo per cui la chiamata API non è riuscita sono contenuti nelle eccezioni generate dalla richiesta ImportTable.

Errori di convalida dei dati

Gli errori di convalida dei dati possono verificarsi a livello di elemento o di file. Durante l'importazione, gli elementi vengono convalidati in base alle regole DynamoDB prima di venire importati nella tabella di destinazione. Quando un elemento non supera la convalida e non viene importato, il processo di importazione salta l'elemento e passa all'elemento successivo. Alla fine del processo, lo stato di importazione è impostato su FAILED con un FailureCode, ItemValidationError e FailureMessage «Alcuni articoli non hanno superato i controlli di convalida e non sono stati importati. Per ulteriori dettagli, consulta i log degli CloudWatch errori.»

Le cause più comuni degli errori di convalida dei dati includono oggetti non analizzabili, oggetti in un formato errato (l'input specifica DYNAMODB_JSON ma l'oggetto non è in formato DYNAMODB_JSON) e la mancata corrispondenza tra lo schema e le chiavi della tabella di origine specificate.

Errori di configurazione

Gli errori di configurazione sono in genere errori del flusso di lavoro dovuti alla convalida delle autorizzazioni. Il flusso di lavoro di importazione verifica alcune autorizzazioni dopo aver accettato la richiesta. Se ci sono problemi a chiamare una delle dipendenze richieste come Amazon S3 CloudWatch o il processo contrassegna lo stato di importazione come FAILED. I codici failureCode e failureMessage indicano la causa dell'errore. Ove applicabile, il messaggio di errore contiene anche l'ID della richiesta che puoi utilizzare per indagare sul motivo dell'errore. CloudTrail

Gli errori di configurazione più comuni includono l'URL errato per il bucket Amazon S3 e la mancanza dell'autorizzazione per accedere al bucket Amazon S3, ai CloudWatch log e alle chiavi utilizzati AWS KMS per decrittografare l'oggetto Amazon S3. Per ulteriori informazioni, consulta l'argomento relativo all'utilizzo e chiavi dati.

Convalida di oggetti Amazon S3 di origine

Per convalidare gli oggetti S3 di origine, esegui questi passaggi.

  1. Convalidare il formato dei dati e il tipo di compressione

    • Assicurarsi che tutti gli oggetti Amazon S3 corrispondenti associati al prefisso specificato abbiano lo stesso formato (DYNAMODB_JSON, DYNAMODB_ION, CSV)

    • Assicurarsi che tutti gli oggetti Amazon S3 corrispondenti associati al prefisso specificato siano compressi allo stesso modo (GZIP, ZSTD, NONE)

      Nota

      Non è necessario che gli oggetti Amazon S3 abbiano l'estensione corrispondente (.csv/.json/.ion/.gz/.zstd ecc.) poiché il formato di input specificato nella chiamata ha la precedenza. ImportTable

  2. Verificare che i dati di importazione siano conformi allo schema di tabella desiderato

    • Assicurarsi che ogni elemento nei dati di origine includa la chiave primaria. Per le importazioni una chiave di ordinamento è facoltativa.

    • Accertarsi che il tipo di attributo associato alla chiave primaria e a qualsiasi chiave di ordinamento corrisponda al tipo di attributo nello schema di tabella e nello schema GSI, come specificato nei parametri di creazione della tabella

Risoluzione dei problemi

CloudWatch registri

Per i processi di importazione che non riescono, nei CloudWatch registri vengono pubblicati messaggi di errore dettagliati. Per accedere a questi log, recuperateli prima ImportArn dall'output e describe-import usando questo comando:

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

Output di esempio:

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." } }

Recupera il gruppo di log e l'ID di importazione dalla risposta precedente e utilizza questi valori per recuperare i registri degli errori. L'ID di importazione è l'ultimo elemento del percorso del campo ImportArn. Il nome del gruppo di log è /aws-dynamodb/imports. Il nome del flusso di log degli errori è import-id/error. Per questo esempio, sarebbe 01658528578619-c4d4e311/error.

Chiave pk mancante nell'elemento

Se l'oggetto S3 di origine non contiene la chiave primaria specificata come parametro, l'importazione avrà esito negativo, ad esempio quando si definisce la chiave primaria per l'importazione come nome di colonna "pk".

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"}'

La colonna "pk" non è presente nell'oggetto di origine import-test.csv che include i seguenti contenuti:

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

Questa importazione non avrà esito negativo a causa di un errore di convalida dell'elemento perché manca la chiave primaria nell'origine dei dati.

CloudWatch Esempio di registro degli errori:

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" }

Questo registro degli errori riporta che uno o più valori di parametro non sono validi e che manca la chiave "pk" nell'elemento. Poiché questo processo di importazione non è riuscito, la tabella "target-table" ora esiste ed è vuota perché non sono stati importati elementi. Il primo elemento è stato elaborato e l'oggetto non ha superato la convalida dell'elemento.

Per risolvere il problema, elimina innanzitutto la tabella "target-table" se non è più necessaria. Usa quindi un nome di colonna chiave primaria esistente nell'oggetto di origine oppure aggiorna i dati di origine nel modo seguente:

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

Tabella di destinazione esistente

Se si avvia un processo di importazione e si riceve una risposta come segue:

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

Per correggere questo errore, è necessario scegliere un nome di tabella che non esiste già e provare a rieseguire l'importazione.

Il bucket specificato non esiste.

Se il bucket di origine non esiste, l'importazione avrà esito negativo e registrerà i dettagli del messaggio di errore. CloudWatch

Esempio di descrizione dell'importazione:

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)" } }

FailureCode è S3NoSuchBucket, con FailureMessag contenente dettagli come l'ID della richiesta e il servizio che ha generato l'errore. Poiché l'errore è stato rilevato prima dell'importazione dei dati nella tabella, non viene creata una nuova tabella DynamoDB. In alcuni casi, quando si verificano questi errori dopo l'avvio dell'importazione dei dati, la tabella con i dati parzialmente importati viene conservata.

Per correggere questo errore, assicurati che il bucket Amazon S3 di origine esista e quindi riavvia il processo di importazione.