GCP Cloud Storage support for Node.js

Introduction

Google Cloud Storageexternal link is a file storage service in the cloud. This is the equivalent service to Amazon S3 provided by Google Cloud Platform (GCP). CAST supports the three relevant classes @google-cloud/storageexternal link for CRUD-like link creation:

  • Storage
  • Bucket
  • File

Objects

This extension, when the NodeJS client library for Google Storage is found in the source code, may create the following objects representing Storage buckets. When the name of a given referred bucket in the code is not resolved (either because of unavailable data or required technical complexity), an unknown bucket object will be created with name Unknown. There can be a maximum of one unknown table per project.

Icon Object Name
NodeJS GCP Cloud Storage Bucket Name of the bucket
NodeJS GCP Unknown Cloud Storage Bucket Unknown

API methods

A Storage Bucket object will be created when its name is resolved in calls to the method Storage.bucket() for example*. *The two methods creating objects:

API method Object creation
Storage.bucket() NodeJS GCP (Unknown) Cloud Storage Bucket
Storage.createBucket() NodeJS GCP (Unknown) Cloud Storage Bucket

Method calls involving CRUD-like operations are represented with links from the respective caller objects to Storage Buckets. The supported methods are listed in the table below:

CRUD-like API methods Link type
Bucket.combine() useInsertLink, useUpdateLink
Bucket.deleteFiles() useDeleteLink
Bucket.upload() useInsertLink, useUpdateLink
File.copy() useSelectLink, useInsertLink, useUpdateLink
File.createReadStream() useSelectLink
File.createWriteStream() useInsertLink, useUpdateLink
File.delete() useDeleteLink
File.download() useSelectLink
File.save() useInsertLink, useUpdateLink

Example

The following code illustrates a simple utilization of the NodeJS SDK for downloading a file from Google Storage:

downloadFile.js

const bucketName = 'myBucketName';
const {Storage} = require('@google-cloud/storage');

// Client
const storage = new Storage();

async function downloadFile() {
    
    const options = {
      destination: 'destFileName',
    };

    // Downloads the file
    await storage.bucket(bucketName).file(fileName).download(options);
}

When the code listed above is analyzed, a corresponding bucket object and a useSelectLink link is created:

Limitations

  • Files-list parameters from callbacks of Bucket.getFiles() and Bucket.getFilesStream() are not interpreted.