SSM Agent Version 3がGitHub上でリリースされています

2020.09.04

しばたです。

まだドキュメント等でのアナウンスは無いのですが、GitHubを見るとSSM Agentのメジャーバージョンが上がったVersion 3が9月2日にリリースされています。

本記事ではGitHubの変更点を読み解きながらSSM Agent Version 3について今わかる点を解説します。

リリースノート

SSM Agent Version 3の最初のリリースであるVer.3.0.151.0のリリースノートは以下の様になっています。

  • First release of SSM Agent v3
  • Moved v2 amazon-ssm-agent to new ssm-agent-worker binary
  • New amazon-ssm-agent binary:
    • Opt-in self update feature to upgrade if agent is running a deprecated version
    • Telemetry feature to send important audit events to AWS. Opt-in send to customer CloudWatch
    • Monitor and keep the ssm-agent-worker process running
  • Upgrade vendor dependencies and build to use go1.13

Version 2からの差分

SSM Agent Version 2系のの最終バージョンであるVer.2.3.1644とVer.3.0.151.0の差分は以下となります。

上記リリースノートに併せてこの差分を気合いで読み解いてみます。

主な変更点

新しい ssm-agent-worker バイナリ

SSM Agentはその実装としてメインプロセスとなるamazon-ssm-agentと機能別に応じたワーカープロセスから構成されています。このワーカープロセスには

  • ssm-document-worker
  • ssm-session-worker
  • ssm-session-logger

が存在します。
SSM Agent Version 3からは新たにssm-agent-workerというワーカープロセスが増え、amazon-ssm-agentの機能を一部オフロードした模様です。

自己アップデート機能 (Opt-in)

SSM Agent Version 3ではエージェント自身が非推奨のバージョンになった際に自己アップデートする機能が増えています。
デフォルト無効で設定ファイルで有効にしてOpt-inする必要があります。

方式としてはS3上のメタデータからどのバージョンが非推奨になったかを判定してアップデートが必要になった時点で自己アップデートのコマンドを実行する様です。

GitHubにあったテスト用のメタデータを見ると以下の様な感じになっており、"Status"という要素が新たに増える見込みです。

{
  "SchemaVersion": "1.0",
  "Packages": [
    {
      "Files": [
        {
          "Name": "amazon-ssm-agent-linux-amd64.tar.gz",
          "AvailableVersions": [
            {
              "CheckSum": "84fc818a7e21068c47412ddd18d3748a04a16b8f8836a259191920f854c4edc7",
              "Version": "1.1.0.0",
              "Status": "Foo"
            },
            
            // 中略

            {
              "CheckSum": "99305af6436674c3950dd35ea1fab26ee671ac8fb50cf1115b1368da5e3d3764",
              "Version": "2.0.805.0",
              "Status": "Inactive"
            },
            {
              "CheckSum": "8482afbdd9c6960e6406838f5306c242c2c6110861b55a212385cf0f13d73505",
              "Version": "2.0.822.0",
              "Status": "Deprecated"
            }
          ]
        },

        // 後略
    }
}

テレメトリー収集 to AWS

SSM Agent Version 3からはテレメトリーをAWSに送る機能が増えています。
この機能はデフォルトで有効になっており、設定ファイルで無効にすることができる様です。

収集する情報についての詳細を読み取ることができなかったのですが、リリースノートに

send important audit events

とあることから重要な監査ログを送る様です。

テレメトリー収集 to ユーザーのCloudWatch Logs (Opt-in)

前節のテレメトリーをユーザーのCloudWatch Logsにも送ることが可能になっています。
こちらはデフォルトで無効であり、設定ファイルで有効にできます。

Go言語のバージョンアップ

SSM AgentはGo言語製なのですが、SSM Agent Version 3では言語のバージョンがGo 1.12からGo 1.13に更新されています。
合わせて依存パッケージのバージョンも更新されています。

試してみようとした

現在最新のAMIにはまだSSM Agent Version 3はインストールされてませんので、SSM Agentをアップデートするところからはじめてみようとしたのですが、まだAWS側でVer.3のバイナリを配布してない様で試せませんでした。

SSM Run CommandからAWS-UpdateSSMAgentを試してみたのですが、Ver.2系の最終バージョンであるVer.2.3.1644.0までしか上げることができませんでした。

自力でソースコードからバイナリをビルドすれば今でも試すことはできるでしょうが、正直つらいので今回はそこまではしないでおきます。

最後に

ざっとこんな感じです。

たぶんですが、AWSから正式にアナウンスが出た時点でSSM Agent Version 3がアップデートおよび利用可能になるのでしょう。
そう遠くない先の話だと思いますので今から備えておくと良いかもしれません。