AWS Systems Manager エージェント(SSM Agent)の現行のバージョンを確認して最新バージョンにアップデートする

AWS Systems Manager の最新機能を試すためにバージョンが気になるあなたへ

コンバンハ、千葉(幸)です。

先日、AWS Systems Manager セッションマネージャーでリモートホストへのポートフォワードが可能になる新機能が提供されました。

こういった新機能を利用するために、AWS Systems Manager エージェント(SSM Agent)の一定以上のバージョンが要求されることがあります。(なお、今回で言えば 3.1.1374.0 以上が必要 なようです。)

上記のようなケースを想定し、以下の手順を確認してみます。

  • インストール済みの SSM Agent のバージョンを確認する
  • 最新版の SSM Agent にアップデートする
  • (おまけ)SSM Agent のリリース履歴を確認する

インストール済みの SSM Agent のバージョンを確認する(コマンド)

まずはすでにインストール済みの SSM Agent が存在するケースを想定し、そのバージョンを確認してみます。

今回は現時点で最新であろう以下の AMI を使用し EC2 インスタンスを立ち上げます。Amazon Linux2 であるため、SSM Agent がインストール済みです。

  • amzn2-ami-kernel-5.10-hvm-2.0.20220426.0-x86_64-gp2

また、以下の条件も満たし、Systems Manager マネージドインスタンスとして管理された状態にしています。

  • IAM ロール(インスタンスプロファイル)で必要な権限を付与している
  • SSM エンドポイントに疎通可能な状態である

セッションマネージャーで接続し、yum info amazon-ssm-agentを実行します。

sh-4.2$ yum info amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
Name        : amazon-ssm-agent
Arch        : x86_64
Version     : 3.1.1188.0
Release     : 1.amzn2
Size        : 115 M
Repo        : installed
Summary     : Manage EC2 Instances using SSM APIs
URL         : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License     : ASL 2.0
Description : This package provides Amazon SSM Agent for managing EC2 Instances using SSM APIs

インストール済みの SSM Agent のバージョンが3.1.1188.0であることがわかりました。

OS によって確認方法が変わる場合もあります。他の OS でのコマンド例は以下をご参照ください。

インストール済みの SSM Agent のバージョンをアップデートする(yum)

yum で管理されているなら yum でアップデートしてみるか、とsudo yum update amazon-ssm-agentを実行してみます。

sh-4.2$ sudo yum update amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
No packages marked for update

アップデートできるものがない、と言われてしまいました。yum での管理上では、3.1.1188.0が最新とされているようです。

戯れにsudo yum installも試してみますが、もちろん結果は変わりません。

h-4.2$ sudo yum install amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                             | 3.7 kB  00:00:00
Package matching amazon-ssm-agent-3.1.1188.0-1.amzn2.x86_64 already installed. Checking for update.
Nothing to do

インストール済みの SSM Agent のバージョンをアップデートする(Run Command)

冒頭の例で必要になるのは3.1.1374.0以上なので、別のアプローチでアップデートを試みます。

Systems Manager ドキュメントではAWS-UpdateSSMAgentという Command タイプのドキュメントが用意されています。

AWS_Systems_Manager_-_Documents_UpdateSSM_Agent

これを実行して SSM エージェントのバージョンがどうなるかを確認してみましょう。

AWS_Systems_Manager_-_Documents_SSM_Update

コマンドの実行画面から、パラメータやターゲット、出力オプションなどを適宜選択し実行します。パラメータとして SSM Agent バージョンを指定できますが、今回は特に指定しませんでした。その場合、最新版が適用されます。

Update_SSMAgent

実行履歴を確認してみると、以下のログが出力されていました。

Successfully downloaded manifest
Successfully downloaded updater version 3.1.1476.0
Updating amazon-ssm-agent from 3.1.1188.0 to 3.1.1476.0
Successfully downloaded https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/amazon-ssm-agent/3.1.1188.0/amazon-ssm-agent-linux-amd64.tar.gz
Successfully downloaded https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/amazon-ssm-agent/3.1.1476.0/amazon-ssm-agent-linux-amd64.tar.gz
Initiating amazon-ssm-agent update to 3.1.1476.0
amazon-ssm-agent updated successfully to 3.1.1476.0

3.1.1476.0にアップデートされたことが確認できました。先ほどのコマンドで確認しても、きちんと反映されています。

sh-4.2$ yum info amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
Name        : amazon-ssm-agent
Arch        : x86_64
Version     : 3.1.1476.0
Release     : 1
Size        : 108 M
Repo        : installed
Summary     : Manage EC2 Instances using SSM APIs
URL         : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License     : Apache License, Version 2.0
Description : This package provides Amazon SSM Agent for managing EC2 Instances using SSM APIs

SSM Agent のアップデート時にセッションマネージャーの接続断なし

AWS-UpdateSSMAgentでアップデートを行った時はセッションマネージャー接続した状態でしたが、アップデートの最中・終了後ともにセッションマネージャーは切断されることなく接続されたままでした。

いい感じにやってくれますね。

SSM Agent のリリース履歴を確認する

今回アップデートされた3.1.1476.0が本当に最新版なのか?というのが気になるのでリリース履歴を確認してみましょう。以下ページから確認できます。

きちんと3.1.1476.0が最新でした!(2022/5/30時点)

Releases_·_aws_amazon-ssm-agent_·_GitHub

yum でなくAWS-UpdateSSMAgentであれば、リリース済みの最新版にアップデートしてくれそうです。curl などで手動でダウンロードする方法もあるかと思いますが、難しいことを考えなくて済むし複数台に一気に適用できるのでAWS-UpdateSSMAgentの方がおすすめです。

インストール済みの SSM Agent のバージョンを確認する(コンソール)

順番が前後しますが、インストール済みの SSM Agent バージョンはマネジメントコンソールからでも一覧で確認できます。

「フリートマネージャー」の画面から確認しましょう。

AWS_Systems_Manager_-_Managed_Instances

わたしの環境では対象が 1 台しかないので見栄えがさみしいですが、ここでまとめて複数台のバージョンを確認できます。

フリートマネージャーのマネージドノードで一覧に現れてこない場合

この一覧に表示されるためにはマネージドノードとして管理されている必要があります。 SSM Agent をインストールしているのに一覧に現れてこない場合は、以下を参考にいくつかの観点をチェックしてください。

SSM Agent の自動更新もあるよ

今回使用したAWS-UpdateSSMAgentを利用した自動更新の仕組みも簡単に実現できます。

ワンクリックで実装でき、14 日周期(デフォルトの場合)で最新版への更新が行われます。

都度手動で更新を行うよりは圧倒的に便利ですので、万が一 エラーが発生した場合の影響がクリティカル、という環境でなければ有効化を検討しましょう。

終わりに

今回は以下の手順を確認してみました。

  • 現在インストール済みの SSM Agent のバージョンを確認する
  • 最新版の SSM Agent にアップデートする
  • (おまけ)SSM Agent のリリース履歴を確認する

当初はsudo yum update amazon-ssm-agentを実行してアップデートされるものと思っていたのですが、意図通りのバージョンにならなかったのでその回り道も含めて書いてみました。

SSM Agent に限らず、yum のリポジトリで取得できるパッケージのバージョンは最新版に比べてちょっと遅れがちなようです。

同じようなケースで困っていた方の参考になれば幸いです。

以上、 チバユキ (@batchicchi) がお送りしました。