DynamoDB di basso livello API - Amazon DynamoDB

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

DynamoDB di basso livello API

Amazon DynamoDB di API basso livello è l'interfaccia a livello di protocollo per DynamoDB. A questo livello, ogni richiesta HTTP (S) deve essere formattata correttamente e contenere una firma digitale valida.

Crea API richieste AWS SDKs DynamoDB di basso livello per tuo conto ed elabora le risposte di DynamoDB. Ciò ti consente di concentrarti sulla logica dell'applicazione, anziché sui dettagli di basso livello. Tuttavia, puoi comunque trarre vantaggio da una conoscenza di base del funzionamento del DynamoDB API di basso livello.

Per ulteriori informazioni sul DynamoDB di basso livello, API consulta Amazon DynamoDB Reference. API

Nota

DynamoDB Streams ha un proprio API livello basso, che è separato da quello di DynamoDB ed è completamente supportato da. AWS SDKs

Per ulteriori informazioni, consulta Acquisizione dei dati di modifica per DynamoDB Streams. Per i DynamoDB Streams di basso livelloAPI, consulta Amazon DynamoDB Streams Reference. API

Il API DynamoDB di basso livello JavaScript utilizza Object Notation JSON () come formato di protocollo cablato. JSONpresenta i dati in una gerarchia in modo che sia i valori che la struttura dei dati vengano trasmessi simultaneamente. Le coppie nome-valore sono definite nel formato name:value. La gerarchia dei dati viene definita tramite parentesi annidate di coppie nome-valore.

DynamoDB JSON lo utilizza solo come protocollo di trasporto, non come formato di archiviazione. L' AWS SDKsuso JSON per inviare dati a DynamoDB e DynamoDB risponde con. JSON DynamoDB non archivia i dati in modo persistente nel formato. JSON

Nota

Per ulteriori informazioniJSON, consulta Introduzione JSON sul sito Web. JSON.org

DynamoDB di API basso livello e AWS SDKs come gestire le richieste e le risposte a livello di protocollo.

Formato della richiesta

Il DynamoDB di API basso livello HTTP accetta le richieste (S) come input. POST Quindi AWS SDKs costruiscono queste richieste per te.

Supponiamo di avere una tabella denominata Pets con uno schema di chiave costituito da AnimalType (chiave di partizione) e Name (chiave di ordinamento). Entrambi questi attributi sono di tipo string. Per recuperare un elemento daPets, AWS SDK costruisce la seguente richiesta.

POST / HTTP/1.1 Host: dynamodb.<region>.<domain>; Accept-Encoding: identity Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.0 Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> X-Amz-Date: <Date> X-Amz-Target: DynamoDB_20120810.GetItem { "TableName": "Pets", "Key": { "AnimalType": {"S": "Dog"}, "Name": {"S": "Fido"} } }

Tieni presente le seguenti considerazioni sulla richiesta:

  • L'intestazione Authorization contiene le informazioni necessarie per l'autenticazione della richiesta da parte di DynamoDB. Per ulteriori informazioni, consulta AWS APIRichieste di firma e Processo di firma della versione 4 di Signature in. Riferimenti generali di Amazon Web Services

  • L'intestazione X-Amz-Target contiene il nome di un'operazione DynamoDB: GetItem. (In questo caso, è accompagnata anche dalla API versione di basso livello)20120810.

  • Il payload (body) della richiesta contiene i parametri per l'operazione, in JSON formato. Per l'operazione GetItem, i parametri sono TableName e Key.

Formato della risposta

Al ricevimento della richiesta, DynamoDB la elabora e restituisce una risposta. Per la richiesta mostrata in precedenza, il payload di risposta HTTP (S) contiene i risultati dell'operazione, come illustrato nell'esempio seguente.

HTTP/1.1 200 OK x-amzn-RequestId: <RequestId> x-amz-crc32: <Checksum> Content-Type: application/x-amz-json-1.0 Content-Length: <PayloadSizeBytes> Date: <Date> { "Item": { "Age": {"N": "8"}, "Colors": { "L": [ {"S": "White"}, {"S": "Brown"}, {"S": "Black"} ] }, "Name": {"S": "Fido"}, "Vaccinations": { "M": { "Rabies": { "L": [ {"S": "2009-03-17"}, {"S": "2011-09-21"}, {"S": "2014-07-08"} ] }, "Distemper": {"S": "2015-10-13"} } }, "Breed": {"S": "Beagle"}, "AnimalType": {"S": "Dog"} } }

A questo punto, AWS SDK restituisce i dati di risposta all'applicazione per un'ulteriore elaborazione.

Nota

Se DynamoDB non è in grado di elaborare una richiesta, restituisce un codice di errore e HTTP un messaggio. Li AWS SDK propaga all'applicazione sotto forma di eccezioni. Per ulteriori informazioni, consulta Gestione degli errori con DynamoDB.

Descrittori del tipo di dati

Il protocollo API DynamoDB di basso livello richiede che ogni attributo sia accompagnato da un descrittore del tipo di dati. I descrittori del tipo di dati sono token che indicano a DynamoDB come interpretare ogni attributo.

Gli esempi in Formato della richiesta e Formato della risposta mostrano come vengono usati i descrittori del tipo di dati. La richiesta GetItem specifica S per gli attributi dello schema della chiave Pets (AnimalType e Name) che sono di tipo string. La risposta GetItem contiene un item Pets con attributi di tipo string (S), number (N), map (M) e list (L).

Di seguito è riportato un elenco completo dei descrittori del tipo di dati di DynamoDB:

  • S: String

  • N: Number

  • B: binario

  • BOOL: Boolean

  • NULL: null

  • M: Map

  • L: list

  • SS: set string

  • NS: set numerico

  • BS: set binario

Nota

Per una descrizione dettagliata dei tipi di dati di DynamoDB, consulta Tipi di dati.

Dati numerici

Linguaggi di programmazione diversi offrono diversi livelli di supporto per. JSON In alcuni casi, potresti decidere di utilizzare una libreria di terze parti per la convalida e l'analisi JSON dei documenti.

Alcune librerie di terze parti si basano sul tipo di JSON numero e forniscono tipi propri come intlong, o. double Tuttavia, dal momento che il tipo di dati numerico nativo in DynamoDB non viene esattamente mappato a questi altri tipi di dati, pertanto queste distinzioni tra tipi possono causare conflitti. Inoltre, molte JSON librerie non gestiscono valori numerici a precisione fissa e deducono automaticamente un tipo di dati doppio per le sequenze di cifre che contengono un punto decimale.

Per risolvere questi problemi, DynamoDB fornisce un singolo tipo numerico senza perdita di dati. Per evitare conversioni implicite indesiderate a un valore double, DynamoDB usa le stringhe per il trasferimento dei dati di valori numerici. Questo approccio fornisce flessibilità per l'aggiornamento dei valori degli attributi pur mantenendo una corretta semantica di ordinamento, ad esempio mettendo i valori "01", "2" e "03" nella sequenza corretta.

Se la precisione del numero è importante per l'applicazione, sarà necessario convertire i valori numerici in stringhe prima di passarli a DynamoDB.

Dati binari

supporta gli attributi binari. Tuttavia, non supporta nativamente la codifica di dati binariJSON. Per inviare dati binari in una richiesta, è necessario codificarli nel formato Base64. Dopo aver ricevuto la richiesta, DynamoDB decodifica i dati Base64 nuovamente in binario.

Lo schema di codifica base64 utilizzato da DynamoDB è descritto al punto RFC4648 sul sito Web Internet Engineering Task Force (). IETF