【AWS/EC2/SSM】Patch Managerを使う際のEC2のメタデータのオプションに注意が必要(だったけど直っていた)
2022/10/28 更新
この不具合は修正されました。
過去にこんなことがあったのだなくらいに思っていてください。
In the left column, enter Patch Group or PatchGroup. If you have allowed tags in EC2 instance metadata, you must use PatchGroup (without a space).
SSM側が対応してくれたんですね。依然としてメタデータのタグで使える文字列が制限される使用は継続しているようです。
EC2のタグをDescribeInstanceやDescribeTagを使用しなくても取得できる2022年1月に追加されたEC2の便利な機能ですが、SSM Patch Managerと相性が悪いので有効化しない方がいい場合があるという話。(デフォルトで無効なのでそのままにしていることが多いとは思いますが…)
インスタンスメタデータでタグを参照可能になる機能の紹介記事を貼っておきます。
aws.amazon.com
個人的にはこのオプション使わない方がいいかもしれないと思っています。将来的に制限がなくなればいいのですが、現状はどうしても使わないといけないという場合以外は有効化しないでおこうと思います。
(有効化しないといけない場合もPatch Managerを使うならこれまで通りEC2にIAMロールをつけてAPIをコールする実装にしないといけないなと思います。)
なぜ有効化しない方がいいのか
現状この機能を有効にした際にタグに使える文字に大きな制限が加わるからです。
情報のアップデートがあるかもしれないので最新情報はドキュメントを参照ください。
docs.aws.amazon.com
タグのキーにこんな制限(赤字)が加わります。(2022/08/11時点)
インスタンスメタデータでインスタンスタグを有効にすると、インスタンスタグキーは文字 (a-z、A-Z)、数字 (0-9)、および次の文字のみを使用できます: + - = . , _ : @。インスタンスタグキーは、スペースまたは / を含めることはできず、. (1 つのピリオド)、.. (2 つのピリオド)、または _index のみを含めることはできません
この中のスペースが使えなくなるというのが結構大きなポイントです。
Patch Managerとの相性が悪い点
「スペースをキーに使えないなら、使わなければいいじゃない」と思う人もいるかと思いますが、他のサービスの仕様として使わないといけないとしたらどうでしょう。困ったことになります。
そう、まさにSystems ManagerのPatch Managerはスペースを含むキーを使ってパッチグループを管理する機能があるので、もろに影響を受けるサービスです。
Patch Mangerの使い方のイメージは以下も参照していただければと思います。(便利なサービスで広く使えるものなので、基本的な使い方はいろいろブログにされていてありがたい限りです。)
www.softek.co.jp
dev.classmethod.jp
肝心かなめのパッチグループの設定に関するドキュメントも貼っておきます。
docs.aws.amazon.com
パッチ適用の仕組みを整理するため、タグを使用してマネージドノードをパッチグループに追加することをお勧めします。パッチグループでは、タグキーとして Patch Group を使用する必要があります。任意のタグ値を指定できますが、タグキーは Patch Group とする必要があります。
そう、Patch Groupの間にスペースが必要なのです。
これは仕様なのでどうしようもなく守らねばならないルールなのです。
つまり、上述のようにインスタンスメタデータでインスタンスタグを有効にすると、スペースをキーに使えなくなるので、パッチマネージャーでパッチグループを利用して細やかにベースラインを設定できなくなるというわけです。