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.
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 WebJSON.org
Argomenti
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 sonoTableName
eKey
.
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 int
long
, 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