How use dynamoose in aws lambda function? - node.js

Actually, I am new to AWS Lambda functions and Amazon DynamoDB,
so I could not find a way to create a table with a Dynamoose schema and create CRUD operation with it.
I am familiar with mongoose and I read that Dynamoose is inspired by it.
So, can anybody tell me how to create CRUD operations in Lambda by using Dynamoose schema?

In the same way, you would create the CRUD operations without the lambda. The difference is that you create one crud operation per lambda function/API endpoint and that you need to create an appropriate lambda execution role. Also, you will need to bundle the dependencies with the function.

Related

How to create mock for AWS resources like dynamoDB for local development in nodejs lambda?

Does anyone know how can I mock AWS resources and their operations for local development? Currently I have a lambda that inserts values into dynamoDB. I'm not looking for test case purpose (will need these later on), but if possible I can do these operations without calling actual services?
Currently I have created a mockdb.js file with similar values of dynamoDB but to run the code everytime on my machine, I have to comment out the actual aws code and mention-
import {data} from '../mockdb.js';
const list = insertTable(data) // everytime I have to add this instead of aws dynamoDB sdk
Is their a easier way? Eg. For react applications we have mockservers to mimic route responses?
There is no easy way to test and develop all AWS services locally but there are some solutions which cover some services and use cases (the list is not exhaustive):
Localstack: https://github.com/localstack/localstack
SAM framework allows local testing and developing for some services (Lambdas and API Gateway): https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-test-and-debug.html
There is a downloadable local version for DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
For missing services you have to develop your own mock services/functions and use them for developing testing.

Sequelize: preview sync query without executing it

I'm trying to make an application with node.js and sequelize ORM. I learnt about the function Sequelize.sync() to update database schema based on the app model.
Is there a way to log the SQL statements that Sequelize.sync() would run without executing them?
I'm used to Doctrine ORM where such a thing is possible and quite convenient (it allows to double-check your model before actually persisting it to the DB).
Is there a way to do it with sequelize too?
Thanks

How to use batchWriteItem on Appsync with Resolver

I have a problem with Appsync, Dynamodb on Amazon
So I want to delete multi rows on table. I used batchWriteItem but it showed "operation unsuportted it" on Resolver
So how to use batchWriteItem for delete multi rows.
Thanks.
Batch operations with DynamoDB resolvers in AWS AppSync are:
BatchPutItem
BatchGetItem
BatchDeleteItem
This will also require a "tables" key in your resolver configuration where you can perform these operations against one or multiple tables in a single GraphQL query or mutation.
With a DynamoDB data source you'll also find these listed in the sample templates in the console.
You can find an in-depth tutorial here: https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html

How to execute HTTP DELETE request in AWS Lambda Nodejs function

I am trying to create an AWS Lambda transform function for a Firehose stream that sends records directly to an Elasticsearch cluster.
Currently, there is no way to specify an ES document id in a Firehose stream record, so all records, even duplicates, are inserted. However, Firehose does support transformation functions hosted in Lambda, which gave me an idea:
My solution is to create a Lambda transform function that executes a DELETE request to Elasticsearch for every record during transformation, then returning all records unmodified, thereby achieving "delete-insert" behaviour (I am ok with the record disappearing for a short period).
However, I know very little about Nodejs and even though this is such a simple thing, I can't figure out how to do it.
Is there a Node package available to Lambda that I can use to do this? (Preferably an AWS Elasticsearch API, but a simple HTTP package would do).
Do I have to package up some other module to get this done?
Can something like Apex help me out here? My preferred language is Go, but so far I have been unable to get apex functions to execute or log anything to Cloudwatch...
Thanks in advance.
It seems a simple task to do, so I guess no framework is needed.
A few lines of code in Node.js would get the things done.
There are two packages that can help you:
elasticsearch-js
http-aws-es (If your ES domain is protected and you need to sign the requests)
The API doc: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html

AWS simple Crud operation

I am new to AWS. for initial understanding i need..
full flow from Angularjs(which i know) -> api gateway(i know) -> lambda(node.js) -> dynamodb.
i am looking for simple CRUD operation samples. i know how to write code in Angular, APIGateway but struggling out with Lambda(Node.js) for writing code that can perform CRUD operation on dynamodb Table.
can any one please provide link or sample project which contain sample code in node.js. (i have googled it a lot but couldnt find out straight away samples) i am also following aws document site. but i feel its slightly complex or i am stupid :) )
Thanks in advance.
I have an example project which shows how to use vogels (a DynamoDB data mapper for nodejs) with lambda. Currently, the project just has a single function which writes data to a DynamoDB table, but would be easy to add more CRUD functions.

Resources