【macOSで動作確認済み】開発環境用にEC2インスタンスを作成し、SSM Session ManagerとVS Codeを使ってSSH接続する

記事タイトルとURLをコピーする

はじめに

こんにちは、サービス開発課の行武です。

今回は、開発環境用にAmazon EC2インスタンス(Amazon Linux2)を作成し、ローカルのMacBookでSSH接続の設定をして、VS CodeからSSH接続するまでの手順を備忘録としてまとめます。

本記事がなにかの参考になれば幸いです。

【関連】

Amazon Linux 2023を利用するパターンの記事も書きました。

環境情報

本記事の内容は、以下の環境で動作を確認しました。

環境情報 バージョン
macOS Monterey 12.5
AWS CLI 2.7.27
Session Manager Plugin 1.2.339.0
VS Code 1.70.2

EC2インスタンスの作成

Amazon EC2コンソールにアクセスし、以下の設定内容でEC2インスタンスを起動します。 特筆すべき項目については表の下で補足します。

項目 設定内容
Name 任意の値
AMI Amazon Linux2(最新バージョン)
VPC 任意のVPC
Subnet 任意のSubnet
セキュリティーグループ 任意のセキュリティーグループ
IAMインスタンスプロファイル 適切なIAMポリシーが適用されたIAMロール
EBSボリュームタイプ GP3
EBSボリュームサイズ 30GiB
キーペア 任意のキーペア

セキュリティーグループについて

今回は通常のSSH接続ではなく、Session ManagerとVS Codeを使ったSSH接続を行うため、SSH用のインバウンドルールを追加しません。

IAMインスタンスプロファイルについて

IAMインスタンスプロファイルは、EC2インスタンス起動画面の下部にある「高度な詳細」を開くことで設定できます。

Session ManagerとVS Codeを使ったSSH接続をする際、対象のEC2インスタンスにはAWS Systems Managerへのアクセス権限が必要です。

そのため、IAMポリシー AmazonSSMManagedInstanceCore を追加したIAMロールを新たに作成し、IAMインスタンスプロファイルに設定します。

キーペアについて

SSH接続するため、キーペア(RSA・.pem)を作成して、秘密鍵をローカルPCにダウンロードしておきます。

EC2インスタンスの起動

設定が終わったら、EC2インスタンスを起動します。

Session ManagerとVS Codeを使ったSSH接続の設定

通常のSSH接続ではなく、Session ManagerとVS Codeを使ったSSH接続を行うための設定を行います。

なお、Session ManagerとVS Codeを使ったSSH接続の方法は、以下の記事で詳しく解説されていますので、合わせてご参照ください。

https://blog.serverworks.co.jp/vscode-remote-ssh-via-session-manager

必要なツールのインストール

以下のツールをインストールして、初期設定をします。

設定ファイルに接続情報を追記

リモートSSH接続の接続情報を設定ファイル(Users/ユーザー名/.ssh/config)に追記します。

  • VS Codeを開き、[⌘ + shift + p]を同時押しします。
  • 表示された入力欄に Remote-SSH: Open SSH Configuration File と入力します。
  • 表示された /Users/ユーザー名/.ssh/config をクリックします。
  • 表示されたテキストファイルに以下のような内容を追記します。
    • Host, HostName, IdentityFileの内容を変更してください。
      • Host: 接続先を選択する時に表示されます。任意の名前を入力してください。
      • HostName: 接続先のEC2インスタンスのインスタンスIDを入力してください。
      • IdentityFile: SSH接続用の秘密鍵のパスを入力してください。
Host DEV
  ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession"
  HostName i-000000000000
  User ec2-user
  IdentityFile /Users/ユーザー名/.ssh/my-key-pair.pem

秘密鍵の配置と権限設定

ダウンロードした秘密鍵を配置します。

mv my-key-pair.pem /Users/ユーザー名/.ssh/my-key-pair.pem

秘密鍵に適切な権限を設定します。

chmod 600 /Users/ユーザー名/.ssh/my-key-pair.pem

Session ManagerとVS Codeを使ってSSH接続

ここまでの設定が完了したら、Session ManagerとVS Codeを使って、EC2インスタンスにSSH接続します。

  • VS Codeを開き、[⌘ + shift + p]を同時押しします(Windowsの場合は、[ctrl + shift + p])。
  • 表示された入力欄に Remote-SSH: Connect to Host と入力します。
  • 設定ファイルに追加したHost名をクリックします。
  • 表示されたダイアログで「linux」「continue」をクリックします。

以上で、EC2インスタンスにSSH接続できるかと思います。

トラブルシューティング

もしうまく接続できないときは、以下の点を再度ご確認ください。

  • VS Codeを再起動して、改めてSSH接続を試みる。
  • 秘密鍵に適切な権限を付与する。
  • 必要なツールをインストールする。
    • AWS CLI
    • Session Manager Plugin
    • VS Code
    • VS Code拡張機能「Remote Development」
  • AWS CLIの初期設定をする。
  • 設定ファイル(Users/ユーザー名/.ssh/config)に接続情報を正しく記載する。
  • EC2インスタンスに適切なIAMインスタンスプロファイルを設定する。

おわりに

ご覧いただき、ありがとうございました!

次回以降、開発用EC2インスタンスの初期設定と各種ツールのインストールについて紹介する予定です。

【続編の記事】

行武 直人 (記事一覧)

2020年4月 新卒入社
サービス開発部サービス開発課所属

2024 AWS ALL Certifications Engineers
Railsアプリ開発者
@zhiren1211