目次
概要
- EC2(test-ec2)にshファイルを配置し、System Manager(SSM)から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.「インスタンスを手動で選択する」をチェックしインスタンスを選択します。

6.S3 バケットへの書き込みを有効化するのチェックは今回は使用しないので外しました。
7.実行をクリックするとシェルが実行されます。
8.実行結果が表示されます。円の矢印のボタンを押すとリフレッシュされます。

9.上記実行結果の下にあるインスタンスIDのリンクをクリックします。
10.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に変更したところ解決しました。
SSMのFleet Managerを表示するために必要なAWSマネージドポリシー
SSM Fleet Managerとは、EC2インスタンスをGUIで一元管理できるダッシュボードです。
追加するAWSマネージドポリシーは、以下のどちらかと
・AmazonSSMReadOnlyAccess読み取り専用(表示のみ)
・AmazonSSMFullAccess(フルアクセス)
EC2の情報も参照するため以下も必要です。
・AmazonEC2ReadOnlyAccess
CloudTrailでも誰が実行したかを確認できる
CloudTrailでも誰が実行したかを確認できます。
手順
1.CloudTrail → イベント履歴
2.フィルタ
・Event name = SendCommand
・Username = 対象ユーザ
確認できる情報
・実行ユーザ(IAMユーザ / ロール)
・実行内容(Document名)
・対象インスタンス
関連の記事
