Tutorial: creare un REST API proxy come 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à.

Tutorial: creare un REST API proxy come Amazon S3

Come esempio per illustrare l'utilizzo di un REST API in API Gateway per eseguire il proxy di Amazon S3, questa sezione descrive come creare e configurare REST API un gateway per esporre le seguenti operazioni di Amazon S3:

Potresti voler importare l'esempio API come proxy Amazon S3, come mostrato in. APIDefinizioni aperte dell'esempio API come proxy Amazon S3 Questo esempio include più metodi esposti. Per istruzioni su come importare e API utilizzare la API definizione Open, consultaSviluppa REST APIs utilizzando Open API in API Gateway.

Nota

Per integrare il tuo API Gateway API con Amazon S3, devi scegliere una regione in cui siano disponibili sia i servizi API Gateway che Amazon S3. Per la disponibilità regionale, consulta Amazon API Gateway Endpoints and Quotas.

Imposta IAM le autorizzazioni per API richiamare le azioni Amazon S3

Per consentire loro di API richiamare le azioni di Amazon S3, è necessario che le politiche IAM appropriate siano associate a IAM un ruolo.

Per creare il ruolo di esecuzione del proxy AWS di servizio
  1. Accedi a AWS Management Console e apri la IAM console 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 APIGateway 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 procedura ottimale, è consigliabile creare una IAM politica personalizzata per concedere le autorizzazioni minime richieste.

  11. Nota il ruolo appena creatoARN, lo utilizzerai in seguito.

Crea API risorse per rappresentare le risorse di Amazon S3

Utilizzi API la risorsa root (/) come contenitore dei bucket Amazon S3 di un chiamante autenticato. È inoltre possibile creare Item risorse Folder e per rappresentare rispettivamente un particolare bucket Amazon S3 e un particolare oggetto Amazon S3. Il nome della cartella e la chiave dell'oggetto verranno specificati, sotto forma di parametri di percorso come parte di una richiestaURL, dal chiamante.

Nota

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

Per creare una API risorsa che esponga le caratteristiche del servizio Amazon S3
  1. Nello stesso modo in Regione AWS cui hai creato il tuo bucket Amazon S3, crea un API bucket chiamato MyS3. Questa API risorsa principale (/) 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}.

    Il tuo finale API dovrebbe essere simile al seguente:

    Crea un API in API Gateway come proxy Amazon S3

Esporre un API metodo per elencare i bucket Amazon S3 del chiamante

Per ottenere l'elenco dei bucket Amazon S3 del chiamante è necessario richiamare l'azione di servizio GETsu Amazon S3. Sulla risorsa principale (/), crea il metodo. API GET Configura il GET metodo di integrazione con Amazon S3 come segue.

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

  2. Per il tipo di metodo, selezionare GET.

  3. Per Tipo di integrazione seleziona AWS servizio.

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

  5. Per AWS servizio seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per il HTTPmetodo, seleziona. GET

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

    Con path override, API Gateway inoltra la richiesta del client ad Amazon S3 come richiesta corrispondente in stile percorso Amazon REST API S3, in cui una risorsa Amazon S3 è espressa dal percorso di risorsa del pattern. s3-host-name/bucket/key APIGateway imposta s3-host-name e passa il client specificato bucket e key dal client ad Amazon S3.

  9. In Sostituzione percorso immetti /.

  10. Per il ruolo di esecuzione, inserisci il ruolo ARN perAPIGatewayS3ProxyPolicy.

  11. Scegliete le impostazioni di richiesta del metodo.

    Utilizzi le impostazioni di richiesta del metodo per controllare chi può chiamare questo tuo metodoAPI.

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

APIPer restituire correttamente le risposte e le eccezioni corrette al chiamante, è necessario dichiarare le 200, 400 e 500 risposte in Method response. Si utilizza la mappatura predefinita per 200 risposte in modo che le risposte di backend con il codice di stato non dichiarato qui vengano restituite al chiamante come 200 risposte.

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 il codice HTTP di stato, inserisci 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 corretta di Amazon S3 restituisce la bucket list come XML payload e la risposta del metodo predefinito di API Gateway restituisce un JSON payload, è necessario mappare il valore del parametro di intestazione Content-Type del backend alla controparte frontend. In caso contrario, il client riceverà application/json per il tipo di contenuto quando il corpo della risposta è in realtà una stringa. XML La procedura seguente descrive come eseguire questa configurazione. Inoltre, desideri visualizzare al client anche altri parametri di intestazione, come Date e Content-Length.

Per impostare 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 l'espressione regolare HTTP dello stato, immettere. 4\d{2} Questo associa tutti i codici di stato HTTP della risposta 4xx 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 l'espressione regolare HTTP dello stato, immettere. 5\d{2}

Come buona pratica, puoi testare quello API che hai configurato finora.

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:

    Esegui il API risultato del root GET bucket

Mostra API i metodi per accedere a un bucket Amazon S3

Per lavorare con un bucket Amazon S3, esponi il GET metodo sulla risorsa/{folder} per elencare gli oggetti in un bucket. Le istruzioni sono simili a quelle descritte in Esporre un API metodo per elencare i bucket Amazon S3 del chiamante. Per altri metodi, puoi importare l'esempio qui,. API APIDefinizioni aperte dell'esempio API come proxy Amazon S3

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

  2. Per il tipo di metodo, selezionare GET.

  3. Per Tipo di integrazione seleziona AWS servizio.

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

  5. Per AWS servizio seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per il HTTPmetodo, seleziona. GET

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

  9. Per Sostituzione percorso immetti {bucket}.

  10. Per Ruolo di esecuzione, immettere il ruolo ARN perAPIGatewayS3ProxyPolicy.

  11. Scegli Crea metodo.

Il parametro {folder} path viene impostato nell'endpoint Amazon S3. URL 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. Scegli i parametri del URL percorso, quindi scegli Aggiungi parametro di percorso.

  3. Per Nome, immetti bucket.

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

  5. Seleziona Salva.

Ora metti alla prova il tuoAPI.

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.

    Prova il GET metodo per creare un bucket Amazon S3.

Esponi API i metodi per accedere a un oggetto Amazon S3 in un bucket

Amazon S3 supportaGET,, DELETE HEADOPTIONS, POST e PUT azioni per accedere e gestire gli oggetti in un determinato bucket. In questo tutorial, esponi un metodo GET nella risorsa {folder}/{item} per ottenere un'immagine da un bucket. Per ulteriori applicazioni della {folder}/{item} risorsa, consulta l'esempioAPI,. APIDefinizioni aperte dell'esempio API come proxy Amazon S3

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

  2. Per il tipo di metodo, selezionare GET.

  3. Per Tipo di integrazione seleziona AWS servizio.

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

  5. Per AWS servizio seleziona Amazon Simple Storage Service.

  6. Lascia vuoto Sottodominio AWS .

  7. Per il HTTPmetodo, seleziona. GET

  8. In Tipo di operazione scegli Utilizza sostituzione percorso.

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

  10. Per Ruolo di esecuzione, immettere il ruolo ARN perAPIGatewayS3ProxyPolicy.

  11. Scegli Crea metodo.

I parametri {folder} e il {item} percorso vengono impostati nell'endpoint Amazon S3. URL 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 i parametri del URLpercorso.

  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.

    Prova il GET metodo per creare un bucket Amazon S3.

    La richiesta restituisce correttamente il testo semplice di («Hello world») come contenuto del file specificato (test.txt) nel bucket Amazon S3 specificato (amzn-s3-demo-bucket).

Per scaricare o caricare file binari, che in API Gateway sono considerati qualsiasi cosa diversa dal contenuto con codifica utf-8, sono necessarie impostazioni aggiuntive. JSON API come mostrato di seguito:

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

    1. Scegli APIle impostazioni perAPI.

    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 Integration Passthrough Behaviors e Select VTL Mapping Templates.

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

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 Gateway API