LoginSignup
1
0

More than 1 year has passed since last update.

SSMでリモートホストにPortForwardingする

Posted at

はじめに

下記アップデートにて、SSMのドキュメントでPortForwardingができるようになりました。
https://aws.amazon.com/jp/about-aws/whats-new/2022/05/aws-systems-manager-support-port-forwarding-remote-hosts-using-session-manager/

リンク先のドキュメントは何も書いてないに等しかったので、調査がてら試してみることにしました。
(尚、コンソールのセッションマネージャーやRunCommandからできたら楽だったのですが、現状はできない模様です)

やりたいこと

今回はローカルPCからプライベートサブネット上のDocumentDBにログインしてみます。

【接続経路】
ローカルPC(WSL2)→EC2(AmazonLinux2)→DocumentDB(Port:27017)

※接続先がDocumentDBなのは今案件で使っていて試しやすかっただけで他意はないです(EC2やRDSでも可能です)
※そのせいでMongo-shellの実行環境を作る必要があって地味にめんどくさかったのは秘密

事前準備

PortForwarding用のEC2インスタンスを作成します。
基本デフォルト(キーペアもSGのインバウンドルールも不要)で問題ないですが、セッションマネージャーで接続ができることが前提なので「AmazonSSMManagedInstanceCore」権限のあるインスタンスプロファイル(IAMロール)をアタッチしてあれば良いです。

また、PortForwardingはSSMエージェントのバージョンが「3.1.1374.0以降」である必要があります。
尚、今日時点のAmazonLinux2のAMIにデフォルトで入っているエージェントは地味にバージョンが足りないので、利用する場合は手動アップデートが必要になります。
(昨日今日に追加された機能なので、そのうち更新されると思います)

※今日起動したインスタンスのSSMエージェントバージョン

# rpm -qa | grep -i ssm 
amazon-ssm-agent-3.1.1188.0-1.amzn2.x86_64

※バージョンアップ手順はこちら
https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-al2.html
※更新後のバージョン

# rpm -qa | grep -i ssm 
amazon-ssm-agent-3.1.1446.0-1.x86_64

接続コマンド

SSMドキュメント名は「AWS-StartPortForwardingSessionToRemoteHost」です。
詳細はドキュメントの説明(SSMのコンソールから見れます)に譲りますが、パラメータにローカル/リモートのポートと転送先のホスト(今回はDocumentDBのエンドポイント)を設定すれば接続できます。

$ aws ssm start-session --target i-xxxxxxxxxxxx --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters 'portNumber=27017,localPortNumber=27017,host=docdb.cluster-abcdefghij.ap-northeast-1.docdb.amazonaws.com'

Starting session with SessionId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
Port 27017 opened for sessionId xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
Waiting for connections...

実行後、別画面でlocalhost宛てに接続すれば転送先にログインできます。

$ mongo --host localhost:27017 --username mongo
MongoDB shell version v4.4.14
Enter password: 
connecting to: mongodb://localhost:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c5988ed1-5497-4e17-9138-16ae18b0b71e") }
MongoDB server version: 4.0.0

(※中略)

rs0:PRIMARY>

参考

WSL2でMongo-shellを使いたい場合、単にaptではインストールできないようです。
自分は下記サイトを参考にしました。
(DBが必要なわけではないのでmongodb-org-shellのみインストールしました)
https://www.lisz-works.com/entry/mongodb-wsl-ubuntu

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0