gRPC-GCP for Node.js
A Node.js module providing grpc supports for Google Cloud APIs.
Installation
npm install grpc-gcp --save
Usage
Let's use Spanner API as an example.
First, Create a json file defining API configuration, with ChannelPoolConfig and MethodConfig.
{
"channelPool": {
"maxSize": 10,
"maxConcurrentStreamsLowWatermark": 1
},
"method": [
{
"name": [ "/google.spanner.v1.Spanner/CreateSession" ],
"affinity": {
"command": "BIND",
"affinityKey": "name"
}
},
{
"name": [ "/google.spanner.v1.Spanner/GetSession" ],
"affinity": {
"command": "BOUND",
"affinityKey": "name"
}
},
{
"name": [ "/google.spanner.v1.Spanner/DeleteSession" ],
"affinity": {
"command": "UNBIND",
"affinityKey": "name"
}
}
]
}Load configuration to ApiConfig.
// @grpc/grpc-js can be used in place of grpc with no changes var grpc = require('grpc'); var grpcGcp = require('grpc-gcp')(grpc); var fs = require('fs'); var apiDefinition = JSON.parse(fs.readFileSync('your_api_config_json_file')); var apiConfig = grpcGcp.createGcpApiConfig(apiDefinition);
Pass gcpChannelFactoryOverride and gcpCallInvocationTransformer to channel options when initializing api client.
var channelOptions = { channelFactoryOverride: grpcGcp.gcpChannelFactoryOverride, callInvocationTransformer: grpcGcp.gcpCallInvocationTransformer, gcpApiConfig: apiConfig, }; var client = new SpannerClient( 'spanner.googleapis.com:443', channelCreds, channelOptions );
Build from source
Download source.
git clone https://github.com/GoogleCloudPlatform/grpc-gcp-node.git && cd grpc-gcp-node
git submodule update --init --recursive
Build grpc-gcp.
Test
Setup credentials. See Getting Started With Authentication for more details.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/key.jsonRun unit tests.
Run system tests.