ngrokでgRPC接続を受ける


概要

まんまtcp扱いでいけた。tls endpointとしても動作してくれる。

無料アカウントでtcp reservedを使わないと毎回ポートが変わるが、それはそれでセキュアでいいな。



実際

難しかったのはngrokのgo sdk 2.0の使い方で、ローカルで動くgRPCサーバの8080番に対して、

ngrokでtcpを受け付ける接続を立てるには以下の感じだった。



    // ngrokのセットアップ

    authToken := os.Getenv("NGROK_AUTHTOKEN")

    // ngrokの接続を行う

    l, err := ngrok.Forward(

        context.Background(),

        ngrok.WithUpstream("tcp://localhost:8080"),

        ngrok.WithURL("tcp://"),

    )



前提としてngrokのagentがインストールしてあり、環境にNGROK_AUTHTOKENがセットされている必要がある。