He estado investigando AWS AppSync para crear una API GraphQL administrada con DynamoDB como almacén de datos. Sé que AppSync puede usar Apache Velocity Template Language como un solucionador para obtener datos de dynamoDB. Sin embargo, eso significa que tengo que introducir un lenguaje adicional en la pila de programación, por lo que preferiría escribir los resolutores en Javascript/Node.js.
¿Hay alguna desventaja de usar una función lambda para obtener datos de DynamoDB? ¿Qué razones hay para usar VTL en lugar de una lambda para resolver?
Hay ventajas y desventajas en el uso de funciones lambda como sus solucionadores de AppsSync (aunque tenga en cuenta que aún necesitará invocar sus lambdas desde VTL):
ventajas
long en su tabla de DynamoDB (los tipos de números de DynamoDB admiten long , pero los solucionadores de AppSync solo admiten números enteros de 32 bits. Puede evitar esto si usa un lambda, por ejemplo, serializando largos en una cadena antes del transporte a través de la capa de resolución de AppSync) - Ver (actualmente) solicitud de función abierta: https://github.com/aws/aws-appsync-community/issues/21Contras
Si está haciendo una operación simple de DynamoDB de vainilla, vale la pena probar los VTL. Los documentos de AWS son bastante buenos para esto: https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html
Si está haciendo algo levemente complejo, como ordenar campos, bucles o, en general, código pirateado no seco, definitivamente vale la pena considerar las lambdas por la velocidad de escritura y mantenimiento de su código, siempre que se sienta cómodo con la latencia y el costo adicionales. .