🐡
ECSを通してローカルからRDSに接続する
この記事に書いてあること
- ecstaというツールでECS上のApplication ServerからDB Instanceにport fowardingする
- ツール選定を含めて別のやり方でも可能だが一例を記載する
- もっと良い方法があれば教えて下さい
構成
今回想定している構成は次の図の通りです。
ECS上にApplication Serverが存在し、RDSとの疎通は取れている状態です。
開発・運用においてRDSにローカルからアクセスしたいことがあった時、踏み台インスタンスを作成したりセキュリティに穴を増やしたくなかったので、既存のコンテナを流用してDBへport fowardingすることにしました。
ecsta
ecstaというecs taskを便利に扱うcliツールを用います。
// macの場合のecsta導入
$ brew install fujiwara/tap/ecsta
手順
ecstaでtask idを取得する
ecstaでport forwardingを行うには、当該taskのidが必要なため、これを取得します。
- aws profileを設定する
$ export AWS_PROFILE={任意のaws認証情報}
- タスクIDを取得する
$ ecsta describe
- cluster リストが表示される
{実行されているtask名}
Enter cluster name:
- 目的のcluster名を入力する
- taskの一覧が表示される
- 最新taskのtask idをコピーする
port fowarding
ecstaのport forwarding機能を実行します。
portが5432
のpostgresqlをlocalの15432
にマッピングしている例です。
ecsta portforward \
--id="{task id}" \
--cluster="{cluster name}" \
--remote-port=5432 \
--local-port=15432 \
--remote-host="{rds host name}"
成功すると
Starting session with SessionId: aws-go-sdk-{何らかの文字列}
というメッセージが表示されます。
DBクライアントから接続
任意のDBクライアントから
host: localhost
port: 15432
を指定することで接続ができます。
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion