sshでできるような単発コマンドをセッションマネージャーで実行する
ssh
ではコマンドの最後にリモートホスト上で実行したいコマンドを記述すると、そのコマンドを実行した上で接続を切断する。
例えばssh ホスト ls -l
のように実行するとリモートホスト上でls -l
コマンドを実行する。
AWS CLIによるセッションマネージャーでの接続でも同様に単発コマンドを実行できる。aws ssm start-session
コマンドに--document-name AWS-StartNonInteractiveCommand
オプションを付けて以下のように実行する。
$ aws ssm start-session \
--target <EC2インスタンスID> \
--document-name AWS-StartNonInteractiveCommand \
--parameters '{"command": ["コマンド"]}'
例えばls /home
コマンドを実行するには以下のようになる。
$ aws ssm start-session \
--target <EC2インスタンスID> \
--document-name AWS-StartNonInteractiveCommand \
--parameters '{"command": ["ls /home"]}'
Starting session with SessionId: xxx-xxxxxxxxxxxxxxxxx
ec2-user
ssm-user
Exiting session with sessionId: xxx-xxxxxxxxxxxxxxxxx.
コマンドの結果は標準出力・標準エラーに出力される
コマンドの標準出力・標準エラーはこのコマンドの標準出力・標準エラーとなるので、ローカルでリダイレクトしたり、パイプでつなげたりできる。
$ aws ssm start-session \
--target <EC2インスタンスID> \
--document-name AWS-StartNonInteractiveCommand \
--parameters '{"command": ["ls /home"]}' | grep ec2-user
ssm-user
\手を動かしながらTerraformを学びたい人にオススメ!/