LoginSignup
7
9

AWS: SystemsManagerのRunCommandでEC2インスタンスのコマンドを実行する

Posted at

AWS SystemsManagerとは?

SSM(SystemsManager)でできることはかなり沢山あるみたいです。
オンプレミスのサーバーも管理できるみたいですが、今回はEC2でのみの使用となります。

AWS Systems Manager は、AWS アプリケーションおよびリソースのオペレーションハブであり、ハイブリッドおよびマルチクラウド環境向けのセキュアなエンドツーエンドの管理ソリューションです。これにより、安全でセキュアなオペレーションを大規模に実現できます。(AWS公式から引用)

SSM RunCommandとは?

「AWS マネージドコンソールから各種コマンドを実行できる」機能です。
SSH等で対象サーバー内に入ることなく、マネージドコンソール上から各種コマンドが打てるようになります。

RunCommandを実行するための前提条件

SSM RunCommandを実行するためにはいくつかの前提条件をクリアする必要があります。*EC2の場合

  • インターネットアクセス(アウトバウンド)
  • 対象EC2でSSM Agentがインストールされている
  • 対象EC2でSystemsManagerがアクションを実行できるようにアクセスを許可

詳しくは以下公式ドキュメントを参照してください。

SSM Agentとは?

AWS Systems Manager エージェント (SSM Agent) は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) で実行される Amazon のソフトウェアです。

SSM Agent を使用すると、SystemsManager でこれらのリソースを更新、管理、設定できるようになります。

このSSM Agentを対象のEC2で実行させることでSystemsManagerからEC2の操作が可能になります。

SystemsManager RunCommandを実装する

ステップ1. IAMロールを作成する

対象のEC2インスタンスでSystemsManagerがアクションを実行するための権限をSystemsManagerに付与するためのIAMロールを作成していきます。

  1. AWSコンソール「IAM」からロールを作成を選択
    スクリーンショット_2023-09-26_23_16_41.png

  2. エンティティタイプ・ユースケースを選択する
    エンティティタイプは「AWSのサービス」
    ユースケースは「EC2」です。
    スクリーンショット_2023-09-26_23_17_19.png

  3. ポリシーを選択する
    AWS管理ポリシー: 「AmazonSSMManagedInstanceCore」を選択し、次へ。
    スクリーンショット_2023-09-26_23_17_37.png

  4. ロール名を命名する
    適切なロール名を命名してロールを作成します。
    スクリーンショット_2023-09-26_23_18_11.png

ステップ2. EC2インスタンスにIAMロールをアタッチする

EC2インスタンスを起動する場合

  1. AWSコンソール「EC2」でインスタンスを起動を選択する
    スクリーンショット_2023-09-26_23_19_22.png

  2. アタッチするIAMロールを選択する
    EC2の設定画面 「高度な詳細」の「IAMインスタンスプロフィール」 にて、先ほど作成したIAMロール「EnableEC2ToAccessSystemsManagerRole」を選択します。
    スクリーンショット_2023-09-26_23_20_06.png

EC2の起動に成功すると 「実行中」 になります。
スクリーンショット_2023-09-26_23_35_17.png

起動中のEC2インスタンスにアタッチする場合

対象のEC2インスタンスを選択

「アクション」

「セキュリティ」

「IAMロールを変更」と進みます
スクリーンショット_2023-09-26_23_41_08.png

先ほど作成したIAMロール「EnableEC2ToAccessSystemsManagerRole」を選択し、IAMロールの更新を選択。
スクリーンショット_2023-09-26_23_41_24.png

ステップ3. 対象のEC2にSSM Agentをインストールする

AmazonLinux2以降であれば標準でインストールされています。
インストールされていない場合は以下公式ドキュメントに沿ってインストールします。

ステップ4. SSM Agentをアップグレードする

EC2で実行されているSSM Agentを最新にアップグレードします。

AWSコンソール「SystemsManager」画面左の「Run Command」を選択します。
スクリーンショット_2023-09-26_23_49_03.png

遷移後の画面で「コマンドを実行する」を選択
スクリーンショット_2023-09-26_23_49_15.png

コマンドドキュメントで「AWS-UpdateSSMAgent」を選択。
スクリーンショット_2023-09-26_23_49_37.png

ターゲットで対象のEC2インスタンスを選択します。

注意
ステップ2. EC2インスタンスにIAMロールをアタッチする
or
ステップ3. 対象のEC2にSSM Agentをインストールする

どちらかの設定がうまくいっていないとこの画面でEC2インスタンスが表示されません。

スクリーンショット_2023-09-26_23_50_03.png

画面をスクロールし「実行」を選択
スクリーンショット_2023-09-26_23_50_16.png

実行後ステータスが「成功」になっていれば成功です。
スクリーンショット_2023-09-26_23_51_07.png

ステップ5. RunCommandを使用してシェルスクリプトを実行する

  1. SystemsManagerコンソールのRunCommandを選択する
    スクリーンショット_2023-09-30_11_40_06.png

  2. コマンドドキュメント「AWS-RunShellScript」を選択する
    スクリーンショット_2023-09-30_11_40_28.png

  3. 実行したいコマンドを入力する
    スクリーンショット_2023-09-30_11_42_22.png

  4. 実行対象EC2インスタンスを選択する
    スクリーンショット_2023-09-30_11_42_33.png

  5. コマンドを実行する
    スクリーンショット_2023-09-30_11_42_42.png

実行ステータスが成功になっていればOKです!
スクリーンショット_2023-09-30_11_43_41.png

ステップ6. RunCommandが正常に動いているかを確認する

ステップ5. RunCommandを使用してシェルスクリプトを実行するで実行したコマンドが正しく動作しているかを確認していきます。

以下ファイルが作成されていることを確認できました!

/var/log/ps_aux.log

スクリーンショット 2023-09-30 11.46.39.png

最後に

AWSはAWS内での普遍的な知識が結構あるので一つ覚えるとAWS内の他のサービスに応用できるのが良いところですねえ。
何でも出来すぎて怖いです。。
ではまたっ!

参考

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9