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 a Operazioni in batch S3
Operazioni in batch Amazon S3 consente di eseguire operazioni in batch 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.
Sono disponibili due tipi principali di errori relativi a Operazioni in batch:
-
Errore dell’API: l’API richiesta (ad esempio
CreateJob) non è stata eseguita. -
Errore del processo: la richiesta API iniziale è stata completata ma il processo non è riuscito, ad esempio, a causa di problemi con il manifesto o le autorizzazioni agli oggetti specificati nel manifesto.
NoSuchJobException
Tipo: errore dell’API
NoSuchJobException si verifica quando Operazioni in batch S3 non riesce a individuare il processo specificato. Questo errore può verificarsi in diversi scenari oltre la semplice scadenza del processo. Le cause più comuni sono descritte di seguito.
Scadenza del processo: i processi vengono eliminati automaticamente 90 giorni dopo aver raggiunto lo stato terminale (
Complete,CancelledoFailed).ID del processo errato: l’ID del processo utilizzato in
DescribeJoboUpdateJobStatusnon corrisponde all’ID restituito daCreateJob.Regione errata: tentativo di accedere a un processo in una Regione diversa da quella in cui è stato creato.
Account errato: utilizzo di un ID di lavoro di un account diverso. AWS
Errori di formato dell’ID del processo: errori di battitura, caratteri aggiuntivi o formattazione errata nell’ID del processo.
Problemi relativi alla tempistica: verifica dello stato del processo subito dopo la creazione, prima che il processo sia completamente registrato.
I messaggi di errore correlati sono descritti di seguito.
No such jobThe specified job does not exist
Best practice per prevenire errori delle API NoSuchJobException
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 processo 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 operazioni del processo utilizzino la stessa Regione per la creazione del processo.
Convalida l’input: controlla il formato dell’ID del processo prima di effettuare chiamate API.
Scadenza dei processi
I processi nello stato terminale vengono eliminati automaticamente dopo 90 giorni. Per evitare di perdere informazioni del processo, considera quanto segue.
Scarica i report di completamento prima della scadenza: per istruzioni su come recuperare e archiviare i risultati del processo, consulta .
Archivia i metadati del processo nei tuoi sistemi: archivia le informazioni critiche del processo 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 che il processo sia presente nell’account e nella 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 del processo sono
Active,Cancelled,Cancelling,Complete,Completing,Failed,Failing,New,Paused,Pausing,Preparing,ReadyeSuspended.aws s3control list-jobs --account-id111122223333--job-statusesyour-job-statusUtilizza il comando seguente per verificare se il processo è presente in altre Regioni in cui di solito si creano processi.
aws s3control list-jobs --account-id111122223333--regionjob-region-1aws s3control list-jobs --account-id111122223333--regionjob-region-2-
Convalida il formato dell’ID del processo. 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 processo completo restituito dal comandoCreateJob. -
Utilizzate il seguente comando per controllare CloudTrail i log degli 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
AccessDeniedException si verifica quando una richiesta di Operazioni in batch S3 viene bloccata a causa di autorizzazioni insufficienti, operazioni non supportate o restrizioni delle policy. Questo è uno degli errori più comuni in Operazioni in batch. Le cause comuni sono le seguenti:
Autorizzazioni IAM mancanti: l'identità IAM non dispone delle autorizzazioni necessarie per le operazioni Batch. APIs
Autorizzazioni S3 insufficienti: autorizzazioni mancanti per accedere ai bucket di origine o destinazione e agli oggetti.
Problemi relativi al ruolo di esecuzione del processo: il ruolo di esecuzione del processo 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 multi-account: autorizzazioni mancanti per l’accesso multi-account a bucket o oggetti.
Restrizioni delle policy basate sulle risorse: policy Bucket o oggetti che bloccano l'operazione. ACLs
Restrizioni delle policy di controllo dei servizi: policy a livello di organizzazione 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 delle API AccessDeniedException
Utilizza il principio del privilegio minimo: concedi solo le autorizzazioni minime richieste per le operazioni specifiche.
Verifica le autorizzazioni prima di eseguire processi di grandi dimensioni: esegui piccoli processi di test per convalidare le autorizzazioni prima di elaborare migliaia di oggetti.
Utilizza il simulatore di policy IAM: testa le policy prima dell’implementazione utilizzando il simulatore di policy IAM. Per ulteriori informazioni, consulta Test delle policy IAM con il simulatore di policy IAM nella Guida per l’utente IAM.
Implementa una corretta configurazione multi-account: controlla la configurazione dell’accesso multi-account per le configurazioni dei processi multi-account. 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 processo.
Usa modelli di autorizzazione comuni: utilizza gli esempi di autorizzazione e i modelli di policy:
Risorse multi-account in IAM nella Guida per l’utente IAM.
Controlla l'accesso agli endpoint VPC utilizzando le policy degli endpoint nella Guida. AWS PrivateLink
AccessDeniedException risoluzione dei problemi
Segui sistematicamente queste fasi per identificare e risolvere i problemi di autorizzazione.
Consulta Operazioni supportate dalle operazioni in batch S3 per le operazioni supportate per Regione. Verifica che le operazioni del bucket di directory siano disponibili solo negli endpoint regionali e zonali. Verifica che l’operazione sia supportata per la classe di archiviazione del bucket.
Utilizza il seguente comando per determinare se puoi elencare i processi.
aws s3control list-jobs --account-id111122223333Utilizza il comando seguente per verificare le autorizzazioni IAM per l’identità richiedente. L'account che esegue il processo richiede le seguenti autorizzazioni:
s3:CreateJob,s3:DescribeJob,s3:ListJobs,s3:UpdateJobPrioritys3:UpdateJobStatus, eiam:PassRole.aws sts get-caller-identity111122223333Utilizza il comando seguente per verificare che il ruolo sia presente e utilizzabile.
aws iam get-role --role-namerole-name-
Utilizza il comando seguente per esaminare la policy di attendibilità del ruolo. Il ruolo che esegue il processo deve disporre di:
Una relazione di attendibilità che consente a
batchoperations.s3.amazonaws.comdi assumere il ruolo.Le operazioni eseguite da Operazioni in batch (ad esempio
s3:PutObjectTaggingper le operazioni di tagging).Accesso ai bucket di origine e di destinazione.
Autorizzazione a leggere il file manifesto.
Autorizzazione a scrivere report di completamento.
aws iam get-role --role-namerole-name--query 'Role.AssumeRolePolicyDocument' Utilizzate il comando seguente per testare l'accesso ai bucket manifest e source.
aws s3 ls s3://amzn-s3-demo-bucket-
Testa l’operazione eseguita da Operazioni in batch. Ad esempio, se Operazioni in batch esegue il tagging, applica un tag a un oggetto di esempio 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.
Verifica che le policy degli endpoint VPC consentano Operazioni in batch se si utilizzano endpoint VPC.
Utilizzate il seguente comando da utilizzare CloudTrail per identificare gli errori 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 Questo è un meccanismo di limitazione (della larghezza di banda della rete) per proteggere il servizio dal sovraccarico dovuto a troppe richieste. Le cause comuni sono le seguenti:
Elevata frequenza di richieste API: troppe chiamate API in un breve periodo di tempo.
Operazioni di lavoro simultanee: lavori simultanei di più applicazioni o utenti creating/managing .
Script automatizzati senza limiti di velocità: script che non implementano strategie di backoff adeguate.
Polling troppo frequenti dello stato del processo: verifica dello stato del processo eseguita più spesso del necessario.
Modelli di traffico aumentato: picchi improvvisi nell’utilizzo delle API durante i periodi di elaborazione di punta.
Limiti di capacità regionale: superamento della capacità di richiesta allocata per la 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 applicazioni.
Utilizza il backoff esponenziale con jitter: applica la randomizzazione dei ritardi dei tentativi per evitare problemi di thundering herd.
Imposta una logica dei tentativi adeguata: implementa tentativi automatici con ritardi crescenti per gli errori transitori.
Utilizza architetture basate sugli eventi: sostituisci i sondaggi con EventBridge notifiche per le modifiche allo stato dei lavori.
Distribuisci il carico nel tempo: organizza la creazione di processi 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: utilizza i parametri
cli-read-timeoutecli-connect-timeout.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 codice, implementa immediatamente il backoff esponenziale.
Esempio di 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-
CloudTrail Utilizzato 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]' Verifica la frequenza di polling.
Evita di controllare lo stato del processo più di una volta ogni 30 secondi per i processi attivi.
Se possibile, utilizza le notifiche di completamento del processo anziché il polling.
Implementa jitter negli intervalli di polling per evitare richieste sincronizzate.
-
Ottimizza i modelli di utilizzo delle API.
Se possibile, esegui più operazioni in batch.
Utilizza
ListJobsper ottenere lo stato di più processi in una sola chiamata.Memorizza nella cache le informazioni sui processi per ridurre le chiamate API ridondanti.
Suddividi la creazione dei processi 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: errore del processo
L’eccezione InvalidManifestContent si verifica quando ci sono problemi con il formato, il contenuto o la struttura del file manifesto che impediscono a Operazioni in batch S3 di elaborare il processo. Le cause comuni sono le seguenti:
Violazioni del formato: colonne obbligatorie mancanti, delimitatori errati o struttura CSV non valida.
Problemi di codifica del contenuto: codifica errata dei caratteri, indicatori 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 incoerenti: formati misti all’interno dello stesso manifesto o numero di colonne non coerente.
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: testa il formato del manifesto con piccoli processi prima di elaborare set di dati di grandi dimensioni.
Utilizza una codifica coerente: utilizza sempre la codifica UTF-8 senza BOM per i file manifesto.
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 la presenza degli oggetti: verifica la presenza degli oggetti prima di includerli nei manifesti.
Usa AWS strumenti per la generazione di manifesti: sfrutta 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 Chiave.
Formato CSV non corretto: utilizza le virgole come delimitatori, assicura un numero di colonne uniforme su tutte le righe ed evita gli embedding delle interruzioni di riga 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 manifesti di grandi dimensioni: suddividi i manifesti con un numero di operazioni superiore al limite in diversi manifesti più piccoli e crea processi separati.
Versione non valida IDs: assicurati che la versione contenga stringhe alfanumeriche IDs formattate correttamente. Rimuovi la colonna ID della versione se non è necessaria.
Problemi di codifica: salva i file manifesto 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, consulta quanto segue:
InvalidManifestContent risoluzione dei problemi
Scarica e controlla il file manifesto. Verifica manualmente che il manifesto soddisfi i requisiti di formato:
Formato CSV con virgola come delimitatore.
Codifica UTF-8 senza BOM.
Numero coerente di colonne per tutte le righe.
Senza righe vuote o spazi finali.
Le chiavi dell’oggetto sono codificate correttamente nell’URL se contengono caratteri speciali.
Utilizza il seguente comando per scaricare il file manifesto.
aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key./manifest.csv-
Controlla le colonne obbligatorie per l’operazione:
Tutte le operazioni:
Bucket,KeyOperazioni di copia:
VersionId(facoltativo)Operazioni di ripristino:
VersionId(facoltativo)Operazioni di sostituzione di tag: non sono necessarie colonne aggiuntive.
Operazioni di sostituzione di ACL: non sono necessarie colonne aggiuntive.
Avvia ripristino:
VersionId(facoltativo)
-
Controlla i limiti del numero di oggetti:
Copia: massimo 1 miliardo di oggetti.
Eliminazione: massimo 1 miliardo di oggetti.
Ripristino: massimo 1 miliardo di oggetti.
Tagging: 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 comando seguente per verificare se esiste un campione di oggetti del manifesto.
aws s3 ls s3://amzn-s3-demo-bucket1/object-key -
Controlla i dettagli dell’errore del processo e verifica il motivo ed eventuali dettagli specifici dell’errore nella descrizione del processo.
aws s3control describe-job --account-id111122223333--job-idjob-id