Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Die Amazon-DynamoDB-Low-Level-API ist die Schnittstelle auf Protokollebene für DynamoDB. Auf dieser Ebene muss jede HTTP(S)-Anforderung ordnungsgemäß formatiert sein und eine gültige digitale Signatur aufweisen.
Sie AWS SDKs erstellen DynamoDB-API-Anfragen auf niedriger Ebene in Ihrem Namen und verarbeiten die Antworten von DynamoDB. So können Sie sich auf Ihre Anwendungslogik konzentrieren und müssen sich nicht mit Einzelheiten der unteren Ebene aufhalten. Dennoch ist es hilfreich, grundlegende Kenntnisse darüber zu haben, wie die DynamoDB-API auf niedriger Ebene funktioniert.
Weitere Informationen zur DynamoDB-Low-Level-API finden Sie unter Amazon-DynamoDB-API-Referenz.
Anmerkung
DynamoDB Streams verfügt über eine eigene Low-Level-API, die von der von DynamoDB getrennt ist und vollständig von der unterstützt wird. AWS SDKs
Weitere Informationen finden Sie unter Ändern Sie die Datenerfassung für DynamoDB Streams. Informationen zur DynamoDB Streams-API auf niedriger Ebene finden Sie in der Amazon-DynamoDB-Streams-API-Referenz.
Die DynamoDB-API auf niedriger Ebene verwendet JavaScript Object Notation (JSON) als Wire-Protokollformat. JSON stellt Daten in einer Hierarchie dar, sodass Datenwerte und Datenstruktur gleichzeitig übermittelt werden. Name-Wert-Paare werden im Format name:value
definiert. Die Datenhierarchie wird durch verschachtelte Klammern von Name-Wert-Paaren definiert.
DynamoDB verwendet JSON nur als Transportprotokoll, nicht als Speicherformat. AWS SDKs Sie verwenden JSON, um Daten an DynamoDB zu senden, und DynamoDB antwortet mit JSON. DynamoDB speichert Daten nicht dauerhaft im JSON-Format.
Anmerkung
Weitere Informationen zu JSON finden Sie in der Einführung zu JSONJSON.org
.

Anforderungsformat
Die DynamoDB-Low-Level-API akzeptiert HTTP(S)-POST
-Anforderungen als Eingabe. Sie AWS
SDKs erstellen diese Anfragen für Sie.
Angenommen, Sie verfügen über eine Tabelle namens Pets
mit einem Schlüsselschema bestehend aus AnimalType
(Partitionsschlüssel) und Name
(Sortierschlüssel). Beide Attribute sind vom Typ string
. Um ein Element von abzurufenPets
, erstellt das AWS SDK die folgende Anfrage.
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"} } }
Beachten Sie bei dieser Anforderung Folgendes:
-
Der Header
Authorization
enthält Informationen, die DynamoDB benötigt, um die Anforderung zu authentifizieren. Weitere Informationen finden Sie unter Signieren von AWS API-Anfragen und Signiervorgang für Signature Version 4 in der Allgemeine Amazon Web Services-Referenz. -
Der Header
X-Amz-Target
enthält den Namen einer DynamoDB-Operation:GetItem
. (Ebenfalls enthalten ist die Version der API auf niedriger Ebene, in diesem Fall20120810
.) -
Die Nutzlast (der Text) der Anforderung enthält die Parameter für die Operation im JSON-Format. Für die Operation
GetItem
lauten die ParameterTableName
undKey
.
Reaktionsformat
Nach Eingang der Anforderung wird diese von DynamoDB verarbeitet und der Service gibt eine Antwort zurück. Bei der zuvor gezeigten Anforderung enthält die Nutzlast der HTTP(S)-Antwort die Ergebnisse aus der Operation wie in dem folgenden Beispiel gezeigt.
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"} } }
Zu diesem Zeitpunkt sendet das AWS SDK die Antwortdaten zur weiteren Verarbeitung an Ihre Anwendung zurück.
Anmerkung
Wenn DynamoDB eine Anforderung nicht verarbeiten kann, gibt der Service einen HTTP-Fehlercode mit einer entsprechenden Meldung zurück. Das AWS -SDK überträgt diese an Ihre Anwendung in Form von Ausnahmen. Weitere Informationen finden Sie unter Fehlerbehandlung mit DynamoDB.
Datentypbeschreibungen
Das Low-Level-DynamoDB-API-Protokoll erfordert, dass jedes Attribut von einem Datentypdeskriptor begleitet wird. Datentypdeskriptoren sind Token, die DynamoDB mitteilen, wie jedes Attribut zu interpretieren ist.
Die Beispiele unter Anforderungsformat und Reaktionsformat zeigen, wie Datentypbeschreibungen verwendet werden. Die GetItem
-Anforderung gibt S
für die Pets
-Schlüsselschemaattribute an (AnimalType
und Name
, vom Typ string
). Die GetItem
-Antwort enthält ein Pets-Element mit Attributen vom Typ string
(S
), number
(N
), map
(M
) und list
(L
).
Im Folgenden sehen Sie eine vollständige Liste der DynamoDB-Datentypbeschreibungen:
-
S
– Zeichenfolge -
N
– Zahl -
B
– Binary -
BOOL
– Boolean -
NULL
– Nullwert -
M
– Zuordnung -
L
– Liste -
SS
– Zeichenfolgensatz -
NS
– Zahlensatz -
BS
– Binärzahlensatz
Anmerkung
Detaillierte Beschreibungen von DynamoDB-Datentypen finden Sie unter Datentypen.
Numerische Daten
Die unterschiedlichen Programmiersprachen bieten verschiedene Ebenen der Unterstützung für JSON. In einigen Fällen möchten Sie möglicherweise eine Drittanbieterbibliothek zum Validieren und Parsen von JSON-Dokumenten verwenden.
Einige Drittanbieterbibliotheken bieten basierend auf dem JSON-Nummerntyp eigene Typen wie z. B. int
, long
oder double
an. Der native Zahlendatentyp in DynamoDB ist diesen Datentypen nicht exakt zuordenbar, sodass es bei Unterschieden zu Konflikten kommen kann. Außerdem verarbeiten viele JSON-Bibliotheken keine numerischen Werte mit fester Präzision und leiten automatisch einen Double-Datentyp für Ziffernfolgen ab, die ein Dezimaltrennzeichen enthalten.
Um diese Art von Problemen zu lösen, stellt DynamoDB einen einzigen numerischen Typ ohne Datenverluste bereit. Um unerwünschte implizite Umwandlungen in einen Double-Wert zu verhindern, verwendet DynamoDB Zeichenfolgen für die Datenübertragung von numerischen Werten. Dieser Ansatz bietet Flexibilität bei der Aktualisierung von Attributwerten und sorgt außerdem für eine korrekte Sortiersemantik (z. B. werden die Werte "01", "2" und "03" in die richtige Reihenfolge gebracht).
Wenn für Ihre Anwendung die Zahlengenauigkeit wichtig ist, sollten Sie numerische Werte in Zeichenfolgen konvertieren, bevor Sie sie an DynamoDB übergeben.
Binäre Daten
DynamoDB unterstützt binäre Attribute. JSON bietet für binäre Daten jedoch keine native Unterstützung. Um binäre Daten in einer Anforderung zu senden, müssen Sie sie im base64-Format kodieren. Nach Eingang der Anforderung werden die base64-Daten von DynamoDB zurück in binäre Daten dekodiert.
Das von DynamoDB verwendete base64-Codierungsschema wird unter RFC 4648