Salta al contenuto

Come posso risolvere gli errori "SignatureDoesNotMatch" o "403 Forbidden" relativi a richieste con URL prefirmati Amazon S3?

3 minuti di lettura
0

Ho utilizzato un URL prefirmato Amazon Simple Storage Service (Amazon S3) per effettuare richieste al mio bucket Amazon S3 e ho ricevuto un messaggio di errore "SignatureDoesNotMatch" o "403 Forbidden".

Breve descrizione

Quando generi un URL prefirmato, il client calcola una firma univoca per autenticare la richiesta. Dopodiché, Amazon S3 calcola una firma in base ai parametri inviati dal client nella richiesta HTTP e confronta le due firme. Se le firme non corrispondono, viene visualizzato l'errore "SignatureDoesNotMatch".

Risoluzione

Per risolvere il problema, controlla le seguenti impostazioni di configurazione per la tua richiesta con URL prefirmato Amazon S3.

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Convalida il metodo HTTP

Quando generi un URL prefirmato, assegni un'azione HTTP all'URL. Assicurati che l'azione inviata dal client nella richiesta HTTP corrisponda all'azione HTTP nell'URL. Ad esempio, se assegni l'azione GET all'URL, anche l'azione HTTP nella richiesta deve essere GET.

Controlla la chiave di accesso segreta

Verifica se la chiave di accesso segreta utilizzata per generare l'URL prefirmato è nello stato Non corretta, Non valida o Disattivata. La chiave di accesso segreta entra in uno di questi stati quando si aggiungono alla chiave caratteri non corrispondenti o una spaziatura errata. Accertati di utilizzare la chiave di accesso corretta per rigenerare l'URL prefirmato.

Verifica il nome del bucket e il nome della chiave nell'URL

Verifica che il nome del bucket e il nome dell'oggetto siano corretti e corrispondano a quelli presenti nella generazione della firma dell'URL. Anche la maiuscola del nome deve corrispondere.

Verifica le intestazioni utilizzate nella richiesta HTTP

Assicurati che le intestazioni HTTP utilizzate per generare la firma corrispondano alle intestazioni che il client invia a S3 nella richiesta HTTP.

Inoltre, assicurati che il valore dell'intestazione corrisponda al valore generato durante il calcolo della firma.

Verifica che la Regione AWS sia corretta

Prima di inviare l'URL prefirmato S3, verifica che la Regione AWS in cui hai generato l'URL corrisponda alla Regione in cui esiste attualmente il bucket.

Esegui la richiesta API GetBucketLocation per controllare la Regione di un bucket S3. Puoi anche eseguire il comando AWS CLI get-bucket-location:

$ aws s3api get-bucket-location --bucket example-bucket

Esempio di output:

{      
"LocationConstraint": "us-west-2"  
}

Verifica il periodo di validità rispetto alla data del sistema

Se imposti la data del sistema su una data futura successiva al periodo di validità della firma digitale, la firma appare scaduta e non è valida. Se imposti la data del sistema su una data precedente al periodo di validità della firma, la firma non è valida e ha esito negativo.

Informazioni correlate

List of error codes (Elenco dei codici di errore)

Perché l'URL prefirmato per il mio bucket Amazon S3 è scaduto prima della scadenza che ho specificato?

Scarica e carica oggetti con URL prefirmati

Quando provo ad accedere a un oggetto S3, ricevo l'errore di richiesta scaduta "Request has expired". Perché?

AWS UFFICIALEAggiornata 10 mesi fa