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à.
Risoluzione dei problemi relativi alle operazioni Batch di S3
Amazon S3 Batch Operations consente di eseguire operazioni su larga scala su oggetti Amazon S3. Questa guida ti aiuta a risolvere i problemi più comuni che potresti riscontrare.
Per risolvere i problemi con S3 Batch Replication, consulta Risoluzione dei problemi nella replica.
Esistono due tipi principali di errori che provocano errori nelle operazioni Batch:
-
Errore dell'API: l'API richiesta (ad esempio
CreateJob) non è stata eseguita. -
Job Failure: la richiesta API iniziale è riuscita ma il processo non è riuscito, ad esempio, a causa di problemi con il manifesto o le autorizzazioni per gli oggetti specificati nel manifest.
NoSuchJobException
Tipo: errore dell'API
NoSuchJobExceptionSi verifica quando S3 Batch Operations non è in grado di individuare il lavoro specificato. Questo errore può verificarsi in diversi scenari oltre la semplice scadenza del lavoro. Le cause più comuni sono le seguenti.
Scadenza del lavoro: i lavori vengono eliminati automaticamente 90 giorni dopo aver raggiunto lo stato terminale (
CompleteCancelled,, oFailed).ID del lavoro errato: l'ID del lavoro utilizzato
DescribeJoboUpdateJobStatusnon corrisponde all'ID restituito daCreateJob.Regione errata: tentativo di accedere a un lavoro in un'area diversa da quella in cui è stato creato.
Account errato: utilizzo di un Job ID di un AWS account diverso.
Errori di formato del Job ID: errori di battitura, caratteri aggiuntivi o formattazione errata nell'ID del lavoro.
Problemi relativi alla tempistica: verifica dello stato del lavoro subito dopo la creazione, prima che il lavoro sia completamente registrato.
I messaggi di errore correlati includono quanto segue.
No such jobThe specified job does not exist
Le migliori pratiche per prevenire i guasti NoSuchJobException delle API
Memorizza IDs immediatamente il lavoro: salva l'ID del lavoro dalla
CreateJobrisposta prima di effettuare chiamate API successive.Implementa la logica dei tentativi: aggiungi un backoff esponenziale quando controlli lo stato del lavoro subito dopo la creazione.
Configura il monitoraggio: crea CloudWatch allarmi per monitorare il completamento del lavoro prima della scadenza dei 90 giorni. Per i dettagli, consulta la sezione Uso degli CloudWatch allarmi nella Amazon CloudWatch User Guide.
Utilizza regioni coerenti: assicurati che tutte le attività di lavoro utilizzino la stessa regione per la creazione di posti di lavoro.
Convalida l'input: controlla il formato dell'ID del lavoro prima di effettuare chiamate API.
Quando scadono i lavori
I lavori negli stati terminali vengono eliminati automaticamente dopo 90 giorni. Per evitare di perdere informazioni sul lavoro, considera quanto segue.
Scarica i report di completamento prima della scadenza: per istruzioni su come recuperare e archiviare i risultati dei lavori, consulta.
Archivia i metadati dei lavori nei tuoi sistemi: archivia le informazioni critiche sul lavoro nei database o nei sistemi di monitoraggio.
Imposta notifiche automatiche prima della scadenza di 90 giorni: utilizza Amazon EventBridge per creare regole che attivano le notifiche al completamento dei lavori. Per ulteriori informazioni, consulta Notifiche di eventi Amazon S3.
Risoluzione dei problemi di NoSuchJobException
Utilizza il comando seguente per verificare l'esistenza del lavoro nel tuo account e nella tua regione.
aws s3control list-jobs --account-id111122223333--regionus-east-1Usa il seguente comando per cercare in tutti gli stati delle offerte di lavoro. I possibili stati di lavoro includono
Active,Cancelled,,Cancelling,Complete,Completing,Failed,Failing,,NewPausedPausing,Preparinge.ReadySuspendedaws s3control list-jobs --account-id111122223333--job-statusesyour-job-statusUtilizzate il comando seguente per verificare se il lavoro esiste in altre regioni in cui di solito create lavori.
aws s3control list-jobs --account-id111122223333--regionjob-region-1aws s3control list-jobs --account-id111122223333--regionjob-region-2-
Convalida il formato dell'ID del lavoro. Job IDs in genere contiene 36 caratteri, ad esempio
12345678-1234-1234-1234-123456789012. Verifica la presenza di spazi aggiuntivi, caratteri mancanti o problemi di distinzione tra maiuscole e minuscole e verifica di utilizzare l'ID del lavoro completo restituito dalCreateJobcomando. -
Usa il comando seguente per controllare i CloudTrail log per verificare gli eventi di creazione di posti di lavoro.
aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob }" \ --start-timetimestamp
AccessDeniedException
Tipo: errore dell'API
AccessDeniedExceptionSi verifica quando una richiesta di S3 Batch Operations viene bloccata a causa di autorizzazioni insufficienti, operazioni non supportate o restrizioni delle policy. Questo è uno degli errori più comuni nelle Operazioni Batch. Ha le seguenti cause comuni:
Autorizzazioni IAM mancanti: l'identità IAM non dispone delle autorizzazioni necessarie per le operazioni Batch. APIs
Autorizzazioni S3 insufficienti: autorizzazioni mancanti per accedere a bucket e oggetti di origine o destinazione.
Problemi relativi al ruolo di esecuzione del lavoro: il ruolo di esecuzione del lavoro non dispone delle autorizzazioni per eseguire l'operazione specificata.
Operazioni non supportate: tentativo di utilizzare operazioni non supportate nella regione o nel tipo di bucket correnti.
Problemi di accesso tra account: autorizzazioni mancanti per l'accesso a bucket o oggetti tra account diversi.
Restrizioni delle policy basate sulle risorse: policy Bucket o oggetti che bloccano l'operazione. ACLs
Restrizioni della Service Control Policy (SCP): politiche a livello di organizzazione che ne impediscono l'operazione.
Messaggi di errore correlati:
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
Le migliori pratiche per prevenire i guasti AccessDeniedException delle API
Utilizza il principio del privilegio minimo: concedi solo le autorizzazioni minime richieste per le tue operazioni specifiche.
Verifica le autorizzazioni prima di eseguire lavori di grandi dimensioni: esegui piccoli processi di test per convalidare le autorizzazioni prima di elaborare migliaia di oggetti.
Usa il simulatore di policy IAM: testa le policy prima della distribuzione utilizzando il simulatore di policy IAM. Per ulteriori informazioni, consulta IAM Policy testing with the IAM Policy Simulator nella IAM User Guide.
Implementa una corretta configurazione tra account: controlla la configurazione di accesso tra account per le configurazioni di lavoro tra account diversi. Per ulteriori informazioni, consulta il tutorial IAM: Delega l'accesso tra AWS account utilizzando i ruoli IAM nella IAM User Guide.
Monitora le modifiche alle autorizzazioni: imposta CloudTrail avvisi per le modifiche alle policy IAM che potrebbero influire sulle operazioni Batch.
Documenta i requisiti dei ruoli: mantieni una documentazione chiara delle autorizzazioni richieste per ogni tipo di lavoro.
Utilizza modelli di autorizzazione comuni: utilizza gli esempi di autorizzazione e i modelli di policy:
AccessDeniedException risoluzione dei problemi
Segui sistematicamente questi passaggi per identificare e risolvere i problemi di autorizzazione.
Verifica le operazioni supportate Operazioni supportate dalle operazioni in batch S3 per regione. Le operazioni di conferma del directory bucket sono disponibili solo negli endpoint regionali e zonali. Verifica che l'operazione sia supportata per la classe di archiviazione del tuo bucket.
Usa il comando seguente per determinare se puoi elencare i lavori.
aws s3control list-jobs --account-id111122223333Usa il comando seguente per verificare le autorizzazioni IAM per l'identità richiedente. L'account che esegue il job richiede le seguenti autorizzazioni:
s3:CreateJob,,,s3:DescribeJob.s3:ListJobs-s3:UpdateJobPrioritys3:UpdateJobStatus-iam:PassRoleaws sts get-caller-identity111122223333Utilizzate il comando seguente per verificare se il ruolo esiste ed è ipotizzabile.
aws iam get-role --role-namerole-name-
Utilizzate il comando seguente per rivedere la politica di fiducia del ruolo. Il ruolo che esegue il job deve avere le seguenti caratteristiche:
Un rapporto di fiducia che
batchoperations---s3.amazonaws.com.rproxy.govskope.caconsenta di assumere il ruolo.Le operazioni eseguite dall'operazione batch (ad esempio
s3:PutObjectTaggingper le operazioni di etichettatura).Accesso ai bucket di origine e destinazione.
Autorizzazione a leggere il file manifesto.
Autorizzazione a scrivere rapporti di completamento.
aws iam get-role --role-namerole-name--query 'Role.AssumeRolePolicyDocument' Utilizzate il comando seguente per ripristinare l'accesso ai bucket manifest e source.
aws s3 ls s3://bucket-name-
Verificate l'operazione eseguita dall'operazione batch. Ad esempio, se l'operazione batch esegue l'etichettatura, tagga un oggetto campione nel bucket di origine.
Esamina le politiche dei bucket per individuare le politiche che potrebbero negare l'operazione.
Controlla l'oggetto ACLs se lavori con i controlli di accesso precedenti.
Verifica che nessuna policy di controllo del servizio (SCPs) stia bloccando l'operazione.
Le policy degli endpoint VPC di Conferma consentono le operazioni in Batch se si utilizzano endpoint VPC.
Utilizza il seguente comando da utilizzare per identificare gli errori CloudTrail di autorizzazione.
aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.errorCode = AccessDenied }" \ --start-timetimestamp
SlowDownError
Tipo: errore dell'API
L'SlowDownErroreccezione si verifica quando il tuo account ha superato il limite di frequenza delle richieste per S3 Batch Operations. APIs Si tratta di un meccanismo di limitazione per proteggere il servizio dal sovraccarico di troppe richieste. Ha le seguenti cause comuni:
Elevata frequenza di richiesta API: troppe chiamate API in un breve periodo di tempo.
Operazioni lavorative simultanee: attività di più applicazioni o utenti creating/managing contemporaneamente.
Script automatizzati senza limiti di velocità: script che non implementano strategie di backoff adeguate.
Sondaggi troppo frequenti sullo stato del lavoro: verifica lo stato del lavoro più spesso del necessario.
Schemi di traffico accelerati: picchi improvvisi nell'utilizzo delle API durante i periodi di elaborazione di punta.
Limiti di capacità regionali: superamento della capacità di richiesta allocata per la propria regione.
Messaggi di errore correlati:
SlowDownPlease reduce your request rateRequest rate exceeded
Le migliori pratiche per prevenire i guasti SlowDownError delle API
Implementa la limitazione della velocità sul lato client: aggiungi ritardi tra le chiamate API nelle tue applicazioni.
Utilizza il backoff esponenziale con jitter: rendi casuali i ritardi tra i tentativi per evitare problemi di gregge.
Imposta una logica di riprova adeguata: implementa nuovi tentativi automatici con ritardi crescenti per errori transitori.
Utilizza architetture basate sugli eventi: sostituisci i sondaggi con notifiche per le modifiche allo stato dei lavori. EventBridge
Distribuisci il carico nel tempo: organizza la creazione di posti di lavoro e i controlli dello stato in diversi periodi di tempo.
Monitora e avvisa sui limiti di velocità: configura CloudWatch allarmi per rilevare quando ti stai avvicinando ai limiti.
La maggior parte AWS SDKs include una logica di ripetizione dei tentativi integrata per gli errori di limitazione della velocità. Configurali come segue:
AWS CLI— Uso
cli-read-timeoutecli-connect-timeoutparametri.AWS SDK for Python (Boto3): configura le modalità di riprova e il numero massimo di tentativi nella configurazione del client.
AWS SDK for Java:
RetryPolicyutilizzoClientConfiguratione impostazioni.AWS SDK per JavaScript: configura
maxRetriese.retryDelayOptions
Per ulteriori informazioni sui modelli di ripetizione dei tentativi e sulle migliori pratiche, consulta Riprova con schema di backup nella guida Prescriptive Guidance. AWS
SlowDownError risoluzione dei problemi
Nel tuo codice, implementa immediatamente il backoff esponenziale.
Esempio del backoff esponenziale 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-
Utilizzato CloudTrail per identificare la fonte dell'elevato volume di richieste.
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]' Controlla la frequenza dei sondaggi.
Evita di controllare lo stato dei lavori più di una volta ogni 30 secondi per i lavori attivi.
Se possibile, utilizza le notifiche di completamento dei lavori anziché i sondaggi.
Implementa il jitter negli intervalli di polling per evitare richieste sincronizzate.
-
Ottimizza i modelli di utilizzo delle API.
Batch più operazioni quando possibile.
Utilizzalo
ListJobsper visualizzare lo stato di più lavori in una sola chiamata.Memorizza nella cache le informazioni sui lavori per ridurre le chiamate API ridondanti.
Diffondi la creazione di posti di lavoro nel tempo anziché crearne molti contemporaneamente.
-
Utilizza le CloudWatch metriche per le chiamate API per monitorare i modelli di richiesta.
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
Tipo: Job failure
L'InvalidManifestContenteccezione si verifica quando ci sono problemi con il formato, il contenuto o la struttura del file manifesto che impediscono a S3 Batch Operations di elaborare il lavoro. Ha le seguenti cause comuni:
Violazioni del formato: colonne obbligatorie mancanti, delimitatori errati o struttura CSV non valida.
Problemi di codifica del contenuto: codifica errata dei caratteri, marcatori BOM o caratteri non UTF-8.
Problemi con le chiavi dell'oggetto: caratteri non validi, codifica URL non corretta o chiavi che superano i limiti di lunghezza.
Limiti relativi alle dimensioni: il manifesto contiene più oggetti di quelli supportati dall'operazione.
Errori di formato dell'ID di versione: versione non valida o non valida IDs per gli oggetti con versione.
ETag problemi di formato: ETag formato errato o virgolette mancanti per le operazioni che richiedono. ETags
Dati non coerenti: formati misti all'interno dello stesso manifesto o conteggi di colonne non coerenti.
Messaggi di errore correlati:
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
Le migliori pratiche per prevenire gli insuccessi InvalidManifestContent sul lavoro
Convalida prima del caricamento: verifica il formato del manifesto con piccoli lavori prima di elaborare set di dati di grandi dimensioni.
Usa una codifica coerente: utilizza sempre la codifica UTF-8 senza BOM per i file manifest.
Implementa gli standard di generazione dei manifesti: crea modelli e procedure di convalida per la creazione di manifesti.
Gestisci correttamente i caratteri speciali: gli URL codificano le chiavi degli oggetti che contengono caratteri speciali.
Monitora il numero di oggetti: monitora le dimensioni del manifesto e suddividi i lavori di grandi dimensioni in modo proattivo.
Convalida l'esistenza degli oggetti: verifica l'esistenza degli oggetti prima di includerli nei manifesti.
Utilizzate AWS strumenti per la generazione di manifesti: sfruttateli AWS CLI
s3api list-objects-v2per generare elenchi di oggetti formattati correttamente.
Problemi e soluzioni comuni relativi ai manifesti:
Colonne obbligatorie mancanti: assicurati che il manifesto includa tutte le colonne obbligatorie per il tipo di operazione. Le colonne mancanti più comuni sono Bucket e Key.
Formato CSV errato: utilizza delimitatori di virgole, assicura un conteggio uniforme delle colonne su tutte le righe ed evita interruzioni di riga incorporate nei campi.
Caratteri speciali nelle chiavi degli oggetti: gli URL codificano le chiavi degli oggetti che contengono spazi, caratteri Unicode o caratteri speciali XML (<, >, &, «, ').
File manifest di grandi dimensioni: suddividi i manifesti con più del limite di operazioni in più manifesti più piccoli e crea processi separati.
Versione non valida IDs: assicurati che la versione contenga stringhe alfanumeriche IDs formattate correttamente. Rimuovi la colonna dell'ID della versione se non necessaria.
Problemi di codifica: salva i file manifest come UTF-8 senza BOM. Evita di copiare i manifesti attraverso sistemi che potrebbero alterare la codifica.
Per le specifiche dettagliate e gli esempi relativi al formato del manifesto, consultate quanto segue:
InvalidManifestContent risoluzione dei problemi
scarica e ispeziona il file manifesto. Verifica manualmente che il manifesto soddisfi i requisiti di formato:
Formato CSV con delimitatori di virgole.
Codifica UTF-8 senza BOM.
Numero costante di colonne su tutte le righe.
Nessuna riga vuota o spazio finale.
Le chiavi degli oggetti sono codificate correttamente nell'URL se contengono caratteri speciali.
Utilizzate il seguente comando per scaricare il file manifest.
aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key./manifest.csv-
Controllate le colonne richieste per la vostra operazione:
Tutte le operazioni:
Bucket,KeyOperazioni di copia:
VersionId(opzionale)Operazioni di ripristino:
VersionId(opzionale)Operazioni di sostituzione dei tag: non sono necessarie colonne aggiuntive.
Operazioni di sostituzione dell'ACL: non sono necessarie colonne aggiuntive.
Avvia ripristino:
VersionId(opzionale)
-
Controlla i limiti del numero di oggetti:
Copia: massimo 1 miliardo di oggetti.
Elimina: massimo 1 miliardo di oggetti.
Ripristino: massimo 1 miliardo di oggetti.
Etichettatura: massimo 1 miliardo di oggetti.
ACL: massimo 1 miliardo di oggetti.
-
Crea un manifesto di prova con alcuni oggetti del tuo manifesto originale.
-
Utilizzate il seguente comando per verificare se esiste un campione di oggetti del manifesto.
aws s3 ls s3://amzn-s3-demo-bucket1/object-key -
Controllate i dettagli del fallimento del lavoro e verificate il motivo dell'errore ed eventuali dettagli specifici dell'errore nella descrizione del lavoro.
aws s3control describe-job --account-id111122223333--job-idjob-id