grpcurlコマンドでNode-REDのGRPCサーバのメソッドを呼び出す

grpcurlコマンドでNode-REDのGRPCサーバのメソッドを呼び出す

前提

項目 バージョン
OS Ubuntu-20-04
grpcurl 1.8.6

evansほど高機能なツールではないですが、GRPC版のcurlコマンドです。

インストール

Linux(Ubuntu-20.04)環境にhomebrewをインストールする」参照

GRPCサーバ起動(Node-RED)

Node-REDでGRPCサーバを作成します。(node-red-contrib-grpcモジュール使用)

サーバ URL
Node-RED localhost:1880
GRPC Server localhost:8082

evansコマンドでNode-REDのGRPCサーバのメソッドを呼び出す

GRPCサーバリフレクションが有効であれば簡単にgrpcurlやevansでメソッド呼び出しができるのですが、無効になっている場合は.protoファイルを作成する必要があります。

node-red-contrib-grpcモジュールを使用している場合は、protoファイルが存在せず、ノード内に記載しますので、同じ内容のprotoファイルを無理矢理作成します。※他に良い方法あったら教えてください(grpc-callノードを使う以外で)

Node-RED起動すればGRPCサーバも起動します。

$ node-red

GRPCサーバ起動完了です。

grpcurlコマンドの使い方

grpcurlの使い方は以下の通りです。

grpcurl ホスト:ポート パッケージ.サービス.メソッド

もしくは以下です。

grpcurl ホスト:ポート パッケージ.サービス/メソッド

Failed to dial target host “ホスト:ポート”: tls: first record does not look like a TLS handshake

secure TLS、mutual TLSをサポートしているとの事ですが、オプション未指定の場合TLSとなるようです。

grpcurl supports both secure/TLS servers and plain-text servers (i.e. no TLS) and has numerous options for TLS configuration. It also supports mutual TLS, where the client is required to present a client certificate.

このエラーが出た場合は-plaintextオプションを使用します。

grpcurl -plaintext localhost:8081 package.ServiceName/HelloWorld

server does not support the reflection API

GRPCサーバがリフレクションをサポートしていない場合にこのエラーが出ます。

With this tool you can also browse the schema for gRPC services, either by querying a server that supports server reflection

この場合は、evansコマンド同様に.protoファイルの指定が必要になります。

GRPC call(WSL)

ではgrpcurlコマンドで呼び出します。

$ grpcurl -proto sample.proto list
hello.Greeter
$ grpcurl -d '{"id": 30, "name": "takahashi"}' -plaintext -proto sample.proto localhost:8082 hello.Greeter.HelloWorld
{
"message": "30:takahashi"
}

grpcurlコマンドでNode-REDのGRPCサーバのメソッドを呼び出す

sample.proto

syntax = "proto3";
package hello;

service Greeter {
  rpc HelloWorld(Request) returns (Reply) {}
}

message Request {
  int32 id = 1;
  string name = 2;
}

message Reply {
 string message = 1;
}

参考サイト

GitHub - fullstorydev/grpcurl: Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers - GitHub - fullstorydev/grpcurl: Like cURL,...

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました