Skip to content

Repository files navigation

Google Cloud Node.js Client

Node.js idiomatic client for Google Cloud Platform services.

NPM VersionTravis Build StatusCoverage Status

This client supports the following Google Cloud Platform services:

If you need support for other Google APIs, check out the Google Node.js API Client library.

Quick Start

$ npm install --save gcloud

Example Applications

  • nodejs-getting-started - A sample and tutorial that demonstrates how to build a complete web application using Cloud Datastore, Cloud Storage, and Cloud Pub/Sub and deploy it to Google App Engine or Google Compute Engine.
  • gcloud-node-todos - A TodoMVC backend using gcloud-node and Datastore.
  • gitnpm - Easily lookup an npm package's GitHub repo using gcloud-node and Google App Engine.
  • gcloud-kvstore - Use Datastore as a simple key-value store.
  • hya-wave - Cloud-based web sample editor. Part of the hya-io family of products.

Authentication

With gcloud-node it's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Google Cloud services.

On Google Compute Engine

If you are running this client on Google Compute Engine, we handle authentication for you with no configuration. You just need to make sure that when you set up the GCE instance, you add the correct scopes for the APIs you want to access.

// Authenticating on a global basis.varprojectId=process.env.GCLOUD_PROJECT;// E.g. 'grape-spaceship-123'vargcloud=require('gcloud')({projectId: projectId});// ...you're good to go! See the next section to get started using the APIs.

Elsewhere

If you are not running this client on Google Compute Engine, you need a Google Developers service account. To create a service account:

  1. Visit the Google Developers Console.
  2. Create a new project or click on an existing project.
  3. Navigate to APIs & auth > APIs section and turn on the following APIs (you may need to enable billing in order to use these services):
  • Google Cloud Datastore API
  • Google Cloud Storage
  • Google Cloud Storage JSON API
  1. Navigate to APIs & auth > Credentials and then:
  • If you want to use a new service account, click on Create new Client ID and select Service account. After the account is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests.
  • If you want to generate a new key for an existing service account, click on Generate new JSON key and download the JSON key file.
// Authenticating on a global basis.varprojectId=process.env.GCLOUD_PROJECT;// E.g. 'grape-spaceship-123'vargcloud=require('gcloud')({projectId: projectId,keyFilename: '/path/to/keyfile.json'});// ...you're good to go! See the next section to get started using the APIs.

You can also set auth on a per-API-instance basis. The examples below show you how.

Google BigQuery

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).varbigquery=gcloud.bigquery({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Access an existing dataset and table.varschoolsDataset=bigquery.dataset('schools');varschoolsTable=schoolsDataset.table('schoolsData');// Import data into a table.schoolsTable.import('/local/file.json',function(err,job){});// Get results from a query job.varjob=bigquery.job('job-id');// Use a callback.job.getQueryResults(function(err,rows){});// Or get the same results as a readable stream.job.getQueryResults().on('data',function(row){});

Google Cloud Datastore

Follow the activation instructions to use the Google Cloud Datastore API with your project.

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).vardatastore=gcloud.datastore({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});varkey=datastore.key(['Product','Computer']);datastore.get(key,function(err,entity){console.log(err||entity);});// Save data to Datastore.varblogPostData={title: 'How to make the perfect homemade pasta',author: 'Andrew Chilton',isDraft: true};varblogPostKey=datastore.key('BlogPost');datastore.save({key: blogPostKey,data: blogPostData},function(err){// `blogPostKey` has been updated with an ID so you can do more operations// with it, such as an update.blogPostData.isDraft=false;datastore.save({key: blogPostKey,data: blogPostData},function(err){if(!err){// The blog post is now published!}});});

Google Cloud DNS

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).vardns=gcloud.dns({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Create a managed zone.dns.createZone('my-new-zone',{dnsName: 'my-domain.com.'},function(err,zone){});// Reference an existing zone.varzone=dns.zone('my-existing-zone');// Create an NS record.varnsRecord=zone.record('ns',{ttl: 86400,name: 'my-domain.com.',data: 'ns-cloud1.googledomains.com.'});zone.addRecord(nsRecord,function(err,change){});// Create a zonefile from the records in your zone.zone.export('/zonefile.zone',function(err){});

Google Cloud Pub/Sub

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you// auth on a global basis (see Authentication section above).varpubsub=gcloud.pubsub({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Reference a topic that has been previously created.vartopic=pubsub.topic('my-topic');// Publish a message to the topic.topic.publish({data: 'New message!'},function(err){});// Subscribe to the topic.topic.subscribe('new-subscription',function(err,subscription){// Register listeners to start pulling for messages.functiononError(err){}functiononMessage(message){}subscription.on('error',onError);subscription.on('message',onMessage);// Remove listeners to stop pulling for messages.subscription.removeListener('message',onMessage);subscription.removeListener('error',onError);});

Google Cloud Storage

Preview

varfs=require('fs');vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).vargcs=gcloud.storage({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Create a new bucket.gcs.createBucket('my-new-bucket',function(err,bucket){if(!err){// "my-new-bucket" was successfully created.}});// Reference an existing bucket.varbucket=gcs.bucket('my-existing-bucket');// Upload a local file to a new file to be created in your bucket.bucket.upload('/photos/zoo/zebra.jpg',function(err,file){if(!err){// "zebra.jpg" is now in your bucket.}});// Download a file from your bucket.bucket.file('giraffe.jpg').download({destination: '/photos/zoo/giraffe.jpg'},function(err){});// Streams are also supported for reading and writing files.varremoteReadStream=bucket.file('giraffe.jpg').createReadStream();varlocalWriteStream=fs.createWriteStream('/photos/zoo/giraffe.jpg');remoteReadStream.pipe(localWriteStream);varlocalReadStream=fs.createReadStream('/photos/zoo/zebra.jpg');varremoteWriteStream=bucket.file('zebra.jpg').createWriteStream();localReadStream.pipe(remoteWriteStream);

Google Compute Engine

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).vargce=gcloud.compute({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Create a new VM using the latest OS image of your choice.varzone=gce.zone('us-central1-a');varname='ubuntu-http';zone.createVM(name,{os: 'ubuntu'},function(err,vm,operation){// `operation` lets you check the status of long-running tasks.operation.onComplete(function(err,metadata){if(!err){// Virtual machine created!}});});

Google Prediction API

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).varprediction=gcloud.prediction({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Get all of the trained models in your project.prediction.getModels(function(err,models){if(!err){// `models` is an array of Model objects.}});// Reference an existing trained model.varmodel=prediction.model('my-existing-model');// Train a model.model.train('english','Hello from your friends at Google!',function(err){});// Query a model.model.query('Hello',function(err,results){if(!err){// results.winner == 'english'// results.scores == [// {// label: 'english',// score: 1// },// {// label: 'spanish',// score: 0// }// ]}});

Google Translate API

An API key is required for Translate. See Identifying your application to Google.

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).vartranslate=gcloud.translate({key: 'API Key'});// Translate a string of text.translate.translate('Hello','es',function(err,translation){if(!err){// translation = 'Hola'}});// Detect a language from a string of text.translate.detect('Hello',function(err,results){if(!err){// results = {// language: 'en',// confidence: 1,// input: 'Hello'// }}});// Get a list of supported languages.translate.getLanguages(function(err,languages){if(!err){// languages = [// 'af',// 'ar',// 'az',// ...// ]}});

Google Cloud Logging (Beta)

This is a Beta release of Google Cloud Logging. This API is not covered by any SLA or deprecation policy and may be subject to backward-incompatible changes.

// Authenticating on a global-basis. You can also authenticate on a per-API-// basis (see Authentication section above).vargcloud=require('gcloud')({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});varlogging=gcloud.logging();// Create a sink using a Bucket as a destination.vargcs=gcloud.storage();logging.createSink('my-new-sink',{destination: gcs.bucket('my-sink')},function(err,sink){});// Write a critical entry to a log.varsyslog=logging.log('syslog');varresource={type: 'gce_instance',labels: {zone: 'global',instance_id: '3'}};varentry=syslog.entry(resource,{delegate: process.env.user});syslog.critical(entry,function(err){});// Get all entries in your project.logging.getEntries(function(err,entries){if(!err){// `entries` contains all of the entries from the logs in your project.}});

Google Cloud Resource Manager (Beta)

This is a Beta release of Google Cloud Resource Manager. This feature is not covered by any SLA or deprecation policy and may be subject to backward-incompatible changes.

Preview

vargcloud=require('gcloud');// Authorizing on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authorization section above).varresource=gcloud.resource({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Get all of the projects you maintain.resource.getProjects(function(err,projects){if(!err){// `projects` contains all of your projects.}});// Get the metadata from your project. (defaults to `my-project`)varproject=resource.project();project.getMetadata(function(err,metadata){// `metadata` describes your project.});

Google Cloud Vision (Beta)

This is a Beta release of Google Cloud Vision. This feature is not covered by any SLA or deprecation policy and may be subject to backward-incompatible changes.

Preview

vargcloud=require('gcloud');// Authorizing on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authorization section above).varvision=gcloud.vision({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Read the text from an image.vision.detectText('./image.jpg',function(err,text){// text = [// 'This was text found in the image',// 'This was more text found in the image'// ]});// Detect faces and the locations of their features in an image.vision.detectFaces('./image.jpg',function(err,faces){// faces = [// {// angles: {pan,tilt,roll},// bounds: {// head: [{x,y},{x,y},{x,y},{x,y}],// face: [{x,y},{x,y},{x,y},{x,y}]// },// features: {// confidence: 34.489909,// chin: {// center: {x,y,z},// left: {x,y,z},// right: {x,y,z}// },// ears: {// left: {x,y,z},// right: {x,y,z}// },// eyebrows: {// left: {// left: {x,y,z},// right: {x,y,z},// top: {x,y,z}// },// right: {// left: {x,y,z},// right: {x,y,z},// top: {x,y,z}// }// },// eyes: {// left: {// bottom: {x,y,z},// center: {x,y,z},// left: {x,y,z},// pupil: {x,y,z},// right: {x,y,z},// top: {x,y,z}// },// right: {// bottom: {x,y,z},// center: {x,y,z},// left: {x,y,z},// pupil: {x,y,z},// right: {x,y,z},// top: {x,y,z}// }// },// forehead: {x,y,z},// lips: {// bottom: {x,y,z},// top: {x,y,z}// },// mouth: {// center: {x,y,z},// left: {x,y,z},// right: {x,y,z}// },// nose: {// bottom: {// center: {x,y,z},// left: {x,y,z},// right: {x,y,z}// },// tip: {x,y,z},// top: {x,y,z}// }// },// confidence: 56.748849,// blurry: false,// dark: false,// happy: false,// hat: false,// mad: false,// sad: false,// surprised: false// }// ]});

Google Cloud Search (Alpha)

This is an Alpha release of Google Cloud Search. This feature is not covered by any SLA or deprecation policy and may be subject to backward-incompatible changes.

Preview

vargcloud=require('gcloud');// Authenticating on a per-API-basis. You don't need to do this if you auth on a// global basis (see Authentication section above).varsearch=gcloud.search({projectId: 'my-project',keyFilename: '/path/to/keyfile.json'});// Create a document in a new index.varindex=search.index('memberData');vardocument=index.document('member-id-34211');document.addField('preferredContactForm').addTextValue('phone');index.createDocument(document,function(err,document){console.log(err||document);});// Search an index and get the results as a readable object stream.varindex=search.index('memberData');index.search('preferredContactForm:phone').on('error',console.error).on('data',function(document){// document.id = 'member-id-34211';}).on('end',function(){// All results consumed.});

Contributing

Contributions to this library are always welcome and highly encouraged.

See CONTRIBUTING for more information on how to get started.

License

Apache 2.0 - See COPYING for more information.

About

Google Cloud Node Client Library

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages