AWS Systems ManagerのRun Commandを実行

AWSのSystems ManagerのRun CommandでEC2のシェルを実行するサンプルです。

目次

サンプル Systems ManagerのRun CommandでEC2のシェルを実行する概要
  EC2に確認用のシェルファイルを作成する
  Roleを作成しEC2に追加します。
Systems ManagerのRun Commandを実行する
Run Commandで対象インスタンスが表示されない時

Systems ManagerのRun CommandでEC2のシェルを実行する概要

  • EC2(test-ec2)にshファイルを配置し、System Managerからrun commandでshファイルを実行します。
  • Publicのsubnetです。

 

EC2に確認用のシェルファイルを作成する

/home/ec2-user配下にtest1.shを作成します。

test1.sh

#!/bin/bash
echo 'hello world'
date '+%T'

./test1.shで実行すると文字列(hello world)と1:14:58等の時分秒が表示されます。

 

Roleを作成しEC2に追加します。

1.Roleを作成し以下のポリシーを追加します。

・AmazonSSMManagedInstanceCore

※AmazonEC2RoleforSSMはThis policy will soon be deprecatedの記載があります。

 

2.EC2に作成したポリシーを追加します。

 

Systems ManagerのRun Commandを実行する

1.対象のEC2を起動します。

2.検索乱でsystem managerで検索して、System Managerの画面を開きます。

3.検索欄でAWS-RunShellScriptで検索してチェックを入れます。

 

4.コマンドのパラメータには、パスとshファイル名を入力します。
/home/ec2-user/test1.sh

 

5.「インスタンスを手動で選択する」をチェックしインスタンスを選択します。

 

4.S3 バケットへの書き込みを有効化するのチェックは今回は使用しないので外しました。

5.実行をクリックするとシェルが実行されます。

6.実行結果が表示されます。円の矢印のボタンを押すとリフレッシュされます。

 

7.上記実行結果の下にあるインスタンスIDのリンクをクリックします。

 

 

8.OutPutの下三角形をクリックするとシェルの実行結果が表示されます。

 

Run Commandで対象インスタンスが表示されない時

SSMエージェントの確認

EC2にSystemsManagerエージェントが入っていて動いているか確認します。
OSによってコマンドが異なります。

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/ssm-agent-status-and-restart.html

Amazon Linux 2の場合

[ec2-user@ip-10-0-10-4 ~]$ sudo systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2022-12-28 00:41:20 JST; 43min ago
 Main PID: 3608 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           tq3608 /usr/bin/amazon-ssm-agent
           mq3679 /usr/bin/ssm-agent-worker

1行目は、sudo systemctl status amazon-ssm-agentを実行しています。
4行目は、activeとなっているので動いています。

 

ssm-cliコマンドで状況を確認

1.ssm-cli get-diagnostics --output tableを入力するとテーブルで状況が表示されます。

Connectivity to ssm endpointがfailedになっていました。

 

2.上記のfailedをSuccessにした手順です。
VPCのDNS解決が有効であることを確認します。

3.VPCのDHCPオプションセットのリンクをクリックします。

 

4.ドメインネームサーバーをAmazonProvidedDNSに変更したところ解決しました。

 

 

AmazonProvidedDNSとは

Amazon DNSサーバー = Amazon Route 53 Resolver でVPC作成時に自動で作成されるDNSサーバです。VPC内での名前解決で使用されます。

10.0.0.0/16 ネットワークのAmazon DNS サーバーのIPアドレスは 10.0.0.2(2を追加したもの)でこれはAWSの仕様です。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-dns.html

 

Systems Manager コンソールの [マネージドインスタンス] に EC2 インスタンスが表示されないのはなぜですか?
https://aws.amazon.com/jp/premiumsupport/knowledge-center/systems-manager-ec2-instance-not-appear/

関連の記事

AWS EC2を作成(起動/停止/削除)するサンプル

△上に戻る