AWSのEC2に対してSessonManager経由で接続しdevcontainerを使用したい。
環境
ローカル
OS: Windows 10 Home
VSCode: 1.68.1
AWS CLI: 2.4.18
Session Manager plugin: 1.2.295.0
リモート
OS: Amazon Linux 2 Kernel 5.10
AMI: ami-0b7546e839d7ace12
インスタンスタイプ: t3.large
microはタイムアウトした
対応
EC2にDockerを入れてlocalのSSHの設定にProxyCommandを指定するだけ。
ローカルにDockerは必要ないそう。
以下、設定の流れ
VSCodeの Remote Development using SSH でリモート接続
リモート接続したEC2に Docker と docker-compose をインストール
devcontainerを起動
1. VSCodeの Remote Development using SSH でリモート接続
準備
SMSMがオンラインになるようEC2を起動
※ロールに注意
~/.ssh/configに接続対象の設定を以下のように追記
Host ec2 User ec2-user Port 22 ProxyCommand powershell.exe aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p HostName ${インスタンスID} IdentityFile ${秘密鍵のパス}
example
Host ec2
User ec2-user
Port 22
ProxyCommand powershell.exe aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p
HostName i-07ee5a633624f8c9c
IdentityFile ~/.ssh/aws_szk302.pem
接続
リモートエクスプローラからSSHターゲットを選択し、SSHのconfigに設定したhostを選択して接続する。
2. リモート接続したEC2に Docker と docker-compose をインストール
Dockerをインストール
sudo amazon-linux-extras install docker -y sudo usermod -aG docker $USER sudo systemctl enable docker sudo systemctl start docker
docker-composeをインストール
sudo curl -L --fail https://github.com/docker/compose/releases/download/1.29.2/run.sh -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
Tip | docker-composeはv1系が必要(docker-composeコマンドが使える必要がある) TIP: インストールしたら再接続すること |
3. devcontainerを起動
devcontainerを準備
devcontainer
.devcontainer
├── Dockerfile
├── devcontainer.json
└── docker-compose.yml
F1からいつも通りコンテナ環境を開く