BioErrorLog Tech Blog

試行錯誤の記録

Session Managerで自動実行コマンドを設定する | AWS Systems Manager

Session Managerでセッション開始時の自動実行コマンド(shell profiles)を指定する方法と、その利用例を整理します。

はじめに

こんにちは、@bioerrorlogです。

AWS Systems Manager(SSM)のSession ManagerでEC2インスタンスに接続すると、カレントディレクトリが/usr/binだったり、デフォルトのshellがbashでなくBourne shellだったりと、少し不便なことがあります。

これら接続時のデフォルト設定を変更するために、セッション開始時の自動実行コマンド(shell profiles)を指定する方法を整理します。

環境

EC2インスタンス: Amazon Linux 2
SSM agent version: 3.0.655.0

Session Managerの自動実行コマンドを設定する

自動実行コマンド(shell profiles)の設定方法

最初に、自動実行コマンドの設定方法を確認します。

まず、Systems Managerのマネジメントコンソールから、"セッションマネージャー"を選択します。


次に、"設定"タブを選択し、"編集"ボタンをクリックします。


下の方にスクロールし、"Linux shell profile"の欄に任意のコマンドを入力します(Windowsインスタンスの場合は、その下の"Windows shell profile"の欄に入力します)。


これで、上記の欄に記入されたコマンドがセッション開始時に実行されます。

それでは、以下に利用例を挙げていきます。

利用例) デフォルトshellをbashにする

Session Manager接続時には、デフォルトのshellがbashでなくBourne shellになっています。 以下のように接続画面でsh-4.2$と表示されているのがそれです。

sh-4.2$

これをデフォルトでbashにするには、"Linux shell profile"にbashコマンドを設定しておきます。

bash

これで、以下のようにセッション開始時からbashが指定された状態になります。

[ssm-user@ip-172-31-14-102 bin]$

利用例) カレントディレクトリを変更する

セッション開始時のカレントディレクトリは、デフォルトで/usr/binになっています。

sh-4.2$ pwd
/usr/bin

これをあらかじめ変更させておくには、"Linux shell profile"でcdコマンドを設定しておきます。 例えばユーザーディレクトリをデフォルトのカレントディレクトリとするには、以下のようにコマンドを設定しておきます。

cd ~

これで、ユーザーディレクトリに移動した状態から作業を始めることが出来ます。

sh-4.2$ pwd
/home/ssm-user

利用例) ログインユーザーを変更する

Session Managerでは、デフォルトでユーザーssm-userとして接続されています。

sh-4.2$ whoami
ssm-user

このログインユーザをあらかじめ変更させるには、"Linux shell profile"でsuコマンドを設定します。 例えばrootとしてログインしたいのであれば、以下のように設定しておきます。

sudo su -

これで、rootユーザーとして作業を始めることが出来ます。

[root@ip-172-31-14-102 ~]# whoami
root


これら以外にも任意のコマンドを組み合わせて、接続時の状態を自由に設定することが出来ます。

おわりに

今回は、Session Managerで自動実行コマンド(shell profiles)を設定する方法をその利用例を整理しました。

Session Managerは接続時の状態に何かと不便なことがあるので、これを利用すれば少しでもフラストレーションを緩和することが出来ます。

どなたかの参考になれば幸いです。

[関連記事]
www.bioerrorlog.work

www.bioerrorlog.work

参考

Allow configurable shell profiles - AWS Systems Manager