💭

VS CodeのRemote - SSHでAWSの環境変数を使う

に公開

VS CodeのRemote - SSHでEC2にSSM経由で接続するときに、~/.ssh/configを以下のようにしている。

Host myHost
  HostName i-0fd452b07ex53a96f
  Port 22
  IdentityFile ~/.ssh/aws.pem
  User ubuntu
  ProxyCommand /bin/sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

これで、ターミナルからはssh myHostできるようになる。

一方、VS CodeのRemote - SSHを使う場合は、環境変数をみてくれないので、AWS_SESSION_TOKENなどの一時的な情報を環境変数に設定して使っている場合は、認証ができない。VS Codeに設定しないといけない。

~/Library/Application\ Support/Code/User/settings.jsonに以下を追加する。

  "terminal.integrated.env.osx": {
    "AWS_ACCESS_KEY_ID": "${env:AWS_ACCESS_KEY_ID}",
    "AWS_SECRET_ACCESS_KEY": "${env:AWS_SECRET_ACCESS_KEY}",
    "AWS_SESSION_TOKEN": "${env:AWS_SESSION_TOKEN}",
    "AWS_DEFAULT_REGION": "${env:AWS_DEFAULT_REGION}"
  }

これで、一時的な情報を使っていても、EC2にRemote - SSHで接続できるようになった。

Discussion