テックブログ

SystemsManager の機能を試してみる RunCommand編

はじめに

こんにちは am です。
AWS の Run Command機能を使って、EC2にログインせずコマンド実行をしたいと思います。

サーバに必要なもの

Systems Manager をセットアップする

  • SSM Agent のインストール
    SSM Agentがプリインストールされた AMIs があります。これらの AMI を利用していない場合は手動でインストールしてください
  • SystemManager への通信経路(インターネットゲートウェイ、NATGateway、Systems Manager用のエンドポイント)
    ※ サーバ環境要件に合わせて必要な通信経路を用意してください。
      今回はインターネットゲートウェイを利用して通信経路を確保しています。
  • IAMRole の設定 (EC2 の場合)

IAM Role

SSM で触れるように EC2 用の role を作成します。
作成、割当手順詳細は割愛しますが、AmazonSSMManagedInstanceCore を利用しました。

RunCommand でシェルスクリプトの実行

SystemsManager の左ペインから Run Command を選択し、
コマンドを実行するをクリックします

AWS-RunShellScript を選択します。


実行するコマンドを入力します。


インスタンスはSSMのインストールなどが問題なければ表示されているので、対象機器を選択してください。
通知などが可能ですが、一旦割愛します。

実行!

結果

ip-192-168-19-254.ap-northeast-1.compute.internal
 03:27:45 up  2:00,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
ec2-user pts/0     01:35    8:52   0.06s  0.02s sshd: ec2-user [priv]
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  1.6 105156 16528 ?        Ss   01:27   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize=32
root           2  0.0  0.0      0     0 ?        S    01:27   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   01:27   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   01:27   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   01:27   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   01:27   0:00 [netns]
root           8  0.0  0.0      0     0 ?        I<   01:27   0:00 [kworker/0:0H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   01:27   0:00 [mm_percpu_wq]
root          11  0.0  0.0      0     0 ?        I    01:27   0:00 [rcu_tasks_kthread]
root          12  0.0  0.0      0     0 ?        I    01:27   0:00 [rcu_tasks_rude_kthread]
root          13  0.0  0.0      0     0 ?        I    01:27   0:00 [rcu_tasks_trace_kthread]
root          14  0.0  0.0      0     0 ?        S    01:27   0:00 [ksoftirqd/0]
root          15  0.0  0.0      0     0 ?        I    01:27   0:00 [rcu_preempt]
root          16  0.0  0.0      0     0 ?        S    01:27   0:00 [migration/0]
root          18  0.0  0.0      0     0 ?        S    01:27   0:00 [cpuhp/0]
root          20  0.0  0.0      0     0 ?        S    01:27   0:00 [kdevtmpfs]
root          21  0.0  0.0      0     0 ?        I<   01:27   0:00 [inet_frag_wq]
root          22  0.0  0.0      0     0 ?        S    01:27   0:00 [kauditd]
root          23  0.0  0.0      0     0 ?        S    01:27   0:00 [khungtaskd]
root          24  0.0  0.0      0     0 ?        S    01:27   0:00 [oom_reaper]
root          27  0.0  0.0      0     0 ?        I<   01:27   0:00 [writeback]
root          28  0.0  0.0      0     0 ?        S    01:27   0:00 [kcompactd0]
root          29  0.0  0.0      0     0 ?        SN   01:27   0:00 [khugepaged]
root          30  0.0  0.0      0     0 ?        I<   01:27   0:00 [kintegrityd]
root          31  0.0  0.0      0     0 ?        I<   01:27   0:00 [kblockd]
root          32  0.0  0.0      0     0 ?        I<   01:27   0:00 [blkcg_punt_bio]
root          33  0.0  0.0      0     0 ?        S    01:27   0:00 [xen-balloon]
root          34  0.0  0.0      0     0 ?        I<   01:27   0:00 [tpm_dev_wq]
root          35  0.0  0.0      0     0 ?        I<   01:27   0:00 [md]
root          36  0.0  0.0      0     0 ?        I<   01:27   0:00 [edac-poller]
root          37  0.0  0.0      0     0 ?        S    01:27   0:00 [watchdogd]
root          38  0.0  0.0      0     0 ?        I<   01:27   0:00 [kworker/0:1H-kblockd]
root          73  0.0  0.0      0     0 ?        S    01:27   0:00 [kswapd0]
root          75  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfsalloc]
root          77  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs_mru_cache]
root          80  0.0  0.0      0     0 ?        I<   01:27   0:00 [kthrotld]
root          95  0.0  0.0      0     0 ?        S    01:27   0:00 [xenbus]
root          96  0.0  0.0      0     0 ?        S    01:27   0:00 [xenwatch]
root         133  0.0  0.0      0     0 ?        I<   01:27   0:00 [nvme-wq]
root         135  0.0  0.0      0     0 ?        I<   01:27   0:00 [nvme-reset-wq]
root         137  0.0  0.0      0     0 ?        I<   01:27   0:00 [nvme-delete-wq]
root         160  0.0  0.0      0     0 ?        I<   01:27   0:00 [mld]
root         161  0.0  0.0      0     0 ?        I<   01:27   0:00 [ipv6_addrconf]
root         171  0.0  0.0      0     0 ?        I<   01:27   0:00 [kstrp]
root         183  0.0  0.0      0     0 ?        I<   01:27   0:00 [zswap-shrink]
root         184  0.0  0.0      0     0 ?        I<   01:27   0:00 [kworker/u31:0]
root         975  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-buf/xvda1]
root         976  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-conv/xvda1]
root         977  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-reclaim/xvd]
root         978  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-blockgc/xvd]
root         979  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-inodegc/xvd]
root         980  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-log/xvda1]
root         981  0.0  0.0      0     0 ?        I<   01:27   0:00 [xfs-cil/xvda1]
root         982  0.0  0.0      0     0 ?        S    01:27   0:01 [xfsaild/xvda1]
root        1042  0.0  1.5  52560 15152 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-journald
root        1709  0.0  1.1  30600 11280 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-udevd
systemd+    1713  0.0  1.4  21200 14520 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-resolved
root        1726  0.0  0.2  29256  2296 ?        S<sl 01:27   0:00 /sbin/auditd
root        1812  0.0  0.0      0     0 ?        I<   01:27   0:00 [cryptd]
root        1855  0.0  0.0      0     0 ?        I<   01:27   0:00 [ata_sff]
root        1870  0.0  0.0      0     0 ?        S    01:27   0:00 [scsi_eh_0]
root        1873  0.0  0.0      0     0 ?        I<   01:27   0:00 [scsi_tmf_0]
root        1878  0.0  0.0      0     0 ?        S    01:27   0:00 [scsi_eh_1]
root        1879  0.0  0.0      0     0 ?        I<   01:27   0:00 [scsi_tmf_1]
root        1928  0.0  0.0      0     0 ?        I<   01:27   0:00 [rpciod]
root        1929  0.0  0.0      0     0 ?        I<   01:27   0:00 [xprtiod]
root        1949  0.0  0.6  15288  6488 ?        Ss   01:27   0:00 /usr/bin/systemd-inhibit --what=handle-suspend-key:handle-hibernate-key --who=noah --why=acpid instead --mode=block /usr/sbin/acpid -f
libstor+    1953  0.0  0.1   2752  1932 ?        Ss   01:27   0:00 /usr/bin/lsmd -d
root        1955  0.1  0.6  88908  5836 ?        Ssl  01:27   0:12 /usr/sbin/rngd -f -x pkcs11 -x nist
root        1956  0.0  1.1 240052 10724 ?        Ss   01:27   0:00 /usr/sbin/sssd -i --logger=files
root        1961  0.0  0.7  15772  7696 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-homed
dbus        1966  0.0  0.3   8372  3776 ?        Ss   01:27   0:00 /usr/bin/dbus-broker-launch --scope system --audit
systemd+    1970  0.0  0.9 235864  9704 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-networkd
dbus        1975  0.0  0.2   5264  2792 ?        S    01:27   0:00 dbus-broker --log 4 --controller 9 --machine-id 3356686e235346f99462d3ffc6f7e325 --max-bytes 536870912 --max-fds 4096 --max-matches 16384 --audit
root        1978  0.0  1.3 243752 12936 ?        S    01:27   0:00 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
root        1981  0.0  0.3 281020  3472 ?        Ssl  01:27   0:00 /usr/sbin/gssproxy -D
root        1987  0.0  4.0 267452 39520 ?        S    01:27   0:00 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
root        1988  0.0  1.0  17616  9736 ?        Ss   01:27   0:00 /usr/lib/systemd/systemd-logind
root        2004  0.0  0.1   2668  1148 ?        S    01:27   0:00 /usr/sbin/acpid -f
root        2208  0.0  1.7 724372 17140 ?        Ssl  01:27   0:00 /usr/bin/amazon-ssm-agent
root        2213  0.0  0.7  29116  7692 ?        Ss   01:27   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        2222  0.0  0.2  20544  2512 ?        Ss   01:27   0:00 /usr/sbin/atd -f
root        2223  0.0  0.1 221344  1084 tty1     Ss+  01:27   0:00 /sbin/agetty -o -p -- \u --noclear - linux
root        2224  0.0  0.1 221388  1088 ttyS0    Ss+  01:27   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,57600,38400,9600 - vt220
chrony      2242  0.0  0.3  95552  3156 ?        S    01:27   0:00 /usr/sbin/chronyd -F 2
root        2490  0.0  1.0  41880 10684 ?        Ss   01:35   0:00 sshd: ec2-user [priv]
root        2495  0.0  0.6  15288  6692 ?        Ss   01:35   0:00 /usr/lib/systemd/systemd-userdbd
ec2-user    2537  0.0  1.3  19888 12792 ?        Ss   01:35   0:00 /usr/lib/systemd/systemd --user
ec2-user    2546  0.0  0.6 126828  6472 ?        S    01:35   0:00 (sd-pam)
ec2-user    2553  0.0  0.6  41880  6304 ?        S    01:35   0:00 sshd: ec2-user@pts/0
ec2-user    2555  0.0  0.5 233060  5000 pts/0    Ss   01:35   0:00 -bash
root        4754  0.0  0.0      0     0 ?        I    03:04   0:00 [kworker/u30:0-events_unbound]
root        4867  0.0  0.0      0     0 ?        I    03:10   0:00 [kworker/0:3-xfs-inodegc/xvda1]
root        5043  0.0  0.0      0     0 ?        I    03:16   0:00 [kworker/0:1-cgroup_destroy]
root        5047  0.0  0.8 260308  8312 pts/0    S    03:17   0:00 sudo su -
root        5050  0.0  0.4 245540  4708 pts/0    S    03:17   0:00 su -
root        5051  0.0  0.5 233444  5328 pts/0    S+   03:17   0:00 -bash
root        5190  0.0  0.0      0     0 ?        I    03:18   0:00 [kworker/u30:2-writeback]
root        5243  0.0  2.5 733668 25036 ?        Sl   03:19   0:00 /usr/bin/ssm-agent-worker
root        5349  0.0  0.6  15644  6572 ?        S    03:22   0:00 systemd-userwork: waiting...
root        5350  0.0  0.6  15644  6568 ?        S    03:22   0:00 systemd-userwork: waiting...
root        5351  0.0  0.6  15644  6580 ?        S    03:22   0:00 systemd-userwork: waiting...
root        5449  0.0  0.0      0     0 ?        I    03:26   0:00 [kworker/0:0-events_power_efficient]
root        5452  0.0  2.5 732056 24972 ?        Sl   03:27   0:00 /usr/bin/ssm-document-worker a902ab0a-98e3-4cef-aebb-ce2b0137c4d6
root        5459  0.0  0.3 232036  3612 ?        S    03:27   0:00 sh -c /var/lib/amazon/ssm/i-0b6b93dbdc998a1f8/document/orchestration/a902ab0a-98e3-4cef-aebb-ce2b0137c4d6/awsrunShellScript/0.awsrunShellScript/_script.sh
root        5462  0.0  0.2 232520  2716 ?        R    03:27   0:00 ps auxwww


起動したばかりの amazon linux2023 なので特別なにか動いているわけではありませんが、
実行結果が取得できました。

終わりに

コマンド実行するだけならSSHすればいいじゃないっていうもあるかと思いますが、
SSHできないような環境にいる場合やポリシー的にSSHを利用しないサーバ、オートスケールで一時的に増えたサーバなどに対してもログインせず、セキュアにコマンドが実行可能です。
また実行結果が残ること、コマンド再実行も可能になっています。

複数インスタンスにも実行可能なので、1つのサービス郡のサーバでまとめてログを調べたり、以前と全く同じコマンドを使って、複数台調査するといったことが比較的容易になります。
通常SSHをして ログを見て…と実行しようとすると1台1台作業が必要になるため、何度も同じことをしたり複数台同時に実行できれば…といった状況であれば非常に有効活用できるかと思います。

今回はここまで!
今後は余裕があれば他の SystemsManager 利用も使ったブログを書きたいと思います。
読んでいただき、ありがとうございました。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください