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: creazione di un'API REST come un proxy Amazon Kinesis
In questa pagina viene descritto come creare e configurare un'API REST con un'integrazione di tipo AWS per accedere a Kinesis.
Nota
Per integrare l'API di API Gateway con Kinesis, devi scegliere una regione in cui i servizi API Gateway e Kinesis siano entrambi disponibili. Per la disponibilità della regione, vedere Endpoint e quote del servizio.
Per scopi illustrativi, creeremo un'API di esempio per permettere a un client di eseguire le operazioni seguenti:
-
Elencare i flussi disponibili dell'utente in Kinesis
-
Creare, descrivere o eliminare un flusso specificato.
-
Leggere o scrivere record di dati nel flusso specificato
Per eseguire le attività precedenti, l'API espone metodi in diverse risorse per richiamare, rispettivamente, gli elementi seguenti:
-
L'operazione
ListStreamsin Kinesis -
Operazione
CreateStream,DescribeStreamoDeleteStream -
Operazione
GetRecordsoPutRecords(inclusaPutRecord) in Kinesis
In particolare, compileremo l'API in questo modo:
-
Esponendo un metodo HTTP GET nella risorsa
/streamsdell'API e integrando il metodo con l'operazione ListStreams in Kinesis per elencare i flussi nell'account dell'intermediario. -
Esponendo un metodo HTTP POST nella risorsa
/streams/{stream-name}dell'API e integrando il metodo con l'operazione CreateStream in Kinesis per creare un flusso denominato nell'account dell'intermediario. -
Esponendo un metodo HTTP GET nella risorsa
/streams/{stream-name}dell'API e integrando il metodo con l'operazione DescribeStream in Kinesis per descrivere un flusso denominato nell'account dell'intermediario. -
Esponendo un metodo HTTP DELETE nella risorsa
/streams/{stream-name}dell'API e integrando il metodo con l'operazione DeleteStream in Kinesis per eliminare un flusso nell'account dell'intermediario. -
Esponendo un metodo HTTP PUT nella risorsa
/streams/{stream-name}/recorddell'API e integrando il metodo con l'operazione PutRecord in Kinesis. In questo modo, il client può aggiungere un singolo record di dati al flusso denominato. -
Esponendo un metodo HTTP PUT nella risorsa
/streams/{stream-name}/recordsdell'API e integrando il metodo con l'operazione PutRecords in Kinesis. In questo modo, il client può aggiungere un elenco di record di dati al flusso denominato. -
Esponendo un metodo HTTP GET nella risorsa
/streams/{stream-name}/recordsdell'API e integrando il metodo con l'operazione GetRecords in Kinesis. In questo modo, il client può aggiungere un elenco di record di dati nel flusso denominato, con un'iterazione shard specificata. Un'iterazione shard specifica la posizione dello shard da cui iniziare a leggere i record di dati in sequenza. -
Esponendo un metodo HTTP GET nella risorsa
/streams/{stream-name}/sharditeratordell'API e integrando il metodo con l'operazione GetShardIterator in Kinesis. Questo metodo helper deve essere fornito all'operazioneListStreamsin Kinesis.
Puoi applicare le istruzioni presentate qui ad altre operazioni di Kinesis. Per l'elenco completo delle operazioni di Kinesis, consulta la documentazione di riferimento delle API di Amazon Kinesis.
Invece di usare la console API Gateway per creare l'API di esempio, puoi importare l'API di esempio in API Gateway, usando l'API Gateway di Importa API. Per informazioni su come usare l'API di importazione, consulta Sviluppo di REST API utilizzando OpenAPI in Gateway API.
Creazione di un ruolo e una policy IAM per l'API per accedere a Kinesis
Per permettere all'API di richiamare le operazioni di Kinesis, devi aver collegato le policy IAM appropriate a un ruolo IAM. In questo passaggio si crea un nuovo ruolo IAM.
Per creare il ruolo di esecuzione del proxy dei servizi AWS
Accedi a Console di gestione AWS e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Scegliere Roles (Ruoli).
-
Scegli Crea ruolo.
-
Scegli Servizio AWS in Seleziona il tipo di entità attendibile, quindi seleziona Gateway API e scegli Consente a Gateway API di inviare i log a File di log CloudWatch.
-
Scegli Successivo e di nuovo Successivo.
-
In Role name (Nome ruolo) immettere
APIGatewayKinesisProxyPolicye quindi selezionare Create role (Crea ruolo). -
Nell'elenco Roles (Ruoli) scegliere il ruolo appena creato. Potrebbe essere necessario scorrere o utilizzare la barra di ricerca per trovare il ruolo.
-
Per il ruolo selezionato, seleziona la scheda Aggiungi autorizzazioni.
-
Dall'elenco a discesa scegli Collega policy.
-
Nella barra di ricerca inserisci
AmazonKinesisFullAccesse 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.
-
Annota l'ARN del ruolo appena creato, lo utilizzerai in seguito.
Creazione di un'API come un proxy Kinesis
Usa la procedura seguente per creare l'API nella console API Gateway.
Per creare un'API come un proxy dei servizi AWS per Kinesis
-
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Se si utilizza API Gateway per la prima volta, verrà visualizzata una pagina che presenta le caratteristiche del servizio. In API REST, scegliere Crea. Quando appare il popup Create Example API (Crea API di esempio), scegliere OK.
Se non è la prima volta che si utilizza API Gateway, scegliere Create API (Crea API). In API REST, scegliere Crea.
-
Selezionare New API (Nuova API).
-
Per API name (Nome API) immettere
KinesisProxy. Per tutti gli altri campi mantieni i valori predefiniti. -
(Facoltativo) In Description (Descrizione), immettere una descrizione.
-
Per Tipo di indirizzo IP, selezionare IPv4.
-
Seleziona Create API (Crea API).
Dopo la creazione dell'API, la console API Gateway visualizza la pagina Resources (Risorse), che contiene solo la risorsa root (/) dell'API.
Visualizzazione dell'elenco di flussi in Kinesis
Kinesis supporta l'operazione ListStreams con la chiamata API REST seguente:
POST /?Action=ListStreams HTTP/1.1 Host: kinesis.<region>.<domain> Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Authorization: <AuthParams> X-Amz-Date: <Date> { ... }
Nella richiesta API REST precedente l'operazione è specificata nel parametro di query Action. In alternativa, puoi specificare l'operazione in un'intestazione X-Amz-Target:
POST / HTTP/1.1 Host: kinesis.<region>.<domain> Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Authorization: <AuthParams> X-Amz-Date: <Date> X-Amz-Target: Kinesis_20131202.ListStreams { ... }
In questo tutorial useremo il parametro di query per specificare l'operazione.
Per esporre un'operazione di Kinesis nell'API, aggiungi una risorsa /streams alla root dell'API. Imposta quindi un metodo GET nella risorsa e integra il metodo con l'operazione ListStreams di Kinesis.
La procedura seguente descrive come elencare flussi Kinesis tramite la console API Gateway.
Per elencare i flussi Kinesis utilizzando la console API Gateway
-
Seleziona la risorsa
/, quindi scegli Crea risorsa. Per Resource Name (Nome risorsa) immetti
streams.Mantieni CORS (Cross Origin Resource Sharing) disattivato.
Scegli Crea risorsa.
-
Scegli la risorsa
/streamse seleziona Crea metodo, quindi procedi come segue:Per Tipo di metodo seleziona GET.
Nota
Il verbo HTTP per un metodo richiamato da un client può differire dal verbo HTTP per un'integrazione richiesta dal back-end. Qui selezioniamo
GETperché la visualizzazione dell'elenco di flussi è intuitivamente un'operazione READ.Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
Nota
Qui scegliamo
POSTperché Kinesis richiede che con il metodo venga richiamata l'operazioneListStreams. -
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
ListStreams. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella scheda Richiesta di integrazione scegli Modifica in Impostazioni della richiesta di integrazione.
Per Richiesta corpo passthrough scegli Quando non ci sono modelli definiti (consigliato).
-
Scegli Parametri delle intestazioni delle richieste URL ed effettua le seguenti operazioni:
-
Scegli Aggiungi parametro delle intestazioni delle richieste.
-
Per Nome, immetti
Content-Type. -
In Mappato da, inserire
'application/x-amz-json-1.1'.
Usiamo la mappatura dei parametri delle richieste per impostare l'intestazione
Content-Typesul valore statico'application/x-amz-json-1.1'per indicare a Kinesis che l'input è una versione specifica di JSON. -
-
Scegli Modelli di mappatura, quindi seleziona Aggiungi modello di mappatura ed effettua le seguenti operazioni:
-
Per Content-Type immetti
application/json. -
Per Corpo del modello immetti
{}. -
Selezionare Salva.
La richiesta ListStreams accetta un payload del formato JSON seguente:
{ "ExclusiveStartStreamName": "string", "Limit": number }Tuttavia, le proprietà sono facoltative. Per usare i valori predefiniti, qui abbiamo optato per un payload JSON vuoto.
-
-
Testa il metodo GET nella risorsa /streams per richiamare l'azione
ListStreamsin Kinesis:Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.
Scegli Esegui test per testare il metodo.
Se hai già creato due flussi denominati "myStream" e "yourStream" in Kinesis, il test con esito positivo restituisce una risposta 200 OK che contiene il payload seguente:
{ "HasMoreStreams": false, "StreamNames": [ "myStream", "yourStream" ] }
Creazione, descrizione ed eliminazione di un flusso in Kinesis
Per creare, descrivere ed eliminare un flusso in Kinesis è necessario effettuare, rispettivamente, le richieste API REST di Kinesis seguenti:
POST /?Action=CreateStream HTTP/1.1 Host: kinesis.region.domain... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "ShardCount": number, "StreamName": "string" }
POST /?Action=DescribeStream HTTP/1.1 Host: kinesis.region.domain... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "StreamName": "string" }
POST /?Action=DeleteStream HTTP/1.1 Host: kinesis.region.domain... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "StreamName":"string" }
Puoi compilare l'API in modo da accettare l'input richiesto come payload JSON della richiesta del metodo e passare il payload alla richiesta di integrazione. Tuttavia, per fornire più esempi di mappatura dei dati tra richieste di metodi e di integrazione e le rispettive risposte, creeremo l'API in un modo diverso.
Esporremo i metodi HTTP GET, POST e Delete in una risorsa Stream da denominare. Useremo la variabile di percorso {stream-name} come segnaposto della risorsa flusso e integreremo questi metodi API rispettivamente con le operazioni DescribeStream, CreateStream e DeleteStream di Kinesis. Richiederemo che il client passi altri dati di input come intestazioni, parametri di query o payload della richiesta di un metodo. Specificheremo modelli di mappatura per trasformare i dati nel payload della richiesta di integrazione necessario.
Per creare la risorsa {stream-name}
-
Scegli la risorsa /streams, quindi seleziona Crea risorsa.
Mantieni l'opzione Risorsa proxy disattivata.
Per Percorso risorsa seleziona
/streams.Per Resource Name (Nome risorsa) immetti
{stream-name}.Mantieni CORS (Cross Origin Resource Sharing) disattivato.
Scegli Crea risorsa.
Per configurare e testare il metodo GET in una risorsa flusso
-
Scegli la risorsa /{stream-name}, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona GET.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
DescribeStream. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi i seguenti parametri delle intestazioni delle richieste URL:
Content-Type: 'x-amz-json-1.1'L'attività segue la stessa procedura usata per configurare la mappatura dei parametri di richiesta per il metodo
GET /streams. -
Aggiungi il modello di mappatura del corpo seguente per mappare i dati dalla richiesta del metodo
GET /streams/{stream-name}alla richiesta di integrazionePOST /?Action=DescribeStream:{ "StreamName": "$input.params('stream-name')" }Questo modello di mappatura genera il payload della richiesta di integrazione necessario per l'operazione
DescribeStreamdi Kinesis dal valore del parametro di percorsostream-namedella richiesta del metodo. -
Per testare il metodo
GET /stream/{stream-name}per richiamare l'azioneDescribeStreamin Kinesis, scegli la scheda Test. -
Per Percorso immetti il nome di un flusso Kinesis esistente in stream-name.
-
Scegli Test (Esegui test). Se il test ha esito positivo, viene restituita una risposta 200 OK con un payload simile al seguente:
{ "StreamDescription": { "HasMoreShards": false, "RetentionPeriodHours": 24, "Shards": [ { "HashKeyRange": { "EndingHashKey": "68056473384187692692674921486353642290", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "49559266461454070523309915164834022007924120923395850242" }, "ShardId": "shardId-000000000000" }, ... { "HashKeyRange": { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "272225893536750770770699685945414569164" }, "SequenceNumberRange": { "StartingSequenceNumber": "49559266461543273504104037657400164881014714369419771970" }, "ShardId": "shardId-000000000004" } ], "StreamARN": "arn:aws:kinesis:us-east-1:12345678901:stream/myStream", "StreamName": "myStream", "StreamStatus": "ACTIVE" } }Dopo aver distribuito l'API, puoi effettuare una richiesta REST su questo metodo API:
GET https://your-api-id.execute-api.region.amazonaws.com/stage/streams/myStreamHTTP/1.1 Host:your-api-id.execute-api.region.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z
Per configurare e testare il metodo POST in una risorsa flusso
-
Scegli la risorsa /{stream-name}, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona POST.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
CreateStream. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi i seguenti parametri delle intestazioni delle richieste URL:
Content-Type: 'x-amz-json-1.1'L'attività segue la stessa procedura usata per configurare la mappatura dei parametri di richiesta per il metodo
GET /streams. -
Aggiungi il modello di mappatura del corpo seguente per mappare i dati dalla richiesta del metodo
POST /streams/{stream-name}alla richiesta di integrazionePOST /?Action=CreateStream:{ "ShardCount": #if($input.path('$.ShardCount') == '') 5 #else $input.path('$.ShardCount') #end, "StreamName": "$input.params('stream-name')" }Nel modello di mappatura precedente impostiamo
ShardCountsul valore fisso 5 se il client non specifica alcun valore nel payload della richiesta del metodo. -
Per testare il metodo
POST /stream/{stream-name}per richiamare l'azioneCreateStreamin Kinesis, scegli la scheda Test. -
Per Percorso immetti il nome di un nuovo flusso Kinesis in stream-name.
-
Scegli Test (Esegui test). Se il test ha esito positivo, viene restituita una risposta 200 OK senza dati.
Dopo aver distribuito l'API, puoi anche effettuare una richiesta API REST sul metodo POST in una risorsa flusso per richiamare l'operazione
CreateStreamin Kinesis:POST https://your-api-id.execute-api.region.amazonaws.com/stage/streams/yourStreamHTTP/1.1 Host:your-api-id.execute-api.region.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z { "ShardCount": 5 }
Configurazione e test del metodo DELETE in una risorsa flusso
-
Scegli la risorsa /{stream-name}, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona DELETE.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
DeleteStream. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi i seguenti parametri delle intestazioni delle richieste URL:
Content-Type: 'x-amz-json-1.1'L'attività segue la stessa procedura usata per configurare la mappatura dei parametri di richiesta per il metodo
GET /streams. -
Aggiungi il modello di mappatura del corpo seguente per mappare i dati dalla richiesta del metodo
DELETE /streams/{stream-name}alla richiesta di integrazione corrispondente diPOST /?Action=DeleteStream:{ "StreamName": "$input.params('stream-name')" }Questo modello di mappatura genera l'input richiesto per l'operazione
DELETE /streams/{stream-name}dal nome di percorso URL fornito dal clientstream-name. -
Per testare il metodo
DELETE /stream/{stream-name}per richiamare l'azioneDeleteStreamin Kinesis, scegli la scheda Test. -
Per Percorso immetti il nome di un flusso Kinesis esistente in stream-name.
-
Scegli Test (Esegui test). Se il test ha esito positivo, viene restituita una risposta 200 OK senza dati.
Dopo aver distribuito l'API, puoi anche effettuare la richiesta API REST seguente sul metodo DELETE nella risorsa flusso per chiamare l'operazione
DeleteStreamin Kinesis:DELETE https://your-api-id.execute-api.region.amazonaws.com/stage/streams/yourStreamHTTP/1.1 Host:your-api-id.execute-api.region.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z {}
Recupero di record e aggiunta di record in un flusso in Kinesis
Dopo aver creato un flusso in Kinesis, puoi aggiungere record di dati al flusso e leggere i dati dal flusso. Per aggiungere record di dati, devi chiamare l'operazione PutRecords o PutRecord in Kinesis. La prima operazione aggiunge più record, la seconda aggiunge un singolo record al flusso.
POST /?Action=PutRecords HTTP/1.1 Host: kinesis.region.domainAuthorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "Records": [ { "Data": blob, "ExplicitHashKey": "string", "PartitionKey": "string" } ], "StreamName": "string" }
oppure
POST /?Action=PutRecord HTTP/1.1 Host: kinesis.region.domainAuthorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "Data":blob, "ExplicitHashKey":"string", "PartitionKey":"string", "SequenceNumberForOrdering":"string", "StreamName": "string" }
Qui StreamName identifica il flusso di destinazione per aggiungere record. StreamName, Data, e PartitionKey sono dati di input obbligatori. Nel nostro esempio useremo i valori predefiniti per tutti i dati di input facoltativi e non ne specificheremo in modo esplicito i valori nell'input per la richiesta del metodo.
La lettura di dati in Kinesis consiste nel chiamare l'operazione GetRecords:
POST /?Action=GetRecords HTTP/1.1 Host: kinesis.region.domainAuthorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "ShardIterator":"string", "Limit":number}
Qui il flusso di origine da cui vogliamo ottenere record è specificato nel valore ShardIterator obbligatorio, come mostrato nell'operazione di Kinesis seguente per ottenere un'iterazione shard:
POST /?Action=GetShardIterator HTTP/1.1 Host: kinesis.region.domainAuthorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes{ "ShardId":"string", "ShardIteratorType":"string", "StartingSequenceNumber":"string", "StreamName":"string"}
Per le operazioni GetRecords e PutRecords, esponiamo rispettivamente i metodi GET e PUT in una risorsa /records che viene aggiunta a una risorsa flusso denominata (/{stream-name}). Analogamente, esponiamo l'operazione PutRecord come metodo PUT in una risorsa /record.
Poiché l'operazione GetRecords accetta come input un valore ShardIterator, ottenuto chiamando l'operazione helper GetShardIterator, esponiamo un metodo helper GET in una risorsa ShardIterator (/sharditerator).
Per creare le risorse /record, /records e /sharditerator
-
Scegli la risorsa /{stream-name}, quindi seleziona Crea risorsa.
Mantieni l'opzione Risorsa proxy disattivata.
Per Percorso risorsa seleziona
/{stream-name}.Per Resource Name (Nome risorsa) immetti
record.Mantieni CORS (Cross Origin Resource Sharing) disattivato.
Scegli Crea risorsa.
Ripeti le fasi precedenti per creare una risorsa /records e una risorsa /sharditerator. L'API finale sarà simile alla seguente:
Le quattro procedure seguenti descrivono come configurare ognuno dei metodi, come mappare i dati dalle richieste dei metodi alle richieste di integrazione e come testare i metodi.
Per configurare e testare il metodo PUT /streams/{stream-name}/record per richiamare PutRecord in Kinesis:
-
Scegli la risorsa /record, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona PUT.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
PutRecord. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi i seguenti parametri delle intestazioni delle richieste URL:
Content-Type: 'x-amz-json-1.1'L'attività segue la stessa procedura usata per configurare la mappatura dei parametri di richiesta per il metodo
GET /streams. -
Aggiungi il modello di mappatura del corpo seguente per mappare i dati dalla richiesta del metodo
PUT /streams/{stream-name}/recordalla richiesta di integrazione corrispondente diPOST /?Action=PutRecord:{ "StreamName": "$input.params('stream-name')", "Data": "$util.base64Encode($input.json('$.Data'))", "PartitionKey": "$input.path('$.PartitionKey')" }Questo modello di mappatura presuppone che il payload della richiesta del metodo abbia il formato seguente:
{ "Data": "some data", "PartitionKey": "some key" }Questi dati possono essere modellati tramite lo schema JSON seguente:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PutRecord proxy single-record payload", "type": "object", "properties": { "Data": { "type": "string" }, "PartitionKey": { "type": "string" } } }Puoi creare un modello per includere questo schema e usare il modello per semplificare la generazione del modello di mappatura. Tuttavia, puoi generare un modello di mappatura senza usare alcun modello.
-
Per testare il metodo
PUT /streams/{stream-name}/record, imposta la variabile di percorsostream-namesul nome di un flusso esistente, fornisci un payload con il formato richiesto e quindi invia la richiesta del metodo. Il risultato con esito positivo è una risposta200 OKcon un payload nel formato seguente:{ "SequenceNumber": "49559409944537880850133345460169886593573102115167928386", "ShardId": "shardId-000000000004" }
Per configurare e testare il metodo PUT /streams/{stream-name}/records per richiamare PutRecords in Kinesis
-
Scegli la risorsa /records, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona PUT.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
PutRecords. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi i seguenti parametri delle intestazioni delle richieste URL:
Content-Type: 'x-amz-json-1.1'L'attività segue la stessa procedura usata per configurare la mappatura dei parametri di richiesta per il metodo
GET /streams. -
Aggiungi il modello di mappatura seguente per mappare i dati dalla richiesta del metodo
PUT /streams/{stream-name}/recordsalla richiesta di integrazione corrispondente diPOST /?Action=PutRecords:{ "StreamName": "$input.params('stream-name')", "Records": [ #foreach($elem in $input.path('$.records')) { "Data": "$util.base64Encode($elem.data)", "PartitionKey": "$elem.partition-key" }#if($foreach.hasNext),#end #end ] }Questo modello di mappatura presuppone che il payload della richiesta del metodo possa essere modellato tramite lo schema JSON seguente:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PutRecords proxy payload data", "type": "object", "properties": { "records": { "type": "array", "items": { "type": "object", "properties": { "data": { "type": "string" }, "partition-key": { "type": "string" } } } } } }Puoi creare un modello per includere questo schema e usare il modello per semplificare la generazione del modello di mappatura. Tuttavia, puoi generare un modello di mappatura senza usare alcun modello.
In questo tutorial abbiamo usato due formati di payload leggermente diversi per mostrare come uno sviluppatore di API possa scegliere di esporre il formato di dati di back-end al client o nasconderlo dal client. Un formato è per il metodo
PUT /streams/{stream-name}/records(sopra). Un altro formato viene usato per il metodoPUT /streams/{stream-name}/record(nella procedura precedente). Nell'ambiente di produzione devi mantenere i due formati coerenti. -
Per testare il metodo
PUT /streams/{stream-name}/records, imposta la variabile di percorsostream-namesu un flusso esistente, fornisci il payload seguente e invia la richiesta del metodo.{ "records": [ { "data": "some data", "partition-key": "some key" }, { "data": "some other data", "partition-key": "some key" } ] }Il risultato con esito positivo è una risposta 200 OK con un payload simile all'output seguente:
{ "FailedRecordCount": 0, "Records": [ { "SequenceNumber": "49559409944537880850133345460167468741933742152373764162", "ShardId": "shardId-000000000004" }, { "SequenceNumber": "49559409944537880850133345460168677667753356781548470338", "ShardId": "shardId-000000000004" } ] }
Per configurare e testare il metodo GET /streams/{stream-name}/sharditerator per richiamare GetShardIterator in Kinesis
Il metodo GET /streams/{stream-name}/sharditerator è un metodo helper per acquisire un'iterazione shard necessaria prima di chiamare il metodo GET
/streams/{stream-name}/records.
-
Scegli la risorsa /sharditerator, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona GET.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
GetShardIterator. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Parametri della stringa di query URL.
L'operazione
GetShardIteratorrichiede l'immissione di un valore ShardId. Per passare un valoreShardIdfornito dal client, aggiungiamo un parametro di queryshard-idalla richiesta del metodo, come mostrato nella seguente fase. Scegliere Add query string (Aggiungi stringa di query).
Per Nome, immetti
shard-id.Mantieni Obbligatorio e Caching disattivati.
-
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi il seguente modello di mappatura per generare l'input richiesto (
ShardIdeStreamName) per l'azioneGetShardIteratordei parametrishard-idestream-namedella richiesta del metodo. Inoltre, il modello di mappatura imposta ancheShardIteratorTypesuTRIM_HORIZONcome comportamento predefinito.{ "ShardId": "$input.params('shard-id')", "ShardIteratorType": "TRIM_HORIZON", "StreamName": "$input.params('stream-name')" } -
Usando l'opzione Test nella console API Gateway, immetti il nome di un flusso esistente come valore della variabile
stream-namePath (Percorso), impostashard-idQuery string (Stringa di query) su un valoreShardIdesistente, ad esempioshard-000000000004, e seleziona Test.Il payload di risposta di esito positivo è simile all'output seguente:
{ "ShardIterator": "AAAAAAAAAAFYVN3VlFy..." }Annota il valore di
ShardIterator. Ti servirà per ottenere record da un flusso.
Per configurare e testare il metodo GET /streams/{stream-name}/records per richiamare l'operazione GetRecords in Kinesis
-
Scegli la risorsa /records, quindi seleziona Crea metodo.
Per Tipo di metodo seleziona GET.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato il flusso Kinesis.
Per Servizio AWS seleziona Kinesis.
-
Lascia vuoto Sottodominio AWS.
-
Per HTTP method (Metodo HTTP) scegli POST.
-
Per Tipo di operazione scegli Usa nome operazione.
-
Per Nome azione immetti
GetRecords. -
Per Ruolo di esecuzione immetti l'ARN del ruolo di esecuzione.
-
Lascia il valore predefinito Transito per Gestione contenuti.
-
Scegli Intestazioni di richiesta HTTP.
L'operazione
GetRecordsrichiede l'immissione di un valoreShardIterator. Per passare un valoreShardIteratorfornito dal client, si aggiunge un parametro di intestazioneShard-Iteratoralla richiesta del metodo. Seleziona Add header (Aggiungi intestazione).
Per Nome, immetti
Shard-Iterator.Mantieni Obbligatorio e Caching disattivati.
Scegli Crea metodo.
-
Nella sezione Richiesta di integrazione aggiungi il seguente modello di mappatura del corpo per mappare il valore del parametro di intestazione
Shard-Iteratoral valore della proprietàShardIteratordel payload JSON per l'azioneGetRecordsin Kinesis.{ "ShardIterator": "$input.params('Shard-Iterator')" } -
Usando l'opzione Test nella console Gateway API, immetti il nome di un flusso esistente come valore della variabile Percorso
stream-name, imposta IntestazioneShard-Iteratorsul valoreShardIteratorottenuto dall'esecuzione del test del metodoGET /streams/{stream-name}/sharditerator(precedente) e scegli Test.Il payload di risposta di esito positivo è simile all'output seguente:
{ "MillisBehindLatest": 0, "NextShardIterator": "AAAAAAAAAAF...", "Records": [ ... ] }