Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Tutorial: creazione di una REST API come un proxy Amazon S3

Modalità Focus
Tutorial: creazione di una REST API come un proxy Amazon S3 - Amazon API Gateway

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

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

Per illustrare l'uso di un'API REST in API Gateway come proxy Amazon S3, in questa sezione viene descritto come creare e configurare un'API REST per esporre le operazioni Amazon S3 seguenti:

Puoi importare l'API di esempio come proxy Amazon S3, come illustrato in Definizioni OpenAPI dell'API di esempio come un proxy Amazon S3. Questo esempio include più metodi esposti. Per istruzioni su come importare l'API tramite la definizione OpenAPI, consulta Sviluppa REST APIs utilizzando OpenAPI in API Gateway.

Nota

Per integrare l'API di API Gateway con Amazon S3, devi scegliere una regione in cui i servizi API Gateway e Amazon S3 siano entrambi disponibili. Per la disponibilità delle regioni, consulta Endpoint e quote Amazon API Gateway.

Configurazione delle autorizzazioni IAM per consentire all'API di invocare operazioni Amazon S3

Per permettere all'API di richiamare le operazioni Amazon S3, devi aver collegato le policy IAM appropriate a un ruolo IAM. In questo passaggio, crei un nuovo ruolo IAM.

Per creare il ruolo di esecuzione del proxy di AWS servizio
  1. Accedi AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Scegliere Roles (Ruoli).

  3. Scegliere Crea ruolo.

  4. Scegli il AWS servizio in Seleziona il tipo di entità affidabile, quindi seleziona API Gateway e seleziona Consenti a API Gateway di inviare i log ai CloudWatch log.

  5. Scegli Successivo e di nuovo Successivo.

  6. In Role name (Nome ruolo) immettere APIGatewayS3ProxyPolicy e quindi selezionare Create role (Crea ruolo).

  7. Nell'elenco Roles (Ruoli) scegliere il ruolo appena creato. Potrebbe essere necessario scorrere o utilizzare la barra di ricerca per trovare il ruolo.

  8. Per il ruolo selezionato, seleziona la scheda Aggiungi autorizzazioni.

  9. Dall'elenco a discesa scegli Collega policy.

  10. Nella barra di ricerca inserisci AmazonS3FullAccess e scegli Aggiungi autorizzazioni.

    Nota

    Per semplicità, questo tutorial utilizza una policy gestita. Come best practice, dovresti creare la tua policy IAM per concedere le autorizzazioni minime richieste.

  11. Annota l'ARN del ruolo appena creato, lo utilizzerai in seguito.

Creazione di risorse API per rappresentare risorse Amazon S3

Si utilizza la risorsa radice dell'API (/) come container dei bucket Amazon S3 di un chiamante autenticato. Inoltre, si dovranno creare le risorse Folder e Item per rappresentare rispettivamente un bucket Amazon S3 e un oggetto Amazon S3 specifico. Il nome della cartella e la chiave dell'oggetto verranno specificati dall'intermediario nell'ambito di un URL di richiesta nel formato dei parametri di percorso.

Nota

Quando accedi a oggetti la cui chiave include / o qualsiasi altro carattere speciale, il carattere deve avere la codifica URL. Ad esempio, test/test.txt dovrebbe avere la codifica test%2Ftest.txt.

Per creare una risorsa API che espone le caratteristiche del servizio Amazon S3
  1. Nello stesso modo in Regione AWS cui hai creato il tuo bucket Amazon S3, crea un'API denominata MyS3. Questa risorsa della radice dell'API (/) rappresenta il servizio Amazon S3. In questa fase crei le due risorse aggiuntive /{folder} e /{item}.

  2. Scegli Crea risorsa.

  3. Mantieni l'opzione Risorsa proxy disattivata.

  4. Per Percorso risorsa seleziona /.

  5. Per Resource Name (Nome risorsa) immetti {folder}.

  6. Mantieni CORS (Cross Origin Resource Sharing) deselezionato.

  7. Scegli Crea risorsa.

  8. Seleziona la risorsa /{folder}, quindi scegli Crea risorsa.

  9. Ripeti le fasi precedenti per creare una risorsa figlio /{folder} denominata {item}.

    L'API finale è simile a quanto riportato di seguito:

    Creazione di un'API in API Gateway come un proxy Amazon S3

Esposizione di un metodo API per elencare i bucket Amazon S3 dell'intermediario

Per ottenere l'elenco dei bucket Amazon S3 dell'intermediario, è necessario richiamare l'operazione GET Service in Amazon S3. Nella risorsa radice dell'API, (/), crea il metodo GET. Configura il metodo GET per l'integrazione con Amazon S3, come indicato di seguito.

Per creare e inizializzare il metodo GET / dell'API
  1. Seleziona la risorsa /, quindi scegli Crea metodo.

  2. Per Tipo di metodo seleziona GET.

  3. Per Tipo di integrazione seleziona Servizio AWS.

  4. Per Regione AWS, seleziona il Regione AWS luogo in cui hai creato il tuo bucket Amazon S3.

  5. Per Servizio AWS seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per Metodo HTTP seleziona GET.

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

    Con la sostituzione del percorso, API Gateway invia la richiesta client ad Amazon S3 come richiesta in stile percorso dell'API REST Amazon S3, in cui la risorsa Amazon S3 viene espressa dal percorso della risorsa del modello s3-host-name/bucket/key. API Gateway imposta il valore s3-host-name e passa i valori bucket e key specificati dal client ad Amazon S3.

  9. In Sostituzione percorso immetti /.

  10. Per Ruolo di esecuzione immetti l'ARN del ruolo per APIGatewayS3ProxyPolicy.

  11. Scegli Impostazioni della richiesta del metodo.

    Si utilizzano le impostazioni della richiesta del metodo per controllare chi può chiamare questo metodo dell'API.

  12. Per Autorizzazioni seleziona AWS_IAM nel menu a discesa.

    Dichiarazione dei tipi di risposta di metodo
  13. Scegli Crea metodo.

Questa configurazione integra la richiesta GET https://your-api-host/stage/ front-end con il back-end GET https://your-s3-host/.

Per consentire all'API di restituire correttamente risposte di esito positivo ed eccezioni al chiamante, si dichiarano le risposte 200, 400 e 500 in Risposta metodo. Si utilizza la mappatura predefinita per le risposte 200 in modo che le risposte di backend del codice di stato non dichiarate in questa sede vengano restituite al chiamante come risposte 200.

Per dichiarare i tipi di risposta del metodo GET /
  1. Nella scheda Risposta metodo scegli Modifica in Risposta 200.

  2. Scegli Aggiungi intestazione e procedi come descritto di seguito:

    1. Per Nome intestazione immetti Content-Type.

    2. Seleziona Add header (Aggiungi intestazione).

    Ripeti queste fasi per creare un'intestazione Timestamp e un'intestazione Content-Length.

  3. Seleziona Salva.

  4. Nella scheda Risposta metodo scegli Crea risposta in Risposte del metodo.

  5. Per Codice di stato HTTP immetti 400.

    Non impostare alcuna intestazione per questa risposta.

  6. Seleziona Salva.

  7. Ripeti le seguenti fasi per creare la risposta 500.

    Non impostare alcuna intestazione per questa risposta.

Poiché la risposta di integrazione con esito positivo da Amazon S3 restituisce l'elenco di bucket come payload XML e la risposta del metodo predefinita di Gateway API restituisce un payload JSON, è necessario mappare il valore del parametro di intestazione Content-Type di backend all'equivalente di frontend. In caso contrario, il client riceverà application/json come tipo di contenuto quando il corpo della risposta è effettivamente una stringa XML. La procedura seguente descrive come eseguire questa configurazione. È possibile inoltre visualizzare altri parametri di intestazione per il client, ad esempio Date e Content-Length.

Per configurare le mappature delle intestazioni di risposta per il metodo GET /.
  1. Nella scheda Risposta di integrazione scegli Modifica in Predefinito - Risposta.

  2. Per l'intestazione Content-Length immetti integration.response.header.Content-Length come valore di mappatura.

  3. Per l'intestazione Content-Type immetti integration.response.header.Content-Type come valore di mappatura.

  4. Per l'intestazione Timestamp immetti integration.response.header.Date come valore di mappatura.

  5. Seleziona Salva. Il risultato sarà essere simile al seguente:

    Mappatura delle intestazioni delle risposte di integrazione alle intestazioni delle risposte di metodo
  6. Nella scheda Risposta di integrazione scegli Crea risposta in Risposte di integrazione.

  7. Per HTTP status regex (Regex stato HTTP), immettere 4\d{2}. Tutti i codici di stato della risposta HTTP 4xx sono così mappati alla risposta del metodo.

  8. Per Codice di stato risposta metodo seleziona 400.

  9. Scegli Create (Crea) .

  10. Ripeti le seguenti fasi per creare una risposta di integrazione per la risposta del metodo 500. Per HTTP status regex (Regex stato HTTP), immettere 5\d{2}.

Come suggerisce la buona norma, è opportuno testare l'API configurata fino a questo momento.

Test del metodo GET /
  1. Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

  2. Scegli Test (Esegui test). Il risultato sarà simile all'immagine seguente:

    Risultato del test del bucket GET nella radice dell'API

Esposizione dei metodi API per accedere a un bucket Amazon S3

Per utilizzare un bucket Amazon S3, esponi il metodo GET nella risorsa /{folder} per elencare gli oggetti del bucket. Le istruzioni sono simili a quelle descritte in Esposizione di un metodo API per elencare i bucket Amazon S3 dell'intermediario. Per altri metodi, puoi importare l'API di esempio come descritto in Definizioni OpenAPI dell'API di esempio come un proxy Amazon S3.

Per esporre il metodo GET in una risorsa folder
  1. Seleziona la risorsa /{folder}, quindi scegli Crea metodo.

  2. Per Tipo di metodo seleziona GET.

  3. Per Tipo di integrazione seleziona Servizio AWS.

  4. Per Regione AWS, seleziona il Regione AWS luogo in cui hai creato il tuo bucket Amazon S3.

  5. Per Servizio AWS seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per Metodo HTTP seleziona GET.

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

  9. Per Sostituzione percorso immetti {bucket}.

  10. Per Ruolo di esecuzione immetti l'ARN del ruolo per APIGatewayS3ProxyPolicy.

  11. Scegli Crea metodo.

Imposta il parametro di percorso {folder} nell'URL dell'endpoint Amazon S3. Dovrai mappare il parametro di percorso {folder} della richiesta di metodo al parametro di percorso {bucket} della richiesta di integrazione.

Per mappare {folder} a {bucket}
  1. Nella scheda Richiesta di integrazione scegli Modifica in Impostazioni della richiesta di integrazione.

  2. Seleziona Parametri di percorso URL, quindi scegli Aggiungi parametro di percorso.

  3. Per Nome, immetti bucket.

  4. In Mappato da, inserire method.request.path.folder.

  5. Seleziona Salva.

A questo punto esegui il test dell'API.

Per testare il metodo /{folder} GET
  1. Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

  2. In Percorso immetti il nome del tuo bucket per folder.

  3. Scegli Test (Esegui test).

    Il risultato del test conterrà l'elenco degli oggetti presenti nel bucket.

    Test del metodo GET per la creazione di un bucket Amazon S3.

Esposizione dei metodi API per accedere a un oggetto Amazon S3 in un bucket

Amazon S3 supporta le operazioni GET, DELETE, HEAD, OPTIONS, POST e PUT per accedere agli oggetti e gestirli in un bucket specifico. In questo tutorial, esponi un metodo GET nella risorsa {folder}/{item} per ottenere un'immagine da un bucket. Per ulteriori applicazioni della risorsa {folder}/{item}, consulta l'API di esempio in Definizioni OpenAPI dell'API di esempio come un proxy Amazon S3.

Per esporre il metodo GET in un elemento
  1. Seleziona la risorsa /{item}, quindi scegli Crea metodo.

  2. Per Tipo di metodo seleziona GET.

  3. Per Tipo di integrazione seleziona Servizio AWS.

  4. Per Regione AWS, seleziona il Regione AWS luogo in cui hai creato il tuo bucket Amazon S3.

  5. Per Servizio AWS seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per Metodo HTTP seleziona GET.

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

  9. Per Sostituzione percorso immetti {bucket}/{object}.

  10. Per Ruolo di esecuzione immetti l'ARN del ruolo per APIGatewayS3ProxyPolicy.

  11. Scegli Crea metodo.

Imposta i parametri di percorso {folder} e {item} nell'URL dell'endpoint Amazon S3. Dovrai mappare il parametro di percorso della richiesta di metodo al parametro di percorso della richiesta di integrazione.

In questa fase si effettuano le operazioni seguenti:

  • Mappa il parametro di percorso {folder} della richiesta di metodo al parametro di percorso {bucket} della richiesta di integrazione.

  • Mappa il parametro di percorso {item} della richiesta di metodo al parametro di percorso {object} della richiesta di integrazione.

Per mappare {folder} a {bucket} e {item} a {object}
  1. Nella scheda Richiesta di integrazione scegli Modifica in Impostazioni della richiesta di integrazione.

  2. Scegli Parametri di percorso URL.

  3. Scegli Aggiungi parametro di percorso.

  4. Per Nome, immetti bucket.

  5. In Mappato da, inserire method.request.path.folder.

  6. Scegli Aggiungi parametro di percorso.

  7. Per Nome, immetti object.

  8. In Mappato da, inserire method.request.path.item.

  9. Seleziona Salva.

Per testare il metodo /{folder}/{object} GET
  1. Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

  2. In Percorso immetti il nome del tuo bucket per folder.

  3. In Percorso immetti il nome di un elemento per item.

  4. Scegli Test (Esegui test).

    Il corpo della risposta conterrà il contenuto dell'elemento.

    Test del metodo GET per la creazione di un bucket Amazon S3.

    La richiesta restituisce correttamente il testo normale ("Hello world") come contenuto del file specificato (test.txt) nel bucket Amazon S3 fornito (amzn-s3-demo-bucket).

Per scaricare o caricare file binari ovvero, in API Gateway, tutti i contenuti JSON che hanno una codifica diversa da UTF-8, sono necessarie impostazioni API aggiuntive, come mostrato di seguito:

Per scaricare o caricare file binari da S3
  1. Registra i tipi di file multimediali del file interessato nelle API. binaryMediaTypes Questa operazione può essere eseguita nella console:

    1. Scegli Impostazioni API per l'API.

    2. In Tipi di media binari scegli Gestisci tipi di supporti.

    3. Scegli Aggiungi tipo di supporto binario, quindi immetti il tipo di supporto richiesto, ad esempio image/png.

    4. Scegli Salva modifiche per salvare l'impostazione.

  2. Aggiungi l'intestazione Content-Type (per il caricamento) e/o Accept (per il download) alla richiesta di metodo per chiedere al client di specificare il tipo di supporto binario richiesto e mapparlo alla richiesta di integrazione.

  3. Imposta Content Handling (Gestione contenuto) su Passthrough nella richiesta di integrazione (per il caricamento) e in una risposta di integrazione (per il download). Assicurati che per il tipo di contenuto interessato non sia definito un modello di mappatura. Per ulteriori informazioni, consulta Trasformazioni dei dati per REST APIs in API Gateway.

Il limite della dimensione del payload è 10 MB. Consulta Quote di API Gateway per la configurazione e l'esecuzione di un'API REST.

Assicurati che ai file in Amazon S3 vengano aggiunti tipi di contenuto corretti come metadati dei file. Per il contenuto multimediale riproducibile in streaming, potrebbe essere necessario aggiungere anche Content-Disposition:inline ai metadati.

Per ulteriori informazioni sul supporto binario in API Gateway, consulta Conversioni dei tipi di contenuto in API Gateway.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.