エンジニャーリング

技術ときどきネコ

セッションマネージャーが意外と使えた

EC2への接続はSSHで接続してましたが、セッションマネージャーを使えばIAMベース簡単に接続できた。

セッションマネージャーの利点

  • IAMで管理可能
  • 22番ポートを開けなくて良い
  • privateなEC2インスタンスにも接続可能
  • 踏み台がいらないんじゃない?
    • これはDBインスタンスへの接続する場合は踏み台が必要でした
    • その時もセッションマネージャーを通しての踏み台が可能

IAM1本で管理できるようになるので、SGで22番ポートにIPアドレス制限かけたりとかも気にしなくて良く、セキュリティ的にも安心。
これはやらない手はない。それではやってみよう。

AWS CLIのインストール・設定からEC2へ接続をするまで

AWS CLI v2のインストール

接続にはAWS CLIが必要となるので、ドキュメントの通りインストールを行います。なお、今回は最新のAWS CLI v2をインストールします。

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
which aws
  • /usr/local/bin/aws であればOK
aws --version
  • aws-cli/2.X.XX であればOK

Session Manager plugin のインストール

cd /tmp
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
unzip sessionmanager-bundle.zip
sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
session-manager-plugin
  • The Session Manager plugin was installed successfully. Use the AWS CLI to start a session. のように表示されればOK

aws configure でIAMユーザの設定情報をセット

$ aws configure
AWS Access Key ID [None]: AKIXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: KO8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json

ここまでで設定は完了

EC2接続確認

EC2インスタンスインスタンスID(i-XXXXXXXXXXXXXXXXX)を指定して接続する

aws ssm start-session --target i-XXXXXXXXXXXXXXXXX

ssmユーザーでログインします。(ススムくんと命名
このままだと、bashrcが読まれないので気になるようだったら自分で読み込む必要がある。

Starting session with SessionId: XXXXXXXXXX

sh-4.2$ source ~/.bashrc
[ssm-user@ip-xx-xx-xx-xx bin]$ cd
[ssm-user@ip-xx-xx-xx-xx  ~]$ 

これでec2-userで繋いだ時と同様な使い方ができるようになった。

2021/08/11 追記
これを使用するためには、EC2側にあらかじめSSM Agentのインストールが必要ですが、AmazonLinux2にはデフォルトでインストールされてるとのこと。
また、[AmazonSSMManagedInstanceCore]がアタッチされたiam roleを対象のEC2heアタッチする必要があります。