2015-09-16 16 views
29

Stiamo sviluppando un'app mobile/web per la quale utilizziamo aws lambda e dynamo db come backend. Le funzioni indipendenti di lambda funzionano perfettamente. Le chiamate vengono instradate tramite il gateway API. Stiamo usando le chiavi API per sfruttare le funzionalità di sicurezza che fornisce. Per alcuni scopi di test, stiamo tentando di chiamare l'endpoint api tramite un client di riposo di terze parti POSTMAN.Effettuare chiamate all'endpoint del gateway API AWS con chiave API utilizzando il client di riposo POSTMAN

Le richieste sono di tipo POST, ma non importa quello che cerchiamo, otteniamo

403 ("message": "Missing authentication token.")

Uno snapshot è fissata per riferimento. (Poche porzioni sono ombreggiate per motivi di sicurezza)

enter image description here

  1. siamo in grado di capire la causa principale del comportamento.
  2. se lo stesso può essere ottenuto con qualche altro strumento, si prega di suggerire.

risposta

25

Dal lavoro con il gateway API AWS sono caduto nella stessa trappola che sembra di avere. Ci sono due cose che possono causare il messaggio 403 ("message": "Missing authentication token.") infame da visualizzare: caching aggressivo

  1. di CloudFront

mi accorgo che si sta utilizzando CloudFront di memorizzare nella cache vostra richiesta API/risposte. CloudFront è un ottimo strumento - uno dei migliori meccanismi di caching se me lo chiedi - ma quando si memorizzano nella cache cose durante lo sviluppo, è davvero facile farsi prendere dai messaggi di errore in cache. Questo potrebbe essere il caso qui, quindi il mio consiglio è di rimuovere l'API da CloudFront fino a quando non è completamente funzionante.

  1. dimenticare di ri-distribuire

Una delle caratteristiche principali di gateway API è il modo AWS gestisce più versioni di API. Una volta implementato, puoi essere sicuro che gli endpoint API non cambieranno - esattamente ciò che desideri da un endpoint API.

Ciò è dovuto al modo in cui gli endpoint vengono distribuiti. Ogni modifica apportata nella console AWS deve essere distribuita in una specifica distribuzione per poter interagire con live.

Ad esempio, se distribuisco la mia API nella distribuzione "live" e tutto funziona correttamente, è grandioso. Ora posso continuare a modificare le impostazioni nella console AWS per migliorare l'API nel tempo e, quando sono contento di ciò che ho modificato, posso eseguire il deploy di nuovo in un'altra implementazione API, il che significa che gli attuali utenti dell'API non dovranno modificare i loro metodi di interazione fino a quando una distribuzione non viene ripristinata sulla distribuzione su cui stanno lavorando.

Il problema che potresti riscontrare è che anche se hai apportato molte modifiche alla console AWS, potresti non essere stato ridistribuito alla distribuzione che stai testando in Postman.

Nota a margine:

Nel pannello editor di risorse, è in grado di fornire informazioni sui tipi di risposta di questo metodo, le loro intestazioni e tipi di contenuto. Qui è possibile fornire messaggi di errore più significativi ai propri endpoint.

21

Sembra che tu non abbia aggiunto la risorsa nel tuo URL. L'URL dovrebbe essere qualcosa di simile:

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource 

ma la tua è più simile

https://my-api-id.execute-api.region-id.amazonaws.com/test 
+1

Sì, di solito siamo di fretta per testare le cose. Ma se siamo pazienti per leggere un'altra riga, siamo lì. – Nabin

5

Nel mio caso è stato che il metodo ho sostenuto è POST e ho cercato di GET nel browser. Ho tentato di fare un POST in Postman e ha funzionato!

9

Richiesta di percorsi gateway API che non ci sono restituisce "messaggio: Carico token di autenticazione mancante".

Sfortunatamente questo è piuttosto confuso.

+2

Lo stesso se si utilizza il metodo HTTP sbagliato, ad es. POST anziché GET. Super confusionario – mbatchkarov

2

Ho dovuto aggiungere un piano di utilizzo API e quindi collegare il piano allo stage API.

Sembra che questo è l'unico modo per collegare la chiave API in AWS ..

0

Nella pagina Fase Editor, v'è una navigazione a sinistra con il nome d'arte. Se espandi questo ottieni una barra in avanti; se lo espandi, ottieni la tua risorsa. Se si espande la risorsa si ottiene il metodo, e se si fa clic sul metodo si ottiene un collegamento "Richiama URL" (che è uguale al precedente ma con la risorsa aggiunta). Questo richiama il collegamento URL funziona, invocando il metodo GET e restituendo i risultati.

Problemi correlati