LoginSignup
5
4

More than 5 years have passed since last update.

DockerコンテナからEC2へSSHポートフォワードしてRDSに接続する

Posted at

やりたいこと

ローカルのDockerコンテナから、AWSのEC2インスタンスへSSHポートフォワードで接続して、
RDSインスタンスで起動中のMySQLへ接続する。

はじめに

  • AWS上でEC2インスタンスへSSH接続する際の pemファイル をダウンロードしておく

Docker環境の構築

  • ダウンロードした pemファイル を 以下で作成する Dockerfileと同じディレクトリ に配置する
  • まずは適当にDockerfileを作成する
FROM ubuntu:18.04

RUN apt-get update -qq && apt-get install -y openssh-client mysql-client

ENV PEM_NAME 'ec2_test.pem'
ENV RDS_ENDPOINT 'hogehoge.fugafuga.ap-northeast-1.rds.amazonaws.com'
ENV EC2_USER 'ec2-user'
ENV EC2_HOST 'hogehoge.ap-northeast-1.compute.amazonaws.com'
ENV DATABASE_USER 'test-user'
ENV DATABASE_PASSWORD 'password'

COPY ${PEM_NAME} /tmp
COPY run.sh /tmp

CMD ["bash", "/tmp/run.sh"]
  • CMD内に書くと長くなり可読性が下がる気がしたので、SSH接続用のShellを作成
    • 作成したShellも同様に Dockerfileと同じディレクトリ に配置
run.sh
#!/bin/bash

ssh -4 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-f -N -L 3307:${RDS_ENDPOINT}:3306 \
-i /tmp/${PEM_NAME} ${EC2_USER}@${EC2_HOST}

mysql -h 127.0.0.1 -u ${DATABASE_USER} -P 3307 -p${DATABASE_PASSWORD}

Dockerイメージ作成と起動

  • 以下コマンドでDockerイメージを作成
docker build -t rds-test:0.1 .
  • いよいよDocker起動
docker run -it rds-test:0.1

これで mysqlのコンソール が起動すればOKです。

5
4
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
5
4