Instradamento della richiesta - Amazon Simple Storage Service

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à.

Instradamento della richiesta

I programmi che inviano richieste ai bucket creati utilizzando l'API CreateBucket che includono una CreateBucketConfiguration devono supportare i reindirizzamenti. Inoltre, è possibile che si verifichino problemi con alcuni client che non rispettano i valori TTL DNS.

Questa sezione descrive l'instradamento e i problemi del server DNS da tenere in considerazione durante la progettazione del servizio o dell'applicazione da utilizzare con Amazon S3.

Reindirizzamento delle richieste e API REST

Amazon S3 utilizza Domain Name System (DNS) per instradare le richieste a strutture che possano elaborarle. Il sistema funziona in modo efficace, ma potrebbero verificarsi errori di instradamento temporaneo. Se una richiesta arriva nella posizione Amazon S3 sbagliata, Amazon S3 risponde con un reindirizzamento temporaneo che indica al richiedente di rinviare la richiesta a un altro endpoint. Se la richiesta è formulata in modo errato, Amazon S3 utilizza i reindirizzamenti permanenti per fornire indicazioni su come eseguire la richiesta correttamente.

Importante

Per utilizzare questa funzionalità, è necessario essere in possesso di un'applicazione che possa gestire le risposte di reindirizzamento di Amazon S3. L'unica eccezione riguarda i le applicazioni che operano esclusivamente con bucket creati senza <CreateBucketConfiguration>. Per ulteriori informazioni sui vincoli di posizione, consulta Accesso ed elenco di un bucket Amazon S3.

Per tutte le regioni lanciate dopo il 20 marzo 2019, se una richiesta arriva alla posizione Amazon S3 errata, Amazon S3 restituisce un errore HTTP 400 - Richiesta non valida.

Per ulteriori informazioni sull'abilitazione o la disabilitazione di una Regione AWS, consultare la sezione relativa a regioni ed endpoint Regioni AWS nella Riferimenti generali di AWS.

Instradamento DNS

L'instradamento DNS indirizza le richieste alle strutture Amazon S3 appropriate. La figura e la procedura seguenti illustrano un esempio di instradamento DNS.


				Diagramma che mostra i passaggi che si verificano quando i server DNS instradano richieste dal client alla struttura B.
Passaggi della richiesta di instradamento DNS
  1. Il client effettua una richiesta DNS per l'archiviazione di un oggetto su Amazon S3.

  2. Il client riceve uno o più indirizzi IP per le strutture che possono elaborare la richiesta. In questo esempio, l'indirizzo IP è per la struttura B.

  3. Il client effettua una richiesta alla struttura B di Amazon S3.

  4. La struttura B restituisce una copia dell'oggetto al client.

Reindirizzamento temporaneo delle richieste

Il reindirizzamento temporaneo è un tipo di risposta di errore che segnala al richiedente la necessità di rinviare la richiesta a un altro endpoint. Data la natura distribuita di Amazon S3, le richieste possono essere temporaneamente instradate alla struttura sbagliata. Questo si verifica con maggiore probabilità immediatamente dopo la creazione o l'eliminazione dei bucket.

Ad esempio, se si crea un nuovo bucket e si effettua immediatamente una richiesta al bucket, si potrebbe ricevere un reindirizzamento temporaneo, a seconda del vincolo di posizione del bucket. Se il bucket è stato creato nella Regione AWS Stati Uniti orientali (Virginia settentrionale), il reindirizzamento non si verifica poiché si tratta anche dell'endpoint Amazon S3 predefinito.

Tuttavia, se il bucket viene creato in qualsiasi altra regione, tutte le richiesta al bucket arrivano all'endpoint predefinito durante la propagazione della voce DNS del bucket. L'endpoint predefinito reindirizza la richiesta all'endpoint corretto con una risposta HTTP 302. I reindirizzamenti temporanei contengono un URI per la struttura corretta, che può essere utilizzato per rinviare immediatamente la richiesta.

Importante

Non riutilizzare un endpoint fornito da una risposta di reindirizzamento precedente. Potrebbe sembrare funzionante (anche per lunghi periodi di tempo), ma potrebbe generare risultati imprevedibili e infine dare esito negativo senza preavviso.

La figura e la procedura seguenti illustrano un esempio di reindirizzamento temporaneo.


				Diagramma che mostra i passaggi che si verificano quando un client invia una richiesta a B e viene reindirizzato a C.
Passaggi di reindirizzamento temporaneo delle richieste
  1. Il client effettua una richiesta DNS per l'archiviazione di un oggetto su Amazon S3.

  2. Il client riceve uno o più indirizzi IP per le strutture che possono elaborare la richiesta.

  3. Il client effettua una richiesta alla struttura B di Amazon S3.

  4. La struttura B restituisce un reindirizzamento che indica che l'oggetto è disponibile dalla posizione C.

  5. Il client rinvia la richiesta alla struttura C.

  6. La struttura C restituisce una copia dell'oggetto.

Reindirizzamento permanente delle richieste

Un reindirizzamento permanente indica che la richiesta è stata rivolta a una risorsa in modo non appropriato. Ad esempio, i reindirizzamenti permanenti si verificano in caso di utilizzo di una richiesta in stile percorso per accedere a un bucket creato utilizzando <CreateBucketConfiguration>. Per ulteriori informazioni, consulta Accesso ed elenco di un bucket Amazon S3.

Per agevolare l'individuazione di questi errori durante lo sviluppo, questo tipo di reindirizzamento non contiene un'intestazione HTTP di posizione che permette di seguire automaticamente la richiesta verso la posizione corretta. Consulta il documento di errore XML risultante come supporto per utilizzare l'endpoint Amazon S3 corretto.

Esempi di reindirizzamento delle richieste

I seguenti sono esempi di risposte di reindirizzamento temporaneo delle richieste.

Risposta di reindirizzamento temporaneo API REST

HTTP/1.1 307 Temporary Redirect Location: http://awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com/photos/puppy.jpg?rk=e2c69a31 Content-Type: application/xml Transfer-Encoding: chunked Date: Fri, 12 Oct 2007 01:12:56 GMT Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>TemporaryRedirect</Code> <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message> <Endpoint>awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com</Endpoint> </Error>

Risposta di reindirizzamento temporaneo API SOAP

Nota

Il supporto di SOAP su HTTP non viene più utilizzato ma è ancora disponibile su HTTPS. Le nuove funzioni di Amazon S3 non sono supportate per SOAP. Invece di utilizzare SOAP, si consiglia di utilizzare REST API o gli SDK AWS.

<soapenv:Body> <soapenv:Fault> <Faultcode>soapenv:Client.TemporaryRedirect</Faultcode> <Faultstring>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Faultstring> <Detail> <Bucket>images</Bucket> <Endpoint>s3-gztb4pa9sq.amazonaws.com</Endpoint> </Detail> </soapenv:Fault> </soapenv:Body>

Considerazioni sul sistema DNS

Uno dei requisiti di progettazione di Amazon S3 è una disponibilità estremamente alta. Per rispondere a questo requisito, è possibile aggiornare gli indirizzi IP associati all'endpoint Amazon S3 in DNS, in base alle necessità. Queste modifiche si riflettono automaticamente sui client di breve durata ma non su alcuni client di lunga durata. Per trarre beneficio dalle modifiche apportate, i client di lunga durata dovranno intervenire sull'endpoint Amazon S3 periodicamente. Per ulteriori informazioni sulle macchine virtuali (VM), consultare:

  • Per Java, JVM Sun memorizza nella cache le ricerche DNS in modo permanente per impostazione predefinita. Per informazioni su come modificare questo comportamento, consulta la sezione relativa al caching InetAddress della documentazione di InetAddress.

  • Per PHP, la VM PHP persistente che esegue le configurazioni di distribuzione più diffuse memorizza nella cache le ricerche DNS fino al riavvio della VM. Consulta la documentazione di PHP relativa a getHostByName.