Ich habe ein Problem bei der Verwendung von API Gateway als Proxy für DynamoDB.AWS API-Gateway speichert JSON in DynamoDB
Grundsätzlich funktioniert es gut, wenn ich die Struktur der Daten kenne, die ich speichern möchte, aber ich kann es nicht schaffen, es ungeachtet der Nutzlaststruktur dynamisch zu machen.
Es gibt viele Websites, auf denen erläutert wird, wie API Gateway als Proxy für DynamoDB verwendet wird. Keiner, den ich gefunden habe, erklärt, wie man ein JSON-Objekt speichert.
Grundsätzlich ich dieses JSON meiner API-Endpunkt senden:
{
"entryId":"abc",
"data":{
"key1":"123",
"key2":123
}
}
Wenn ich die folgende Vorlage Karte verwenden, die Daten in der Datenbank richtig
{
"TableName": "Events",
"Item": {
"entryId": {
"S": "abc"
},
"data": {
"M": {
"key1": {
"S": "123"
},
"key2": {
"N": "123"
}
}
}
}
}
Allerdings setzen wird, weiß ich nicht Ich kenne die Struktur von "Daten". Deshalb möchte ich, dass das Mapping dynamisch ist, oder sogar noch besser. Ich möchte überhaupt kein Mapping vermeiden.
Ich schaffte es dynamisch zu machen, aber alle meine Einträge sind jetzt vom Typ String:
"data": { "M" : {
#foreach($key in $input.path('$.data').keySet())
"$key" : {"S": "$input.path('$.data').get($key)"}#if($foreach.hasNext),#end
#end }
}
Ist es möglich, dynamisch den Typ zu bekommen? Ich bin mir nicht sicher, wie die API-Gateway-Zuordnung noch funktioniert.
Vielen Dank für Ihre Hilfe.
Seb
In der Tat mit Lambda war ich in der Lage, den Artikel ohne Mapping setzen mit Put statt Putitem wenn ich mich gut erinnere. Allerdings möchte ich Lambda nur wegen eines Mapping-Problems vermeiden, zumal wir eine große Anzahl von Einträgen bearbeiten wollen und wir vermeiden möchten, dass so viele Lambda-Prozesse ausgelöst werden – Seb