Illustration Image

Cassandra.Link

The best knowledge base on Apache Cassandra®

Helping platform leaders, architects, engineers, and operators build scalable real time data platforms.

10/23/2020

Reading time:2 min

DataStax-Examples/google-cloud-functions-nodejs

by DataStax-Examples

This example shows how to use Google Cloud Functions with the Node.js DataStax Cassandra Driver to set up a basic REST API for a Cassandra database via HTTP Endpoints. The Serverless Framework is used to facilitate the setup and deployment of the functions.Contributor(s): Chris SplinterObjectivesHow to use the DataStax Cassandra Driver with Google Cloud FunctionsHow to use the Serverless Framework to set up Google Cloud Functions HTTP EndpointsProject Layoutindex.js: Contains the Cassandra Driver connection and queries as well as the Google Cloud Function entry points.serverless.yml: Used by serverless to deploy and configure the Google Cloud artifacts needed to run the function.package.json: Defines the dependencies and descriptive example metadata.How it worksThe Serverless Framework handles the packaging and deployment of the functions to the Google Cloud resources. Once the functions are deployed, the DataStax Cassandra Driver establishes the connection to the database and returns the results via the Google Cloud HTTP Endpoints which can be accessed to interact with the database.Setup & RunningSetupBefore running with this example, head over to the SETUP-README for instructions on how tolaunch an instance in Google Cloudinstall and start a Cassandra databasesetup your local development environment for Node.js and serverlessOnce the above is completed, you will have all of the needed pieces in place to run this example.Clone this repositorygit clone https://github.com/DataStax-Examples/google-cloud-functions-nodejs.gitGo to the google-cloud-functions-nodejs directorycd google-cloud-functions-nodejsInstall the DataStax Cassandra Drivernpm install cassandra-driverInstall serverless-google-cloudfunctions pluginnpm install serverless-google-cloudfunctionsConfigure serverless.yml with your project-id, credentials file, Contact Points ( public IP of GCP instance ), and Local Data Center ( likely datacenter1 )RunningFrom the project directory, deploy your function. This should output the endpoints that you can use to access the database.sls deployWhen you are done, don't forget to clean things up withsls removeUsing the HTTP EndpointscreateCatalogcurl -X POST https://us-central1-<project-id>.cloudfunctions.net/createCatalogexpected output:"Successfully created shopping.catalog schema"addItemNote the -H "Content-Type:application/json" is required here.curl -X POST -H "Content-Type:application/json" -d '{"item_id": 0, "name": "name_0", "description": "desc_0", "price": 10.1}' https://us-central1-<project-id>.cloudfunctions.net/addItemexpected output:{"query":"INSERT INTO shopping.catalog (item_id, name, description, price) VALUES (?, ?, ?, ?)","item_id":0,"name":"name_0","description":"desc_0","price":10.1}getItemcurl -X GET https://us-central1-<project-id>.cloudfunctions.net/getItem/0expected output:{"query":"SELECT name, description, price FROM shopping.catalog WHERE item_id = ?","item_id":["0"],"name":"name_0","description":"desc_0","price":"10.1"}

Illustration Image

This example shows how to use Google Cloud Functions with the Node.js DataStax Cassandra Driver to set up a basic REST API for a Cassandra database via HTTP Endpoints. The Serverless Framework is used to facilitate the setup and deployment of the functions.

Contributor(s): Chris Splinter

Objectives

  • How to use the DataStax Cassandra Driver with Google Cloud Functions
  • How to use the Serverless Framework to set up Google Cloud Functions HTTP Endpoints

Project Layout

  • index.js: Contains the Cassandra Driver connection and queries as well as the Google Cloud Function entry points.
  • serverless.yml: Used by serverless to deploy and configure the Google Cloud artifacts needed to run the function.
  • package.json: Defines the dependencies and descriptive example metadata.

How it works

The Serverless Framework handles the packaging and deployment of the functions to the Google Cloud resources. Once the functions are deployed, the DataStax Cassandra Driver establishes the connection to the database and returns the results via the Google Cloud HTTP Endpoints which can be accessed to interact with the database.

Setup & Running

Setup

Before running with this example, head over to the SETUP-README for instructions on how to

  1. launch an instance in Google Cloud
  2. install and start a Cassandra database
  3. setup your local development environment for Node.js and serverless

Once the above is completed, you will have all of the needed pieces in place to run this example.

  1. Clone this repository
git clone https://github.com/DataStax-Examples/google-cloud-functions-nodejs.git
  1. Go to the google-cloud-functions-nodejs directory
cd google-cloud-functions-nodejs
  1. Install the DataStax Cassandra Driver
npm install cassandra-driver
  1. Install serverless-google-cloudfunctions plugin
npm install serverless-google-cloudfunctions
  1. Configure serverless.yml with your project-id, credentials file, Contact Points ( public IP of GCP instance ), and Local Data Center ( likely datacenter1 )

Running

From the project directory, deploy your function. This should output the endpoints that you can use to access the database.

sls deploy
  • When you are done, don't forget to clean things up with
sls remove

Using the HTTP Endpoints

createCatalog

curl -X POST https://us-central1-<project-id>.cloudfunctions.net/createCatalog

expected output:

"Successfully created shopping.catalog schema"

addItem

Note the -H "Content-Type:application/json" is required here.

curl -X POST -H "Content-Type:application/json" -d '{"item_id": 0, "name": "name_0", "description": "desc_0", "price": 10.1}' https://us-central1-<project-id>.cloudfunctions.net/addItem

expected output:

{"query":"INSERT INTO shopping.catalog (item_id, name, description, price) VALUES (?, ?, ?, ?)","item_id":0,"name":"name_0","description":"desc_0","price":10.1}

getItem

curl -X GET https://us-central1-<project-id>.cloudfunctions.net/getItem/0

expected output:

{"query":"SELECT name, description, price FROM shopping.catalog WHERE item_id = ?","item_id":["0"],"name":"name_0","description":"desc_0","price":"10.1"}

Related Articles

api.management
node
api

LoopBack

John Doe

3/7/2024

Checkout Planet Cassandra

Claim Your Free Planet Cassandra Contributor T-shirt!

Make your contribution and score a FREE Planet Cassandra Contributor T-Shirt! 
We value our incredible Cassandra community, and we want to express our gratitude by sending an exclusive Planet Cassandra Contributor T-Shirt you can wear with pride.

Join Our Newsletter!

Sign up below to receive email updates and see what's going on with our company

Explore Related Topics

AllKafkaSparkScyllaSStableKubernetesApiGithubGraphQl

Explore Further

node