Run Commandでシェルスクリプトを実行してみる
こんにちは。中村です。
はじめに
ひとコマンド実行したいだけなのに、踏み台サーバー経由してEC2サーバーに接続してコマンド実行しなければならない。
面倒だな。と思った経験はありませんか?
今回は、System ManagerのRun Commandを利用して、マネジメントコンソールからシェルを実行する方法をご紹介します。
やってみる
前提条件
- 下記ブログを参考に、マネージドインスタンスをデプロイする
- ただし、テンプレートの一部を修正し、EC2インスタンスに権限を追加する
Resources:
EC2IAMRole:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
やってみた
- AWS Systems Manager(以下、SSM)サービスを表示させ、左ペインにある「ノード管理」の「Run Command」を押下し、Run Command画面を表示させる。
- コマンドタブ内で、「Run command」を押下する。
- コマンドドキュメントにて、「AWS-RunShellScript」を選択する。
- 実行するコマンドを入力する。
オプションで作業ディレクトリを指定します。今回は、/home/ec2-user
を指定します。
- ターゲットに、実行対象のインスタンスを選択する。
※ターゲットにインスタンスが表示されない場合は、対象インスタンスがSSMを利用できるマネージドインスタンスとなっていない可能性があります。特に、プライベートサブネット上に配置したインスタンスをSSMで管理されたい場合は、下記記事を参考に設定状況をご確認ください。
-
出力オプションで「S3 バケットへの書き込みを有効化する」のチェックをはずす。
今回のコマンド実行では特に出力がないので、チェックを外しました。 -
他設定はデフォルト値のままで、画面下部の「実行」を押下。
-
実行結果が成功していることを確認する。
※該当インスタンスに接続して確認してみました。
ちなみに
実行の設定を行なっていた画面にて、「AWS コマンドラインインターフェイスのコマンド」には「CLIコマンド」が記述されています。
こちらのコマンドをコピーして、CloudShellなどを利用して実行することも可能です。
CLIから実行する必要がある場合は、ぜひご利用ください。
さいごに
Run Commandは、使い方によって便利に使えそうだと感じます。
特にシステム保守・運用の際に効果を発揮してくれると期待しています。
私個人のユースケースとしては、とあるデーモンの再起動が必要となった時に、Run Commandを実行してサクッと再起動するなど、で活用していました。