Run Commandでシェルスクリプトを実行してみる

Run Commandでシェルスクリプトを実行してみる

Clock Icon2024.07.30

こんにちは。中村です。

はじめに

ひとコマンド実行したいだけなのに、踏み台サーバー経由してEC2サーバーに接続してコマンド実行しなければならない。
面倒だな。と思った経験はありませんか?

今回は、System ManagerのRun Commandを利用して、マネジメントコンソールからシェルを実行する方法をご紹介します。

やってみる

前提条件

  • 下記ブログを参考に、マネージドインスタンスをデプロイする
  • ただし、テンプレートの一部を修正し、EC2インスタンスに権限を追加する

https://dev.classmethod.jp/articles/create-ec2-playground/

Resources:
  EC2IAMRole:
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

やってみた

  1. AWS Systems Manager(以下、SSM)サービスを表示させ、左ペインにある「ノード管理」の「Run Command」を押下し、Run Command画面を表示させる。
  2. コマンドタブ内で、「Run command」を押下する。

run-command-aws-runshellscript-img-1

  1. コマンドドキュメントにて、「AWS-RunShellScript」を選択する。

run-command-aws-runshellscript-img-2

  1. 実行するコマンドを入力する。
    オプションで作業ディレクトリを指定します。今回は、/home/ec2-userを指定します。

run-command-aws-runshellscript-img-3-2

  1. ターゲットに、実行対象のインスタンスを選択する。

run-command-aws-runshellscript-img-4

※ターゲットにインスタンスが表示されない場合は、対象インスタンスがSSMを利用できるマネージドインスタンスとなっていない可能性があります。特に、プライベートサブネット上に配置したインスタンスをSSMで管理されたい場合は、下記記事を参考に設定状況をご確認ください。

https://dev.classmethod.jp/articles/tsnote-private-ec2-ssm-vpc-endpoint/

  1. 出力オプションで「S3 バケットへの書き込みを有効化する」のチェックをはずす。
    今回のコマンド実行では特に出力がないので、チェックを外しました。

  2. 他設定はデフォルト値のままで、画面下部の「実行」を押下。

  3. 実行結果が成功していることを確認する。

run-command-aws-runshellscript-img-5

※該当インスタンスに接続して確認してみました。

run-command-aws-runshellscript-img-7

ちなみに

実行の設定を行なっていた画面にて、「AWS コマンドラインインターフェイスのコマンド」には「CLIコマンド」が記述されています。
こちらのコマンドをコピーして、CloudShellなどを利用して実行することも可能です。
CLIから実行する必要がある場合は、ぜひご利用ください。

run-command-aws-runshellscript-img-6

さいごに

Run Commandは、使い方によって便利に使えそうだと感じます。
特にシステム保守・運用の際に効果を発揮してくれると期待しています。

私個人のユースケースとしては、とあるデーモンの再起動が必要となった時に、Run Commandを実行してサクッと再起動するなど、で活用していました。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.