AWSのEC2に対してSessonManager経由で接続しdevcontainerを使用したい。
@startuml
!include <awslib/AWSCommon>
!include <awslib/GroupIcons/Cloud>
!include <awslib/General/Client>
!include <awslib/Compute/EC2>
' !include <awslib/ManagementGovernance/SystemsManager>
left to right direction
Cloud(aws,"AWS","aws") {
node systemsManager
EC2(ec2,EC2,インスタンス) {
agent ssmagent
agent docker
node container
}
}
Client(client, "VSCode", "local") {
agent sessionManagerPlugin
}
client --> container :ssm経由での接続
@enduml
対応
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.pem2. リモート接続した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: インストールしたら再接続すること |