はじめに
自分が所属している部署で利用できるAWS環境は、インバウンド通信は全て閉じられているため、基本的には、WebサーバーやSSHサーバーをインターネットに公開することはできず、公開したい場合は許可を得るのに多大な労力がかかります。
一方で、Session Managerを使った接続は許容されており、PCからはSession Manager Pluginを利用することで、EC2インスタンス内のWebサーバーやSSHサーバーにセキュアに接続することが出来て、インターネットに非公開の状態で動作テストを行うことが可能です。
モバイル端末でも、Session Manager Pluginを動作させることができないかと試してみたところ、うまく動作したので、Android向けアプリを作ってみました。
リポジトリはこちらです。
Releaseにビルド済みAndroidのバイナリを配置しています。
備考
アプリのバックグラウンドで、AWS公式の session-manager-plugin を動作させています。
session-manager-plugin をAndroidで利用する場合、通常のビルド(go build)だと、DNS関係でコネクションエラーが発生するため、Android NDKを利用してクロスビルドを行っています。
また、アプリがバックグラウンドに移動しても通信が切断されないように、Foreground Serviceを利用しています。
iOSはバックグラウンドの制限が厳しいため、現状はAndroidのみのパッケージ提供になります。

